You are on page 1of 76

UNIVERSIDADE DO ESTADO DE SANTA CATARINA

CENTRO DE CIÊNCIAS TECNOLÓGICAS


DEPARTAMENTO DE ENGENHARIA MECÂNICA

GUILHERME DE FAVERI

CINEMÁTICA INVERSA DE ROBÔS PARALELOS: APLICAÇÕES E


TELEOPERAÇÃO DE MANIPULADORES PLANARES E ESPACIAIS

Joinville, SC
2013
UNIVERSIDADE DO ESTADO DE SANTA CATARINA
CENTRO DE CIÊNCIAS TECNOLÓGICAS
DEPARTAMENTO DE ENGENHARIA MECÂNICA

GUILHERME DE FAVERI

CINEMÁTICA INVERSA DE ROBÔS PARALELOS: APLICAÇÕES E


TELEOPERAÇÃO DE MANIPULADORES PLANARES E ESPACIAIS

Trabalho de Conclusão de Curso, apresen-


tado como requisito parcial para obtenção
do Grau de Bacharel em Engenharia
Mecânica pela Universidade do Estado de
Santa Catarina, no Centro de Ciências Tec-
nológicas.

Orientador: Prof. Dr. Aníbal Alexandre


Campos Bonilla

Joinville, SC
2013
GUILHERME DE FAVERI

CINEMÁTICA INVERSA DE ROBÔS PARALELOS: APLICAÇÕES E


TELEOPERAÇÃO DE MANIPULADORES PLANARES E ESPACIAIS

Trabalho de Conclusão de Curso, apresentado como requisito parcial para obtenção


do Grau de Bacharel em Engenharia Mecânica pela Universidade do Estado de Santa
Catarina, no Centro de Ciências Tecnológicas, avaliada pela banca examinadora consti-
tuída pelos professores:

Orientador:
Prof. Dr. Anibal Alexandre Campos Bonilla
Universidade do Estado de Santa Catarina - UDESC

Membro:
Prof. Dr. José Nilton Martini
Universidade do Estado de Santa Catarina - UDESC

Membro:
Eng. Clodoaldo Schutel Furtado Neto
Universidade do Estado de Santa Catarina - UDESC
RESUMO

FAVERI, Guilherme de. Cinemática Inversa de Robôs Paralelos: Aplicações


e Teleoperação de Manipuladores Planares e Espaciais. Trabalho de conclusão de
curso (Bacharelado em Engenharia Mecânica) – Universidade do Estado de Santa Cata-
rina. Joinville, 2013.

Este trabalho estabelece métodos para solução do problema de cinemática inversa de


robôs paralelos planares e espaciais enfocando nas arquiteturas 6-RUS espacial e 3-RRR
planar, baseados nos parâmetros geométricos do robô e apresentando aplicações. Este
estudo é aplicado diretamente em dois projetos diferentes, sendo um deles o simulador
de voo construído pela Universidade do Estado de Santa Catarina presente no Centro de
Artes (CEART), onde é apresentada a metodologia para a solução da cinemática inversa
de um robô paralelo espacial utilizado em diversas aplicações, e outro um robô paralelo
planar onde é implementada a teleoperação objetivando a futura aplicação no auxílio
de pacientes portadores de Esclerose Lateral Amiotrófica através do uso futuro de um
sistema de detecção de movimento ocular a baixo custo.

Palavras-chave: Robôs Paralelos, Cinemática Inversa, Teleoperação, 3-RRR planar,


6-RUS, Simulador de Voo.
ABSTRACT

FAVERI, Guilherme de. Parallel Robots Inverse Kinematic: Spatial and Pla-
nar Aplication and Teleoperation. Trabalho de conclusão de curso (Bacharelado em
Engenharia Mecânica) – Universidade do Estado de Santa Catarina. Joinville, 2013.

This work states methods to solve planar and spatial parallel robots inverse kinematic
problem, focusing in 6-RUS spatial manipulator and 3-RRR planar, based on geometri-
cal constructives parameters.This work is directly applied in two differents projects, once
the flight simulator built by Universidade do Estado de Santa Catarina, located at Centro
de Artes (CEART), presenting methodology to solve the inverse kinematic problem of
a spatial parallel robot applied in many applications, the other one is a planar parallel
robot where is implemented teleoperation onjectiving assistance to Amyotrophic Lateral
Sclerosis patience by a low coast gaze tracker.

Keywords: Parallel Robot, Inverse Kinematic, Teleoperation, 3-RRR planar, 6-


RUS, Flight Simulator.
Dedico este trabalho a meus pais
Vilmar e Maria Cristina pelo
carinho durante todos estes anos
e pelo apoio prestado no decor-
rer de toda minha formação.
Dedico também à minha irmã
Bruna Letícia pelo companheirismo
em todas as horas possíveis, mesmo
nos momentos mais difíceis.
AGRADECIMENTO

Agradeço ao professor Alexandre Campos pelas valorosas orientações, pela opor-


tunidade de desenvolver estes projetos, tanto durante este trabalho quanto na Iniciação
Científica e por mostrar a importância de se dedicar à engenharia tanto como ferramenta
para desenvolvimento tecnológico quanto como ferramenta que visa ajudar as pessoas.
Agradeço ao colega de laboratório e amigo Guilherme Espindola por toda a ajuda
prestada neste trabalho e pela disposição nas discussões que sempre proporcionaram
novas ideias e soluções para as dificuldades que se apresentaram no caminho.
Agradeço ao colega de laboratório Clodoaldo pela ajuda na construção e implemen-
tação do robô planar que hoje se situa na universidade com fins de pesquisa, bem como
por sempre mostrar-se solícito na ajuda à elucidar as dúvidas que surgiram.
Agradeço também aos colegas e amigos da Equipe Albatroz AeroDesign por ceder
material e ferramentas para construção do 3-RRR planar, bem como pelo incentivo e
compreensão durante o processo de realização deste trabalho, fazendo com que as difi-
culdades fossem sempre suportadas em grupo me obrigando a nunca desistir.
"O aspecto mais triste da vida
de hoje é que a ciência ganha
em conhecimento mais rapida-
mente que a sociedade em sabedo-
ria."

Isaac Asimov
LISTA DE FIGURAS
1 Robô Serial COMAU Smart NS . . . . . . . . . . . . . . . . . . . . 18
2 Plataforma de Stewart-Gough . . . . . . . . . . . . . . . . . . . . . . 19
3 Esquema do Robô Paralelo 3-RRR . . . . . . . . . . . . . . . . . . . 26
4 Modelo esquemático do robô paralelo 3-RRR planar . . . . . . . . . 27
5 Esquema do Robô Paralelo 3-RRR . . . . . . . . . . . . . . . . . . . 33
6 Foto do robô paralelo 3-RRR planar e sistemas adjacentes . . . . . . 37
7 Detalhe da estrutura robótica . . . . . . . . . . . . . . . . . . . . . . 38
8 Detalhamento da cadeia cinemática . . . . . . . . . . . . . . . . . . . 38
9 Ligação do Servomotor na placa Arduino . . . . . . . . . . . . . . . 40
10 Espaço de trabalho total do Robô Paralelo 3-RRR . . . . . . . . . . . 41
11 Espaço de trabalho do Robô Paralelo 3-RRR para orientação ϕ = 0
constante. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
12 Pontos definidos dentro do espaço de trabalho do robô. . . . . . . . . 47
13 Pontos definidos dentro da interface gráfica no computador. . . . . . . 47
14 Programação do robô no software Processing. . . . . . . . . . . . . . 50
15 Espaço de trabalho mapeado pelo robô. . . . . . . . . . . . . . . . . 51
16 Simulador de voo 6 DoF de baixo custo produzido pela CKAS Mecha-
tronichs PTY LTD. . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
17 Simulador de voo 6 DoF produzido pela InMotion Simulation. . . . . 54
18 Simulador de voo construído no CEART . . . . . . . . . . . . . . . . 55
19 Estrutura do robô e sistemas de coordenadas fixo à base e fixo à
plataforma móvel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
20 Parâmetros geométricos necessários para solução da cinemática inversa 57
21 Cadeia vetorial fechada para a cadeia cinemática i. . . . . . . . . . . 59
22 Vista frontal do plano ωi . . . . . . . . . . . . . . . . . . . . . . . . 60
23 Vista frontal do plano ωi . . . . . . . . . . . . . . . . . . . . . . . . 60
24 Vista frontal do plano ωi . . . . . . . . . . . . . . . . . . . . . . . . 62
25 Espaço de trabalho do simulador de voo para orientação constante. . . 65
LISTA DE TABELAS
1 Características de manipuladores industriais do tipo esférico (massa
do robô e capacidade de carga em kg, repetibilidade em mm, de acordo
com os fabricantes) . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2 Especificações técnicas do servo motor Futaba S3003 . . . . . . . . . 39
3 Especificação dos componentes e custo . . . . . . . . . . . . . . . . 39
LISTA DE SÍMBOLOS
θ ângulo solução da cinemática inversa rad
Px posição do centro da plaforma móvel no eixo x m
Py posição do centro da plaforma móvel no eixo y m
ϕ orientação da plataforma móvel rad
~
TCP vetor configuração da plataforma móvel -
f
O origem do sistema de coordanada fixo na base m
m
O origem do sistema de coordanada fixo na plataforma m
f ~
OA vetor posição dos atuadores m
f ~
OC vetor posição das juntas passivas m
h distância entre as juntas na plataforma móvel m
L distância entre o eixo dos atuadores m
Cix coordenada horizontal do ponto C m
Cix coordenada vertical do ponto C m
~
AB vetor posição da manivela m
~
BC vetor posição do haste m
ψ ângulo da junta passiva rad
a comprimento da manivela m
b combrimento da haste m
xC distância horizontal entre os pontos A e C m
yC distância vertical entre os pontos A e C m
e1 coeficiente da equação de cinemática inversa m2
e2 coeficiente da equação de cinemática inversa m
e3 coeficiente da equação de cinemática inversa m
t variável da substituição de Weierstrass -
q vetor variável das juntas m, rad
x vetor posição da plataforma m, rad
Jx matriz Jacobiano de cinemática direta -
Jq matriz Jacobiano de cinemática inversa -
q̇ vetor velocidade das juntas m/s, rad/s
ẋ vetor velocidade da plataforma m/s, rad/s
vp velocidade linear da plataforma m/s
ωp velocidade angular da plataforma rad/s
xTCP posição hotizontal da plataforma m
yTCP posição vertical da plataforma m
xc posição horizontal do cursor pixels
yc posição vertical do cursor pixels
Ci constante de conversão -
p ponto do espaço de trabalho do robô m
m ponto da interface gráfica pixels
v posição a ser mandada para o servo graus
ch caractere lido na porta serial -
P configuração do efetuador final m, rad
ϕ ângulo de roll rad
ϑ ângulo de pitch rad
ψ ângulo de yaw rad
rb raio da base fixa m
rb raio da plataforma m
d metade da distância central de um par de juntas atuadas m
e metade da distância entre as juntas na plataforma móvel m
ri dimensão do crank m
Ri dimensão do rod m
χa ângulo de posição dos atuadores rad
χj ângulo de posição das juntas passivas na plataforma móvel rad
β ângulo de orientação dos atuadores rad
rot matriz de rotação -
~I vetor de cadeia fechada m
ω plano de rotação do crank -
ε ângulo de cinemática inversa no plano ω rad
φ ângulo de cinemática inversa no plano ω rad
α ângulo de cinemática inversa no plano ω rad
~T decomposição de ~I no plano xy m
z variável da solução de cinemática inversa m
s variável da solução de cinemática inversa m
u variável da solução de cinemática inversa m2
v variável da solução de cinemática inversa m2
w variável da solução de cinemática inversa m2
q variável da solução de cinemática inversa m
SUMÁRIO

1 INTRODUÇÃO 15

2 ROBÓTICA 17
2.1 ROBÔS SERIAIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 ROBÔS PARALELOS . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3 CINEMÁTICA INVERSA . . . . . . . . . . . . . . . . . . . . . . . 20

3 RESVISÃO BIBLIOGRÁFICA 22

4 CINEMÁTICA INVERSA DO ROBÔ PARALELO 3-RRR PLANAR 25


4.1 ANÁLISE DE POSIÇÃO . . . . . . . . . . . . . . . . . . . . . . . . 25
4.2 PROBLEMA DE CINEMÁTICA INVERSA . . . . . . . . . . . . . 28

5 ANÁLISE JACOBIANA E SIGULARIDADES 30


5.1 ANÁLISE JACOBIANA . . . . . . . . . . . . . . . . . . . . . . . . 30
5.2 SINGULARIDADES . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.2.1 Singularidades de Cinemática Inversa . . . . . . . . . . . 31
5.2.2 Singularidades de Cinemática Direta . . . . . . . . . . . . 32
5.2.3 Singularidades Combinadas . . . . . . . . . . . . . . . . . 32
5.3 DETERMINAÇÃO DO JACOBIANO . . . . . . . . . . . . . . . . . 32
5.3.1 Determinação de Singularidades de Cinemática Inversa . 34
5.3.2 Determinação de Singularidades de Cinemática Direta . . 35
5.3.3 Determinação de Singularidades Combinadas . . . . . . . 35

6 CONSTRUÇÃO 37
6.1 ESTRUTURA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

7 IMPLEMENTAÇÃO DO ROBÔ PARALELO 3-RRR 40


7.1 ESPAÇO DE TRABALHO . . . . . . . . . . . . . . . . . . . . . . . 40
7.1.1 Parametrização do Espaço de Trabalho . . . . . . . . . . 42
7.1.1.1 Parametrização Quadrática . . . . . . . . . . . 42
7.1.1.2 Parametrização de duas variáveis . . . . . . . . 45
7.2 COMUNICAÇÃO SERIAL . . . . . . . . . . . . . . . . . . . . . . 51

8 CINEMÁTICA INVERSA DO ROBÔ PARALELO 6-RUS 53


8.1 SIMULADORES DE VOO . . . . . . . . . . . . . . . . . . . . . . . 53
8.2 CINEMÁTICA INVERSA . . . . . . . . . . . . . . . . . . . . . . . 55
8.2.1 Análise de Posição . . . . . . . . . . . . . . . . . . . . . . 57
8.2.2 Solução do Problema de Cinemática Inversa . . . . . . . . 58
8.3 ALGORÍTIMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

9 CONCLUSÃO E PERSPECTIVAS 66

REFERÊNCIAS 67

APÊNDICE A -- CÓDIGOS 69
A.1 SCILAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
A.2 PROCESSING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
A.3 ARDUINO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
15

1 INTRODUÇÃO

Desde a Revolução Industrial, tem havido uma crescente demanda para aumentar a
produtividade e reduzir os custos de produção (TSAI, 1999). No campo da manufatura,
devido aos recentes avanços em tecnologia computacional, a humanidade tem presenci-
ado uma segunda revolução industrial, uma revolução em automação.
A palavra automação foi moldada na década de 1940 e utilizada para descrever a
operação coletiva de várias máquinas (SPONG; VIDYASAGAR, 1989). Com o con-
ceito de produção em série, introduzido pela Ford Motor Company, cada processo era
realizado por uma máquina específica, assim foi possível reduzir os custos de maneira
a tornar o automóvel acessível para a população. Entretanto, como cada máquina era
projetada para realizar uma tarefa predeterminada, a cada novo lançamento toda a linha
de montagem devia ser reprojetada. Este tipo de automação é chamado de automação
pesada, apresenta alta produtividade, porém baixa flexibilidade (TSAI, 1999).
O alto custo e inflexibilidade da automação pesada, levou a uma abordagem diferente
para a automação de manufatura. Manipuladores robóticos foram introduzidos para
realizar diferentes tarefas como pegar materias, realizar soldagem ponto-a-ponto, pintura
e montagem. Por serem controlados por computadores e microprocessadores, robôs
podem ser reprogramados para diferentes tarefas. Este tipo de automação é chamada de
automação flexível (TSAI, 1999).
Robótica é um campo relativamente novo no campo da tecnologia moderna, cruzando
as fronteiras tradicionais da engenharia. O conhecimento de robótica e suas aplicações
abrange o conhecimento em engenharia mecânica, elétrica, ciências da computação,
matemática e economia (SPONG; VIDYASAGAR, 1989).
Este trabalho se situa na área de robótica paralela, focando na solução do problema
de cinemática inversa para duas arquiteturas diferentes de robôs paralelos sendo um robô
paralelo planar e o outro um robô paralelo espacial, e mostrando aplicações para estas
arquiteturas. Os princípios básicos relativos à robôs paralelos, bem como cinemática
inversa são apresentados no capítulo 2.
Para o robô planar 3-RRR tem-se como objetivo o desenvolvimento de um mecan-
ismo deste tipo bem como a implementação de um sistema de teleoperação mestre-
1 Introdução 16

escravo utilizando o mouse como mestre e o robô paralelo como escravo, seguindo a
trajetória realizada pelo mouse. Objetiva-se que o robô possa ser futuramente controlado
com o movimento do globo ocular para servir como auxílio a portadores de Esclerose
Lateral Amiotrófica por meio do uso do software livre Opengazer.
Outro objetivo consiste na formulação matemática da solução do problema de cin-
emática inversa do robô paralelo espacial 6-RUS, sendo este motivado pelo desenvolvi-
mento de um simulador de voo pela Universidade do Estado de Santa Catarina onde foi
construído um robô paralelo no Centro de Artes (CEARTE) que agrega a simulação um
ambiente de realidade virtual com a dinâmica oferecida pela plataforma.
17

2 ROBÓTICA

O termo robô foi introduzido no vocabulário inicialmente pelo escritor tcheco Karel
Capek na peça Rossum’s Universal Robots de 1920, sendo robotoa a palavra tcheca
para trabalho (SPONG; VIDYASAGAR, 1989). O termo é aplicado para uma grande
variedade de dispositivos mecânicos, como teleoperadores, veículos submersos, land
rovers autônomos, etc. De maneira geral, qualquer máquina que opera com certa au-
tonomia por meio de controle computacional é chamada de robô. Neste trabalho, robôs
são tratados como manipuladores industriais controlados por computador.
Uma definição oficial para o termo robô é dada pelo Robot Institute of Amer-
ica (RIA): Um robô é um manipulador multifuncional reprogramável projetado para
movimentar materiais, partes, ferramentas, ou dispositivos especializados para realizar
uma variedade de tarefas através de programação variada de movimentos (SPONG;
VIDYASAGAR, 1989). A enciclopédia Galática define robô como "dispositivo mecânico
que realiza tarefas humanas". O departamento de marketing da Companhia Cibernética
de Sirius define "robô"como "o seu amigão de plástico"(ADAMS, 2004).

2.1 ROBÔS SERIAIS


A arquitetura de robôs mais utilizada industrialmente é a de robôs seriais. Este tipo
de robô é essencialmente um braço mecânico operado sob o controle de um computador
(SPONG; VIDYASAGAR, 1989). Na Fig. 1 é apresentado um típico robô serial.
De maneira geral, um robô serial consiste em diversos elos conectados em série por
diferentes tipos de juntas, geralmente juntas rotativas e prismáticas. Uma das extremi-
dades do robô é fixada em uma base fixa e outra é livre para se movimentar no espaço
(MERLET, 2002).
A baixa carga transportável e baixa precisão são inerentes a esta estrutura mecânica.
A precisão no posicionamento depende das deformações elásticas que não são com-
putadas pelos sensores internos do robô. Além disso, ocorre uma amplificação do erro
devido a disposição dos elos, isto é, um pequeno erro de medição os primeiros elos levam
a grandes erros de posicionamento final (MERLET, 2002). Na tabela 1 é apresentada as
2.1 Robôs Seriais 18

Figura 1: Robô Serial COMAU Smart NS

Fonte: Siciliano, Sciavicco e Villani (2009)

características de alguns robôs seriais.

Tabela 1: Características de manipuladores industriais do tipo esférico (massa


do robô e capacidade de carga em kg, repetibilidade em mm, de acordo com
os fabricantes)

carga
Robô massa carga Repetibilidade massa
ABB IRB 140T 98 5 ± 0.03 0.051
ABB IRB 240L 380 7 ± 0.06 0.01842
ABB IRB 4400/45 980 45 ± 0.1 0.04591
ABB IRB 6400R/3.0-100 1600 100 ± 0.15 0.0625
Fanuc Arc Mate 100i 138 6 ± 0.08 0.04347
Fanuc Arc Mate 120i 370 16 ± 0.1 0.04324
Fanuc M420iA 620 40 ± 0.5 0.064516
Fanuc R-2000iA 165F 1210 165 ± 0.3 0.13636
Fanuc S-900iB 1970 200 ± 0.5 0.101523
Kuka KR 6 235 6 ± 0.1 0.02553
Kuka KR 60-3 665 60 ± 0.2 0.09022
Kuka KR 100 1155 100 ± 0.15 0.08658

Fonte: Merlet (2002)


2.2 Robôs Paralelos 19

2.2 ROBÔS PARALELOS


Robôs paralelos consistem tipicamente em uma plataforma móvel conectada a uma
base fixa por diversos elos (TSAI, 1999), conforme apresentado na Fig. 2,.

Figura 2: Plataforma de Stewart-Gough

Fonte: CAR & D: Creative Automotive Research & Development

Pela definição, robôs paralelos são mecanismos de cadeia cinemática fechada onde
o efetuador final é ligado à base por diversas cadeias cinemáticas independentes (MER-
LET, 2002).
Os princípios destes mecanismos utilizando cadeias cinemáticas fechadas foram es-
tabelecidos por Gough em 1947 (MERLET, 2002), por meio de um mecanismo utlizado
para teste de pneus que permite ser posicionado e orientado de maneira conveniente.
Utilizando atuadores lineares que permitem a mudança de comprimento de juntas pris-
máticas, além de juntas esféricas para conexão com a plataforma móvel e juntas uni-
2.3 Cinemática Inversa 20

versais para conexão com a base é possível posicionar e orientar o efetuador final de
maneira desejada.
O interesse nesta estrutura se baseia na distribuição de carga, de modo que cada
atuador suporta aproximadamente 1/6 da carga total, além disso nas juntas são impostas
apenas tensões de tração/compressão, o que torna esta estrutura a mais rígida na classe
de robôs paralelos espaciais (BONEV, 2002).
Outras arquiteturas são possíveis de serem construídas, podendo o robô apresentar
mobilidade apenas em um plano ou no espaço. Tipicamente, a mobilidade do robô é
condicionada pelo número de cadeias cinemáticas, isto é, o número de graus de liberdade
do efetuador final coincide com o número de cadeias cinemáticas (MERLET, 2002).
A nomenclatura utilizada neste trabalho é a mesma utilizada por Merlet, sendo um
número correspondente ao número de cadeias cinemáticas cuja a estrutura é apresen-
tada pelas letras seguintes, onde a letra sublinhada corresponde à junta atuada, sendo
as demais passivas. As letras R, U, S, P correspondem às juntas rotativas, universais,
esféricas e prismáticas respectivamente.
No capítulo 3 é apresentada uma breve revisão bibliográfica sobre os principais as-
suntos a cereca de robôs paralelos abordados neste trabalho.

2.3 CINEMÁTICA INVERSA


O problema de cinemática inversa consiste em determinar o valor de variável das
juntas para uma dada posição e orientação do efetuador final. A solução deste problema
é de extrema importância para transformar o movimento imposto ao efetuador final para
movimentação das juntas atuadas de modo a permitir a execução deste movimento (SI-
CILIANO; SCIAVICCO; VILLANI, 2009).
A complexidade de resolução de cinemática inversa se dá pelos seguintes fatores:

• As equações que solucionam o problema de cinemática inversa costumam ser não-


lienares, de modo que nem sempre é possível encontrar uma solução em forma
fechada;

• Podem existir múltiplas soluções;


2.3 Cinemática Inversa 21

• Em manipuladores com cinemática redundante pode existir infinitas soluções;

• Pode não haver uma solução para a estrutura cinemática do robô.

A existência de soluções é garantida apenas se a posição e orientação do efetuador final


pertencem ao espaço de trabalho do robô (SICILIANO; SCIAVICCO; VILLANI, 2009).
A solução do problema de cinemática inversa para os robôs paralelos 3-RRR planar
e 6-RUS são apresentados nos capítulos 4 e 8.
22

3 RESVISÃO BIBLIOGRÁFICA

Staicu apresenta uma metodologia para o estudo da cinemática de robôs paralelos


3-RRR por meio do uso de matrizes recursivas. É desenvolvido um método que com-
puta a posição das juntas atuadas, bem como a aceleração e velocidade dos elementos,
apresentando como resultado a diminuição do tempo de máquina no cálculo de cin-
emática inversa devido ao uso das matrizes recursivas, permitindo a síntese de robôs
com maior quantidade de elementos, permitindo desenvolver a cinemática de mecanis-
mos mais complexos (STAICU, 2008).
Arsenault e Boudreau apresentam um método para sintese de um robô paralelo do
tipo 3-RRR planar buscando desenvolver um espaço de trabalho ótimo baseado em 3
parâmetros distintos: a otimização do espaço de trabalho do mecanismo para se aproxi-
mar do espaço de trabalho requerido pela tarefa, a maximização da destreza do mecan-
ismo e evitando singularidades dentro do espaço de trabalho do robô.
Uma metodologia para cálculo do espaço de trabalho também é apresentada, bem
como a utilização de um algorítimo de otimização genético para maximização do espaço
de trabalho do mecanismo em relação ao espaço de trabalho prescrito (ARSENAULT;
BOUDREAU, 2004).
Métodos para realizar o controle de trajetória de um robô paralelo 3-RRR são pos-
síveis de serem aplicados através da análise dinâmica do mecânismo. Devido a não-
linearidade do modelo dinâmico deste tipo de mecanismo, tem-se grande dificuldade em
se desenvolver um método de controle de trajetória que possa ser aplicado de maneira
geral a qualquer manipulador paralelo. O modelo dinâmico espacial do mecanismo com-
pleto pode ser reduzido a um modelo dinâmico espacial dos atuadores, permitindo tratar
mecanismos paralelos como seriais (NASA; BANDYOPADHYAY, ).
O estudo da singularidade de cinemática direta é apresentado por Yang para difer-
entes esquemas de atuadores baseados em cadeias cinemáticas do tipo 3-RRR seguindo
de uma análise de singularidades. Devido ao espaço de trabalho limitado, a análise
de singularidade se torna uma importante ferramenta para o desenvolvimento e apli-
cação de qualquer tipo de robô paralelo para que a estrutura do robô não seja compro-
metida.(YANG; CHEN; CHEN, 2002).
3 Resvisão Bibliográfica 23

Williams e Joshi descrevem o desenvolvimento do projeto, construção e controle de


um robô paralelo de arquitetura 3-RPR utilizando pistões pneumáticos como atuadores
nas juntas prismáticas. As etapas de construção são apresentadas detalhadamente, bem
como a análise de cinemática para este tipo de robô paralelo e a arquitetura de controle.
O controle é realizado através de um computador utilizando um modelo em Matlab
Simulink comandando válvulas acionadas por solenóide (WILLIAMS; JOSHI, 1999).
O problema de cinemática inversa e a determinação do espaço de trabalho total e de
orientação constante podem ser tratados para robôs de arquitetura 6-RUS de geometria
genérica por meio de uma análise geométrica de posição e orientação do robô (FILHO;
QUEIROZ, 2006).
Queiroz et al. apresentam estratégias para a detecção de singularidades de cin-
emática direta para um robô paralelo de arquitetura 6-RUS, mais especificamente para a
estrutura conhecida como Hexa, por meio do uso da teoria de helicoides.
Como a entrada em uma configuração de singularidade de cinemática direta apre-
senta sérios riscos estruturais ao robô, as tarefas e trajetórias muitas vezes são adaptadas
ao espaço de trabalho. Problemas deste tipo costumam aparecer durante teste e havendo
a necessidade de a cada vez que o robô entrar em uma configuração próxima de sin-
gularidade de cinemática direta houver a necessidade de ser reiniciado, o tempo gasto
em cada operação se torna elevado. Para tanto, é apresentada uma metodologia pelo
monitoramento em tempo real da proximidade de uma configuração de singularidade de
cinemática direta apresentando um método para gerar uma nova trajetória sempre que
uma configuração deste tipo se aproxima (QUEIROZ et al., 2006).
Diiversas aplicaçoes são possíveis para robôs paralelos espaciais tanto de maneira in-
dustrial quanto para a utilização em pesquisa. Outro campo com aplicabilidade relatada
é na medicina utilizando robôs espaciais para fins cirurgícos (SIMAAN, 1999).
Uma aplicação comum é a utilização como um simulador de voo. O desenvolvi-
mento de um dispositivo deste tipo a um baixo custo é apresentado por Gu, Wu e Liu.
Este simulador consiste em robô paralelo espacial com 3 graus de liberdade que tem
como tarefa reproduzir a dinâmica de aeronaves aliando a movimentação providenciada
pela estrutura robótica com um ambiente de simulação virtual.
A utilização de um sistema robótico é providencial para simular o movimento de
3 Resvisão Bibliográfica 24

uma aeronave providenciando estímulos correto ao sistema vestibular, presente na orelha


interna, responsável pela sensação espacial e de movimento do corpo humano (GU; WU;
LIU, 2009).
A utilização de dispositivos para telecontrole de operações através de controle re-
moto é possível para gerar a trajetória do robô online (PONGRAC et al., 2008). Uma
análise de interfaces que providenciam controle de graus de liberdade rotativos através
de uma performance intuitiva do operador é apresentada por Pongrac et al. Os sistemas
estudados utilizam câmeras para captar movimentos e realizar o seguimento dos movi-
mentos da cabeça e luvas para aquisição de dados dos dedos.
25

4 CINEMÁTICA INVERSA DO ROBÔ PARALELO 3-RRR PLANAR

A cinemática inversa consiste em determinar o valor de coordenada de cada junta


atuada correspondente à uma configuração do efetuador final (MERLET, 2002). Para
um robô paralelo de arquitetura 3-RRR planar isto corresponde a determinar os ângulos
θ1 , θ2 e θ3 entre o crank e eixo coordenado x do sistema de coordenadas fixo na base.
A maneira mais comum de representar a posição e orientação de um corpo rígido no
espaço é através do conhecimento das coordenadas de um determinado ponto e de três
ângulos de rotação respectivamente (MERLET, 2002). Por se tratar de um mecanismo
planar, para determinar a configuração do manipulador em um robô paralelo 3-RRR
planar é necessário conhecer as coordenadas Px e Py correspondetes ao ponto central da
ferramenta no sistema de coordenadas global e o ângulo de rotação ϕ em torno do eixo
~ como TCP
z. Dessa maneira, define-se o vetor TCP ~ = [Px Py ϕ].

4.1 ANÁLISE DE POSIÇÃO


Inicialmente deve se conhecer as coordenadas (x, y) no plano das juntas atuadas
pelos servos motores. Dos parâmetros construtivos do robô, apresentados na Fig. 3,
tem-se que:

~
f OA
1 = 0 î + 0 jˆ (4.1)
~
f OA
2 = L î + 0 jˆ (4.2)

~
f OA
L L 3 ˆ
3 = î + j (4.3)
2 2
~ = [ Px Py ϕ ] do efetuador final, tem-se que a posição
Dada uma configuração TCP
do ponto Ci é dada por:
~ i
f OC ~ − PC
= f OP ~ (4.4)

Para a cadeia cinemática i = 1, tem-se:


√ ! √ !
~ 1 = Px − h 3 cos ϕ + π h 3 π
   
f OC î + Py − sin ϕ + jˆ (4.5)
3 6 3 6
 √   √ 
h 3 h 3
Definindo C1x = Px − 3 cos ϕ + 6 e C1y = Py − 3 sin ϕ + 6 obtém-se as
π π
4.1 Análise de Posição 26

Figura 3: Esquema do Robô Paralelo 3-RRR

q3
B3 A3
y3

C3
h
P C2
y2
B f
y
1 1 C1 B2
y
q1 q2
A1 O x A2

Fonte: Produção do autor

coordenadas das demais juntas.

~ 2
f OC = (C1x + h cos ϕ) î + C1y + hsinϕ jˆ

(4.6)
 π   π 
~ 3
f OC = C1x + h cos + ϕ î + C1y + h sin + ϕ jˆ (4.7)
3 3

Da Fig. 4 obtém-se a equação de cadeia vetorial a ser resolvida.

~
f OA ~ ~
i + Ai Bi + BiCi + Ci
~f O = ~0 (4.8)

É necessário, então, determinar os vetores A~i Bi e B~iCi .

A~i Bi = (ai cos θi ) î + (ai sin θi ) jˆ (4.9)

B~ICi = (bi cos (θi + ψi )) î + (bi sin (θi + ψi )) jˆ (4.10)


4.1 Análise de Posição 27

Figura 4: Modelo esquemático do robô paralelo 3-RRR planar

P
Bi yi f
Ci
qi
x
Ai
Fonte: Do autor

Por se tratarem de juntas passivas, o ângulo ψi deve ser eliminado. Isto é feito
manipulando algebricamente a Eq. (4.8).

~
f OA ~ ~ i
~ = f OC
i + Ai Bi + BiCi (4.11)

É conveniente reescrever a Eq. (4.11) como:

A~i Bi + B~iCi = A~iCi (4.12)

B~iCi = A~iCi − A~i Bi (4.13)

Substituindo Eq. (4.9) e Eq. (4.10), definindo A~iCi = xCi î+yCi jˆ e analisando a Eq.( 4.13)
nas direções î e jˆ de maneira separada, tem-se que:

xC − ai cos θi = bi cos (θi + ψi ) (4.14)

yC − ai sin θi = bi sin (θi + ψi ) (4.15)

Para eliminar ψ soma-se o quadrado das Eq.( 4.14) e Eq. (4.15).

(xCi − ai cos θi )2 = (bi cos (θi + ψi ))2 (4.16)


4.2 Problema de Cinemática Inversa 28

(yCi − ai sin θi )2 = (bi sin (θi + ψi ))2 (4.17)

xC2 i + a2i cos2 θi + yC2 i + a2i sin2 θi − (2xCi ai cos θi ) − (2yCi ai sin θi ) =
b2i sin2 (θi + ψi ) + cos2 (θi + ψi )

(4.18)

xC2 i + yC2 i + a2i − b2i − 2xCi ai cos θi − 2yCi ai sin θi = 0 (4.19)

4.2 PROBLEMA DE CINEMÁTICA INVERSA


A fim de resolver o problema de cinemática inversa do 3-RRR planar a Eq. (4.19) é
reescrita introduzindo três parâmetros e1i , e2i e e3i de forma que:

e1i = xC2 i + yC2 i + a2i − b2i (4.20)


e2i = −2xCi ai (4.21)
e3i = −2yCi ai (4.22)

e1i + e2i cos θi + e3i sin θi = 0 (4.23)

Utilizando a clássica substituição de Weierstrass onde:


2ti
sin θi = (4.24)
1 + ti2

1 − ti2
cos θi = (4.25)
1 + ti2
θi
ti = tan (4.26)
2
(e1i − e3i )ti2 + 2e3i ti2 + (e1i + e2i ) = 0 (4.27)

Solucionando a Eq. (4.27) sendo ela quadrática em ti , tem-se que:


q
−e3i ± e23i + e22i − e1i
ti = (4.28)
e1i − e2i
e retornando então para a varíavel θi soluciona-se a cinemática inversa do robô paralelo
4.2 Problema de Cinemática Inversa 29

3-RRR para cada cadeia cinemática i.


 q 
−e3i ± e23i + e22i − e1i
θi = 2 arctan   (4.29)
e1i − e2i

Nota-se que existem de duas respostas para a Eq. (4.29) quando e23i + e22i − e1i for
maior que zero. Além disso a não existência de uma solução real para a Eq. 4.29 tem
como significado físico o completo estiramento ou retração total de uma cadeia cin-
emática (TSAI, 1999). A escolha da solução apropriada se dá pela limitação dos servos
motores que operam apenas em ângulos entre 0 e 180 graus, sendo a resposta em que se
soma a raiz quadrada para a primeira cadeia cinemática e a resposta em que se subtrai
para as demais cadeias.
30

5 ANÁLISE JACOBIANA E SIGULARIDADES

Neste capítulo uma análise jacobiana para o robô paralelo 3-RRR planar é apresen-
tada. A análise jacobiana aplicada a robôs paralelos é mais complexa que para robôs
seriais por ter um número maior de elos que formam um número de cadeias fechadas
(TSAI, 1999). Um método para determinar a velocidade instantânea do atuador associ-
ado as juntas utilizando as equações vetoriais de cadeia fechadas foi desenvolvido por
(MOHAMED; SANGER; DUFFY, 1983).
Uma importante limitação dos manipuladores paralelos depende do fato de existirem
configurações de singularidades dentro do espaço de trabalho fazendo como que o robô
ganhe um ou mais graus de liberdade, perdendo assim completamente a rigidez (TSAI,
1999). Uma separação em duas matrizes Jacobiano foi proposta por (GOSSELIN; AN-
GELES, 1990) dividindo em uma matriz associada à cinemática inversa e outra à cin-
emática direta.

5.1 ANÁLISE JACOBIANA


Denotando por q o vetor de variável das juntas e por x o vetor descrevendo a posição
da plataforma móvel, as restrições impostas pelos elos pode ser escrita na forma geral
como:
f(x,q) = 0 (5.1)

sendo f uma função de dimensão n e 0 um vetor nulo de mesma dimensão. Derivando


em relação ao tempo a Eq. (5.1), tem-se a relação entre as velocidades das juntas e a
velociade do atuador.
Jx ẋ = Jq q̇ (5.2)

onde Jx = ∂f
∂x e Jq = − ∂q
∂f
.
A derivação leva à duas matrizes Jx e Jq . A matriz Jacobiano global, denotada por J
é definida como:
q̇ = J ẋ (5.3)

dessa maneira J é definida por J = Jq−1 Jx .


5.2 Singularidades 31

Por existir duas matrizes Jacobiano, uma configuração singular ocorre quando uma
ou ambas matrizes são singulares, podendo assim existir três configurações de singular-
idades:

• Singularidades de cinemática inversa;

• Singularidades de cinemática direta;

• SIngularidades combinadas.

5.2 SINGULARIDADES
Um robô apresenta uma configuração de sigularidade quando a matriz Jacobiano
se torna singular (TSAI, 1999), isto é, para uma determinada posição e orientação do
efetuador final, perde-se a rigidez no qual o robô apresentará graus de liberdade fora de
controle (MERLET, 2002).
O estudo de singularidades é de extrema importância por:

• Questões de controle: a posição do efetuador final não se torna mais controlável;

• Questões de segurança: elementos estruturais do robô podem ser submetidos a


forças muito elevadas, causando quebra dos componentes.

5.2.1 Singularidades de Cinemática Inversa


Uma singularidade de cinemática inversa ocorre quando o determinante de Jq iguala
a zero.
det (Jq ) = 0 (5.4)

Quando Jq é singular, existem vetores q̇ que levam a vetores ẋ nulos. Dessa maneira,
existem direções em que o movimento da plataforma é restringido, perdendo um ou mais
graus de liberdade. Por outro lado, em configurações de sigularidades de cinemática
inversa, a plataforma é capaz de resistir a forças em algumas direções sem força ou
torque nos atuadores.
5.3 Determinação do Jacobiano 32

Em geral, essa condição ocorre nos limites do espaço de trabalho do robô onde há a
convergêcia das soluções da cinemática inversa.

5.2.2 Singularidades de Cinemática Direta


Singularidades de cinemática direta ocorrem quando o determinante de Jx é zero.

det (Jx ) = 0 (5.5)

Isto implica em vetores ẋ não nulos que resultam em vetores q̇ nulos. Isto significa
que mesmo tendo os atuadores travados, a plataforma apresenta movimento infinitesi-
mal, ganhando um ou mais graus de liberdade, desta maneira, a plataforma não consegue
resistir a esforços em algumas direções.

5.2.3 Singularidades Combinadas


Singularidades combinadas ocorrem quando ambos determinates zeram. Isto ocorre
apenas em algumas geometrias especiais. A ocorrência deste tipo de singularidade leva
ao efetuador final a apresentar movimento infinetesimal quando os atuadores estão trava-
dos ou também se manter em uma posição estática mesmo com movimento dos atu-
adores.

5.3 DETERMINAÇÃO DO JACOBIANO


Para determinar a as matrizes Jacobiano, é utilziada a abordagem convencional
baseada no método da cadeia vetorial de velocidades. A escolha deste método se dá
pelo fato de o método de coordenadas de helicóides e o de álgebra motora serem preju-
dicados pelo fato de haverem muitas juntas passivas (TSAI, 1999), enquanto o método
convencional é mais direto.
De maneira geral, o vetor ẋ que determina a velocidade da plataforma é dado por um
vetor coluna de dimensão 6 de maneira que:
 
vp
ẋ =   (5.6)
ωp
5.3 Determinação do Jacobiano 33

por se tratar de um mecanismo planar o vetor ẋ pode ser reduzido a um vetor coluna de
dimensão 3.
Da Fig. 5 que esquematiza o robô, tem-se que para esta arquitetura o vetor de var-
iáveis das juntas é definido por q = [θ1 θ2 θ3 ]T e o vetor de posição do manipulador
é definido por x = [Px Py ϕ]T . Dessa forma, para cada cadeia cinemática i = 1, 2, 3 a
equação de cadeia fechada pode ser escreita como:

Figura 5: Esquema do Robô Paralelo 3-RRR

q3
B3 A3
y3

C3
P
y2
B f C2
1
y1
C1 B2
y
q1 q2
A1 O x A2

Fonte: Produção do autor

Ai Bi + BiCi = Ai P + PCi (5.7)

Definindo o vetor unitário k̂ na direção do eixo z e derivando a Eq. (5.7) em relação


ao tempo tem-se que:
     
~ ~ ~
θ̇i k̂ × Ai Bi + θ̇i + ψ̇ k̂ × BiCi = v~P + ϕ̇ k̂ × PCi (5.8)

onde v p é o vetor velocidade do ponto P.


Por se tratar de uma junta passiva, o termo ψi deve ser eliminado. Para tanto, é
5.3 Determinação do Jacobiano 34

necessário realizar o produto escalar de ambos os lados da Eq. (5.8) por B~iCi .
   
~ ~ ~ ~ ~
θ̇k̂ · Ai Bi × BiCi = BiCi · v~P + ϕ̇k̂ · PCi × BiCi (5.9)

Repetindo este procedimento para cada cadeia cinemática i = 1, 2, 3 e reescrevendo a


Eq. (5.9) na forma apresentada na Eq. (5.2) pode-se definir as matrizes Jacobiano Jx e Jq ,
T
sendo ẋ = [vPx vPy ϕ̇]T e q̇ = θ˙1 θ˙2 θ˙3 . De maneira a facilitar a notação define-se


A~i Bi = aix î + aiy jˆ

B~iCi = bix î + biy jˆ


~ i = eix î + eiy jˆ
PC

dessa maneira:  
 b1x b1y e1x b1y − e1y b1x 
Jx =  b2x b2y e2x b2y − e2y b2x (5.10)
 

 
b3x b3y e2x b3y − e3y b3x
e  
 a1x b1y − a1y b1x 0 0 
Jq =  a2x b2y − a2y b2x (5.11)
 
0 0 
 
0 0 a3x b3y − a3y b3x
Definidas as matrizes Jacobiano torna-se possível uma análise para determinar em
que casos o robô se encontra em uma configuração de singularidade.

5.3.1 Determinação de Singularidades de Cinemática Inversa


A matriz Jq se torna singular quando os elementos da diagonal principal são zerados,
isto é, quando
aix biy − aiy bix = 0 (5.12)

para i = 1, 2, ou 3.
O lado esquerdo da Eq. (5.12) é definido pelo o produto vetorial entre A~i Bi e B~iCi ,
para zerarmos este lado da equação é necessário que estes vetores sejam linearmente
dependentes, isto implica em uma configuração da cadeia cinemática completamente
estirada ou completamente retraída. Para que se evite configurações desse tipo coloca-se
5.3 Determinação do Jacobiano 35

um valor mínimo para o lado esquerdo da Eq. (5.12) evitando assim entrar em condições
de singularidade inversa, através do monitoramento de aix biy − aiy bix .

5.3.2 Determinação de Singularidades de Cinemática Direta


Singularidades de cinemática direta ocorrem quando o determinante de Jx zera. Ape-
sar de muitas configurações possíveis, duas configurações são apresentadas por (TSAI,
1999), encontradas através da inspeção de Jx . A primeira consiste em que a linha en-
tre os pontos Ci P de todas as cadeias cinemáticas se encontram em um ponto comum,
dessa maneira a terceira coluna representando o produto vetorial B~iCi × C~i P é zero em
todas as linhas. Esta configuração apresenta movimento de rotação infinitesimal em
torno do ponto P, de maneira que nenhum momento ao redor deste ponto é resistido
pela plataforma ganhando um grau de liberdade.
O segundo caso ocorre quando as duas primeiras colunas de Jx são linearmente de-
pendentes, isto ocorre quando os vetores B~iCi são paralelos entre si. Estes casos estão
representados nas

5.3.3 Determinação de Singularidades Combinadas


Singularidades combinadas acontecem apenas em geometrias especiais. Duas ge-
ometrias apresentam este tipo de singularidade (GOSSELIN; ANGELES, 1990). As
condições para a primeira são determinadas por:

• A1 A2 = A2 A3 = A1 A3 = L

• C1C2 = C2C3 = C1C3 = h

• Ai Bi = √L
3

3
• BiCi = h 3

A segunda arquitetura é dada por:

• A1 A2 = A2 A3 = A1 A3 = C1C2 = C2C3 = C1C3 = L

• Ai Bi = BiCi
5.3 Determinação do Jacobiano 36

O conceito de singularidade é utilizado para mapear o espaço de trabalho do robô


e determinar limites de aplicação de modo a conservar a estrutura do mesmo, evitando
esforços sobre os servos.
37

6 CONSTRUÇÃO

Nesse capítulo são abordadas as características construtivas, decisões tomadas no


decorrer do processo e os componentes utilizados.

6.1 ESTRUTURA
O robô paralelo 3-RRR planar é constituído por uma base de madeira na qual são
afixados os servos motores utilizados como atudores, uma plataforma móvel de madeira
em formato retangular e 6 braços de servomotor de aeromodelismo, utlizados como
manivela e haste. Na Fig. 6 é apresentado o sistema completo, incluindo o a parte de
comunicação, enquanto que na Fig. 7 é apresentado em detalhe o robô e na Fig. 8 pode-
se observar os elementos da cadeia cinemática detalhados.
Figura 6: Foto do robô paralelo 3-RRR planar e sistemas adjacentes

Fonte: Foto por Josias Sommer.

Como pinos para efetuar a junta rotativa, são utilizados conjuntos de parafuso-porca
autotravante M3 nos comprimentos necessários em cada cunjunto, cedidos pela Equipe
6.1 Estrutura 38

Figura 7: Detalhe da estrutura robótica

Fonte: Foto por Josias Sommer.


Figura 8: Detalhamento da cadeia cinemática

Fonte: Foto por Josias Sommer.


6.1 Estrutura 39

Albatroz AeroDesign.
Como atuadores são utilizados 3 servo motores S3003 da marca Futaba. A escolha
por utilização de servomotores, comumente utilizados em aeromodelismo, se deu pelo
baixo custo, aliando boa resposta no tempo com a capacidade de imprimir um torque
elevado em relação à massa do conjunto. A facilidade de uso de um servo motor se dá
ao fato de existir uma biblioteca específica para servomotores no software Arduino IDE,
facilitando assim a comunicação dos servomotores com a placa Arduino. A especifi-
cação técnica do servo motor Futaba S3003 fornecidas pelo fabricante estão dispostas
na tabela 2.
Na tabela 3 é apresentado o custo total da estrutura do robô paralelo, sem levar em
conta o preço dos elementos de fixação e parafusos.

Tabela 2: Especificações técnicas do servo motor Futaba S3003

Alimentação 4.8V 6.0V


Velocidade 0.23sec/60 0.19sec/60◦

Torque 3.2 kg.cm 4.1 kg.cm


Dimensões 20.4x19.8x36.0 mm
Peso 37.2 g

Fonte: Fornecido pelo fabricante.

Tabela 3: Especificação dos componentes e custo

Peça Custo Unitário Quantidade Custo Acumulado


Servo Motores R$ 67,00 3 R$ 201,00
Braço de Controle R$ 6,83 6 R$ 242,00
Base de Madeira R$ 15,00 1 R$ 257,00
Plataforma Móvel R$ 0,00 1 R$ 257,00
Parafuso M3 R$ 0,00 6 R$ 257,00
Porca Autotravante M3 R$ 0,00 12 R$ 257,00

Fonte: Produzido pelo autor.


40

7 IMPLEMENTAÇÃO DO ROBÔ PARALELO 3-RRR

Para funcionamento correto do robô é necessário primeiramente mapear o espaço de


trabalho para encontrar as região do plano que o robô não alcançaa, determinadas pelas
singularidades de cinemática inversa.
A maneira de tocar os servos motores se dá por meio de uma placa Arduino Mega
(ATMega 1280) cedida pela Equipe Albatroz AeroDesign durante o decorrer deste tra-
balho. Para solução da cinemática inversa e aquisição de dados de entrada do cursor
utiliza-se o software Processing, realizando a comunicação com o Arduino via porta
serial. Os códigos de ambos os programas se encontram nos apêndice A.3 e A.2.
Para conectar os servos motores com a placa Arduíno um dos fios do servo, fio
vermelho, é ligado na alimentação 5V positivo, outro, preto, é aterrado e o fio restante,
amarelo, é ligado a uma porta PWM do Arduino, responsável pela comunicação. O
esquema de ligação do servo motor é apresentado na Fig. 9.

Figura 9: Ligação do Servomotor na placa Arduino

+5V

Fonte

Fonte: Produção do autor.

7.1 ESPAÇO DE TRABALHO


Com o objetivo de que seja possível acessar via interface gráfica apenas posições que
7.1 Espaço de Trabalho 41

sejam possíveis para o robô atingir, determina-se o espaço de trabalho do robô paralelo.
Através da solução do problema de cinemática inversa com 3 loops encadeados,
para varrer pontos ao longo do eixo x, ao longo do eixo y e para varrer a orientação ϕ.
Para cada configuração tenta-se solucionar o problema de cinemática inversa, sendo que
quando há solução, sabe-se que este ponto pertence ao espaço de trabalho.
De modo a minimizar o tempo de máquina, utilizou-se limitantes para a posição e
orientação obtidos através da solução do problema de cinemática inversa em uma simu-
lação por meio de código escrito no software Scilab. O código da simulação encontra-se
no apêndice A.1.

Figura 10: Espaço de trabalho total do Robô Paralelo 3-RRR

0.13

0.12

0.11

0.1

0.09

0.08

0.07

0.06

0.05

0.04
0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18

Fonte: Produção do autor

O espaço de trabalho total do robô é apresentado na Fig. 10, e na Fig. 11 é apre-


sentado o espaço de trabalho para orientação constante em ϕ = 0, geradas através de
código, para realizar os loops, e um plotter no software Matlab.
É possível observar que os espaços de trabalhos são muito semelhantes. Devido a
7.1 Espaço de Trabalho 42

Figura 11: Espaço de trabalho do Robô Paralelo 3-RRR para orientação ϕ = 0


constante.

0.13

0.12

0.11

0.1

0.09

0.08

0.07

0.06

0.05

0.04
0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18

Fonte: Produção do autor

isto, opta-se manter uma orientação fixa em ϕ = 0 durante toda operação do robô para
as condições especificadas a seguir.

7.1.1 Parametrização do Espaço de Trabalho


De modo a aumentar a área disponível para utilização do cursor de entrada de dados,
utilizando toda área disponível do monitor, e realizar a conversão de unidades entre a
entrada de dados no programa de comunicação e saída para os servos motores, realiza-
se uma interpolação para a conversão do espaço de trabalho do cursor e do espaço de
trabalho do robô.

7.1.1.1 Parametrização Quadrática


7.1 Espaço de Trabalho 43

Primeiramente utiliza-se uma função quadrática interpoladora para a posição x e y


do centro da ferramenta de modo que:

xTCP = f (xc ) = C1 +C2 xc +C3 xc2 (7.1)

e
yTCP = f (yc ) = C4 +C5 yc +C6 y2c (7.2)

onde xTCP e yTCP são, respectivamente, a posição do centro da plataforma móvel nos
eixos coordenados x e y. As variáveis xc e yc são respecitvamente a posição do cursor,
dado em pixels, nestes eixos. É necessário, então, 3 pontos para realizar a interpolação
quadrática, obtendo os dois conjuntos de equações descritos pelas Eq. 7.3 e Eq. 7.4.

2
xTCP1 = C1 +C2 xc1 +C3 xc1



xTCP2 = C1 +C2 xc2 +C3 xc22 (7.3)


xTCP = C1 +C2 xc +C3 x2

3 3 c3

2
yTCP1 = C1 +C2 yc1 +C3 yc1



yTCP2 = C1 +C2 yc2 +C3 y2c2 (7.4)


yTCP = C1 +C2 yc +C3 y2

3 3 c3

Estes sistemas podem ser escritos na forma matricial:


    
2
xTCP1  1 xc1 xc1  C1 
xTCP2  = 1 xc2 xc22  C2  (7.5)
    
    
xTCP3 1 xc3 xc23 C3
    
yTCP1  1 yc1 y2c1  C4 
yTCP2  = 1 yc2 y2c2  C5  (7.6)
    
    
2
yTCP3 1 yc3 yc3 C6
De modo que invertendo as matrizes de posição do cursor, e multiplicando pela es-
querda ambos os lados nas duas equações matriciais, obtém-se o valor para as constantes
C1 ,C2 , ...,C6 .
7.1 Espaço de Trabalho 44

 −1    
2
1 xc1 xc1  xTCP1  C1 
xc22  xTCP2  = C2  (7.7)
     
1 xc2
     
2
1 xc3 xc3 xTCP3 C3
 −1    
2
1 yc1 yc1  yTCP1  C4 
y2c2  yTCP2  = C5  (7.8)
     
1 yc2
     
1 yc3 y2x3 yTCP3 C6
Solucionando analiticamente as Eq. (7.7) e Eq. (7.8) obtém-se os vetores que de-
screvem as constantes de interpolação.
 
  (xTCP1 xc1 −xTCP2 xc1 )xc23 +(xTCP2 xc21 −xTCP1 xc22 )xc3 +xTCP3 xc1 xc22 −xTCP3 xc21 xc2
C1  (xc2 −xc1 )xc23 +(xc21 −xc22 )xc3 +xc1 xc22 −xc21 xc2 
   
   
   
  
C2  =  (xTCP2
−x TCP 1 ) x 2
c3
+ ( xTCP 1
−x TCP3 )x 2
c2
+( xTCP3
−x TCP2 )xc
2
1

 (7.9)
   2 2 2 2 2
(xc2 −xc1 )xc3 +(xc1 −xc2 )xc3 +xc1 xc2 −xc1 xc2 
   
   
   
C3
 (xTCP2 −xTCP1 )xc3 (xTCP1 −xTCP3 )xc2 +(xTCP3 −xTCP2 )xc1

− 2 2 2
(xc −xc )x +(x −x )xc +xc x −x xc 2 2
2 1 c3 c1 c2 3 1 c2 c1 2

 
  (yTCP1 yc1 −yTCP2 yc1 )y2c3 +(yTCP2 y2c1 −yTCP1 y2c2 )yc3 +yTCP3 yc1 y2c2 −yTCP3 y2c1 yc2
C4  (yc2 −yc1 )y2c3 +(y2c1 −y2c2 )yc3 +yc1 y2c2 −y2c1 yc2 
   
   
   
  
C5  =  (yTCP2 −y TCP1 ) y2
c3 +( yTCP1 −y TCP3 ) y2
c2 +( yTCP3 −x TCP2 )y 2
c1

 (7.10)
   (yc2 −yc1 )y2c3 +(y2c1 −y2c2 )yc3 +yc1 y2c2 −y2c1 yc2 
   
   
   
C6
 ( TCP2 TCP1 ) c3 ( TCP1 TCP3 ) c2 ( TCP3 TCP2 ) c1
y −y y y −y y + y −y y

− (yc −yc )y2 +(y2 −y2 )yc +yc y2 −y2 yc
2 1 c3 c1 c2 3 1 c2 c1 2

Determina-se como dimensões da interface gráfica do programa de controle do robô


uma resolução de 1310x715 pixels, que se mostra a mais adequada para a tela utilizada
durante testes. DEfine-se, então, os pontos xc1 = 0, xc2 = 1310
2 e xc3 = 1310 e yc1 = 0, yc2 =
715
2 e yc3 = 715.
Resolvendo numericamente as Eq. 7.7 e Eq. 7.8 para xTCP1 = 0.09, xTCP2 = 0.13, xTCP3 =
0.17, yTCP1 = 0.045, yTCP2 = 0.0705 e yTCP3 = 0.12 obtém se o valor dos coeficientes
C1 ,C2 , ...,C6 obtém-se os valores das constantes adotadas.
7.1 Espaço de Trabalho 45

C1 = 0.09
C2 = 0.0000611
C3 = 0
C4 = 0.045
C5 = 0.0000378
C6 = 9.389(10−8 )

Substituindo o valor das constantes nas equações respectivas obtém-se as equações


que realizam a conversão entre a entrada de dados da interface gráfica do programa para
as coordenadas de centro da plataforma móvel a serem utilizadas na solução do problema
de cinemática inversa.

xTCP = 0.09 + 0.0000611 xc (7.11)


yTCP = 0.045 + 0.0000378 yc + 9.389(10−8 ) y2c (7.12)

7.1.1.2 Parametrização de duas variáveis


Outra abordagem para a parametrização do espaço de trabalho, também é utilizada
de modo que a posição do ponto central do efetuador final seja função de xc e yc , isto é :

xTCP = f (xc , yc ) (7.13)

e
yTCP = g(xc , yc ) (7.14)

sendo

f (xc , yc ) = C1 +C2 xc +C3 yc +C4 xc yc +C5 xc2 +C6 y2c +C7 xc2 yc +C8 xc y2c +C9 xc2 y2c (7.15)

g(xc , yc ) = C10 +C11 xc +C12 yc +C13 xc yc +C14 xc2 +C15 y2c +C16 xc2 yc +C17 xc y2c +C18 xc2 y2c
(7.16)
7.1 Espaço de Trabalho 46

A Eq. (7.15) e a Eq. (7.16) podem ser escritas na forma matricial de modo que as
Eq. (7.13) e Eq. (7.14) são reescritas matricialmente como:
 
C
 1
C2 
 
 
C 
 3
 
C 
4
h i h i
 
xTCP = 1 xc yc xc yc xc2 y2c xc2 yc xc y2c xc2 y2c 
C5 
 (7.17)
 
C6 
 
 
C7 
 
 
C8 
 
C9
e  
C
 10 
C11 
 
 
C 
 12 
 
C 
13 
h i h i
 
yTCP = 1 xc yc xc yc xc2 y2c xc2 yc xc y2c xc2 y2c 
C14 
 (7.18)
 
C15 
 
 
C16 
 
 
C17 
 
C18
Define-se então 9 pontos pi dentro do espaço de trabalho do robô e 9 pontos mi
equivalentes no espaço de trabalho do cursor na iterface gráfica de controle do robô
conforme apresentado na Fig. 12 e Fig. 13.

pi = (xTCPi , yTCPi )
p1 = (0.090, 0.050)
p2 = (0.098, 0.100)
p3 = (0.122, 0.115)
p4 = (0.130, 0.045)
7.1 Espaço de Trabalho 47

Figura 12: Pontos definidos dentro do espaço de trabalho do robô.

0.13

0.12
p6
p3 p9
0.11

0.1

0.09
p2 p8
0.08

0.07
p5

0.06

0.05
p1 p7
0.04
0.08 0.09 0.1 0.11 0.12 0.13
p4 0.14 0.15 0.16 0.17 0.18

Fonte: Produção do autor.


Figura 13: Pontos definidos dentro da interface gráfica no computador.

m3 m6 m9

m2 m5 m8
yc
xc m41 m7
m1

Fonte: Produção do Autor

p5 = (0.130, 0.070)
p6 = (0.130, 0.120)
p7 = (0.170, 0.050)
7.1 Espaço de Trabalho 48

p8 = (0.150, 0.100) (7.19)


p9 = (0.138, 0.115)

mi = (xci , yci )
m1 = (0, 0)
715
m2 = (0, )
2
m3 = (0, 715)
1310
m4 = ( , 0)
2
1310 715
m5 = ( , )
2 2
1310
m6 = ( , 715)
2
m7 = (1310, 0)
715
m8 = (1310, )
2
m9 = (1310, 715)

Repetindo as Eq. (7.13) e Eq. (7.14) para cada um dos 9 pontos escreve-se os sis-
temas em forma matricial. Invertendo a matriz formada pelas coordenadas p e multipli-
cando pela esquerda, obtém-se o valor das constantes C1 ,C2 , ... ,C18 .

    
x 1 xc1 yc1 xc1 yc1 xc21 y2c1 xc21 yc1 xc1 y2c1 xc21 y2c1 C1
 TCP1    
xTCP2  1 xc2 yc2 xc2 yc2 xc22 y2c2 xc22 yc2 xc2 y2c2 xc22 y2c2  C2 
    
    
2 2 2 2 2 2  
 TCP3  1
x   xc3 yc3 xc3 yc3 xc3 yc3 xc3 yc3 xc3 yc3 xc3 yc3  C3 
    
2 2 2 2 2 2  
 TCP4  1
x   xc4 yc4 xc4 yc4 xc4 yc4 xc4 yc4 xc4 yc4 xc4 yc4  C4 
    
xTCP  = 1
 5  xc5 yc5 xc5 yc5 xc25 y2c5 xc25 yc5 xc5 y2c5 xc25 y2c5 
 C5 
  (7.20)
    
xTCP  1
 6  xc6 yc6 xc6 yc6 xc26 y2c6 xc26 yc6 xc6 y2c6 xc26 y2c6 
 C6 
 
    
xTCP7  1
   xc7 yc7 xc1 yc7 xc27 y2c7 xc27 yc7 xc7 y2c7 xc27 y2c7 
 C7 
 
xc8 yc8 xc8 yc8 xc28 y2c8 xc28 yc8 xc8 y2c8 xc28 y2c8  C8 
    
xTCP8  1
    
2 2 2 2 2 2
xTCP9 1 xc9 yc9 xc9 yc9 xc9 yc9 xc9 yc9 xc9 yc9 xc9 yc9 C9
7.1 Espaço de Trabalho 49

    
y 1 xc1 yc1 xc1 yc1 xc21 y2c1 xc21 yc1 xc1 y2c1 xc21 y2c1 C10
 TCP1    
yTCP2  1 xc2 yc2 xc2 yc2 xc22 y2c2 xc22 yc2 xc2 y2c2 xc22 y2c2  C11 
    
    
 TCP3  1
y   xc3 yc3 xc3 yc3 xc23 y2c3 xc23 yc3 xc3 y2c3 xc23 y2c3 
 C12 
 
    
y
 TCP
 1
4  xc4 yc4 xc4 yc4 xc24 y2c4 xc24 yc4 xc4 y2c4 xc24 y2c4 
 C13 
 
    
yTCP  = 1
 5  xc5 yc5 xc5 yc5 xc25 y2c5 xc25 yc5 xc5 y2c5 xc25 y2c5 
 C14 
  (7.21)
    
yTCP  1
 6  xc6 yc6 xc6 yc6 xc26 y2c6 xc26 yc6 xc6 y2c6 xc26 y2c6 
 C15 
 
    
yTCP7  1
   xc7 yc7 xc7 yc7 xc27 y2c7 xc27 yc7 xc7 y2c7 xc27 y2c7 
 C16 
 
xc8 yc8 xc8 yc8 xc28 y2c8 xc28 yc8 xc8 y2c8 xc28 y2c8  C17 
    
yTCP8  1
    
2 2 2 2 2 2
yTCP9 1 xc9 yc9 xc9 yc9 xc9 yc9 xc9 yc9 xc9 yc9 xc9 yc9 C18
Resolvendo numericamente as equações matriciais Eq. (7.20) e Eq. (7.21) obtém-se
os coeficientes C1 ,C2 , ... ,C18 .

C1 = 0.09
C2 = 6.107(10−5 )
C3 = 0
C4 = 2.382(10−22 )
C5 = 4.108(10−23 )
C6 = 6.25947(10−20 )
C7 = 1.551(10−25 )
C8 = −9.556(10−11 )
C9 = −2.019(10−28 )
C10 = 0.05
C11 = −1.530(10−5 )
C12 = 1.049(10−4 )
C13 = −2(10−7 )
C14 = 1.165(10−8 )
C15 = −1.956(10−8 )
C16 = 1.565(10−10 )
7.1 Espaço de Trabalho 50

C17 = 3.464(10−10 )
C18 = −2.644(10−13 )

Substituindo as constantes nas devidas equações, encontra-se então as equações que


realizam a transformação do espaço de trabalho da interface gráfica para o espaço de
trabalho do robô.
Deste modo encontra-se os dados de entrada para a cinemática inversa, uma vez que
o ângulo de giro em torno do eixo z da plataforma ϕ foi mantido fixo.
A escolha entre os tipos de interpolação depende da tarefa a ser realizada. Utilizando-
se da parametrização de duas variáveis, é possível atingir uma maior área do espaço de
trabalho do robô, entretanto ao movimentar o cursor em linha reta, a resposta do robô
é uma curva, devido à dependência de x e y. Esta programação é mostrada conceitual-
mente na Fig. 14

Figura 14: Programação do robô no software Processing.

Fonte: Produção do autor

Para determinar a verossimilhança entre a simulação realizada em computador e o


robô de fato construído, anexa-se uma caneta à plataforma móvel de modo a marcar
a trajetória em um papel milimetrado. Utilizando a programação descrita nesta seção,
varre-se os limitantes do espaço de trabalho do cursor. A trajetória descrita pelo robô é
apresentada na Fig. 15.
A utlização desta conversão se mostra suficientemente eficiente, visto que os lim-
ites do espaço de trabalho do robô se assemelha em forma com o da simulação, e as
7.2 Comunicação Serial 51

Figura 15: Espaço de trabalho mapeado pelo robô.

Fonte: Produção do autor

dimensões plotadas em relação aos pontos pi equivalentes tem um desvio na ordem de


3mm, correspondendo a um erro de 6.66% na linha central na direção vertical e 6.35%
na direção horizonta.

7.2 COMUNICAÇÃO SERIAL


Para realizar a comunicação entre o sistema de entrada de dados e o robô opta-se
por utilizar a porta serial do computador. Para tanto o mouse ou mousepad é utilizado
para movimentar o cursor na tela. A escolha do software Processing para realização dos
cálculos de cinemática inversa e criação da interface gráfica se dá ao fato de existirem
funções incluídas na biblioteca do programa que captam a posição do cursor apresen-
tando a resposta em pixels.
Neste mesmo programa realiza-se a conversão dos espaços de trabalho utilizando as
funções descritas pelas Eq. (7.17) e Eq. (7.18) e computa os ângulos a enviar para os ser-
vos motores por meio da solução do problema de cinemática inversa e escreve a posição
do atuador em graus na porta serial acompanhado de uma letra para designar cada servo
motor. O código escrito no software Processing encontra-se descrito no Apêndice A.2.
O software Arduino IDE é utilizado para fazer a comunicação entre o computador e
placa Arduino. O programa lê a porta serial onde se encontra a posição de cada atuador,
e anexa a posição a um servo designado. Para isto, a porta serial é lida como variável do
7.2 Comunicação Serial 52

tipo char onde cada caractere é lido individualmente e através da Eq. (7.22) convertido
para uma variável do tipo inteira representando o ângulo do servo motor em graus. O
código escrito neste software encontra-se descrito no Apêndice A.3.

v = 10v + ch (7.22)

Dessa maneira é possível reprogramar o robô para diferentes tarefas sem a neces-
sidade de realizar o upload para o Arduíno, uma vez que a programação do robô está
escrita no software Processing, bastando alterar a conversão de espaços de trabalho para
a tarefa desejada.
53

8 CINEMÁTICA INVERSA DO ROBÔ PARALELO 6-RUS

Neste capítulo é tratada a cinemática inversa dos robôs paralelos espaciais, com
enfoque no desenvolvimento de um método para cálculo da cinemática inversa de um
robô paralelo de arquitetura 6-RUS.
A aplicação desta arquitetura de robô é bastante ampla, sendo seu uso superado
apenas pela plataforma de Stewart-Gough, de arquitetura 6-UPS (BONEV, 2002). A
aplicação descrita neste trabalho envolve a determinação da cinemática inversa para o
simulador de voo CEART Flight Simulator, presente no Centro de Artes da Universidade
do Estado de Santa Catarina.

8.1 SIMULADORES DE VOO


Simulação de voo é usada na indústria aeronáutica há vários anos. Devido aos cus-
tos envolvidos no treinamento de pilotos e no custo da aeronave, o desenvolvimento
de diferentes dispostivos que servissem de treinamento de voo para pilostos se tornou
necessário, até que na década de 1960, o uso de simuladores de voos se tornou parte in-
tegral do programa de treinamento das linhas aéreas comerciais, sendo que por questões
de segurança e efetividade no treinamento, não era mais prático realizar o treinamento
em aeronaves (PAGE, 2010).
Os primeiros simuladores de voo buscavam reproduzir os efeitos das primeiras práti-
cas, baseadas em uma sequência de manobras graduadas a serem realizadas pelo piloto,
porém eram estes fixos na terra. Desta maneira, os primeiros dispositivos para treina-
mento eram fixos ao solo, podendo responder às forças aerodinâmicas quando devida-
mente alinhado com a direção do vento, como o dispositivo Sanders Teacher desen-
volvido em 1910 (PAGE, 2010).
O avanço da computação gráfica levou a simulações de voo a ambientes de realidade
virtual, porém, desta maneira o piloto não é exposto às forças reais que ocorrem durante
o voo. Devido a esta desconexão entre a visão e a percepção espacial, detectada pelo
sistema vestibular que se encontra na orelha interna, o uso continuado pelo período de
algumas horas causa náusea e desconforto ao usuário (COELHO; SANTOS; SILVA,
8.1 Simuladores de Voo 54

2007).
Devido à possibilidade de impor condições inerciais correspondentes às dinâmicas
impostas durante movimento, robôs paralelos espaciais tem apresentado destaque na
aplicação de simuladores de movimento, onde diferentes modelos foram desenvolvidos
por diversas empresas, como os modelos apresentados na Fig. 16 e Fig. 17.

Figura 16: Simulador de voo 6 DoF de baixo custo produzido pela CKAS
Mechatronichs PTY LTD.

Fonte: CKAS Mechatronichs PTY LTD

Estes dispositivos, como apresentados nas Fig. 16 e Fig. 17 são robôs paralelos
espaciais apresentando 6 graus de liberdade, possibilitando movimento completo. A
plataforma mais utilizada é plataforma de Stewart-Gough, baseada em uma arquitetura
do tipo 6-UPS, desenvolvida com o intuito de ser um simulador de voo (BONEV, 2002).
A segunda arquitetura mais utilizada é a 6-RUS, cuja a solução do problema de cin-

Figura 17: Simulador de voo 6 DoF produzido pela InMotion Simulation.

Fonte: InMotion Simulation


8.2 Cinemática Inversa 55

emática inversa é o tema de estudo deste capítulo.


Na Fig. 18 é apresentado o simulador de voo construído no CEART e na Fig. 19
é apresentada a estrutura do robô paralelo responsável pela simulação de movimento,
bem como os sistemas de coordenadas fixo na base f O e o sistema de coordenada da
plataforma móvel, fixo na mesma m O.

Figura 18: Simulador de voo construído no CEART

Fonte: Reis et al. (2010)

8.2 CINEMÁTICA INVERSA


Para solução do problema de cinemática inversa do robô 6-RUS, tem-se que dada
uma configuração no espaço descrita pelo vetor P onde P = [Px Py Pz ϕ ϑ ψ] sendo
Px , Py e Pz a posição do centro da ferramenta e ϕ, ϑ e ψ os ângulos de rotação em torno
dos eixos f x, f y e f z respectivamente, isto é, os ângulos de roll, pitch e yaw, a solução
do problema se dá encontrando a posição da junta atuada, neste caso o ângulo do crank
com o plano f x f y
Para aplicação deste método, alguns parâmetros construtivos são necessários e po-
dem ser obtidos a partir de um protótipo ou um modelo em CAD.
Os parâmetros requeridos são:
8.2 Cinemática Inversa 56

Figura 19: Estrutura do robô e sistemas de coordenadas fixo à base e fixo à


plataforma móvel

Fonte: Produção do autor

• Raio da base fixa rb ;

• Raio da plataforma móvel r p ;

• Metade da distância central de um par de juntas atuadas d;

• Metade da distância entre as juntas na plataforma móvel e;

• Dimensão do crank ri ;

• Dimensão do rod Ri ;

• Ângulo de posição dos atuadores χa ;

• Ângulo de posição das juntas passivas na plataforma móvel χ j ;

• Ângulo de orientação dos atuadores, isto é, entre o eixo do motor e um eixo par-
alelo a f y, β.
8.2 Cinemática Inversa 57

Figura 20: Parâmetros geométricos necessários para solução da cinemática


inversa

Fonte: Produção do autor

Estes parâmetros são detalhados na Fig 20.

8.2.1 Análise de Posição


Inicialmente é necessário definir a posição dos atuadores no sistema de coordenadas
globais, que podem ser obtidos pela Eq. (8.1) ao resolvê-lá para cada cadeia cinemática
i = 1, 2, 3, ...6, resultando em uma matriz 6x3, onde cada linha é uma cadeia cinemática
e as colunas representam as coordenadas f x, f y e f z respectivamente.

~A = ~R + ~m (8.1)
~m = −m sin χa î + m cos χa jˆ + 0k̂ (8.2)
m = (−1)1−i d (8.3)
~R = rb cos χa î + rb sin χa jˆ (8.4)
~A = (rb cos χa − m sin χa ) î + (rb sin χa + m cos χa ) jˆ + 0k̂ (8.5)

Da maneira similar, devem ser encontradas as juntas esféricas posicionadas na plataforma


8.2 Cinemática Inversa 58

móvel, no sistema de coordenadas da plataforma móvel

~ = ~r +~n
C (8.6)
~n = −n sin χ j î + n cos χ j jˆ + 0k̂ (8.7)
n = (−1)i−1 e (8.8)
~r = r p cos χ j î + r p sin χ j jˆ + 0k̂ (8.9)
m ~ = r p cos χ j − m sin χ j î + r p sin χ j + m cos χ j jˆ + 0k̂
PC (8.10)

A transformação rotacional utilizando a notação dos ângulos de roll, pitch e yaw,


como definida em (SICILIANO; SCIAVICCO; VILLANI, 2009) é usada para descrever
~ do ponto central da ferramenta, fixo na origem da plataforma móvel m O,
o vetor m PC
~
até a junta esférica no sistema de coordenada geral, fixo à origem na base f O.
 
 cϕcθ cϕsϑsψ − sϕcψ cϕsϑcψ + sϕcψ 
rot =  sϕcθ sϕsϑsψ + sϕcψ sϕsϑcψ − cϕsψ (8.11)
 

 
−sϑ cϑsψ cϑcψ
f ~ = rot m PC
PC ~ (8.12)

Para encotrar o vetor da junta atuada até a junta esférica passiva ~I a equação vetorial
Eq. (8.13) deve ser solucionada para cada cadeia cinemática i conforme apresentada na
Fig. 21.

f ~ =
OA f ~ + f PC
OP ~ + f PC
~ + f~I (8.13)
~I = f ~ − f OP
OA ~ − f PC
~ (8.14)

8.2.2 Solução do Problema de Cinemática Inversa


Inicialmente, o vetor ~I deve ser decomposto em duas componentes Iω que é perten-
cente ao plano ωi , sendo este o plano de revolução do crank na cadeia cinemática i, e
outra ortogonal ao plano ωi . Desta maneira, Iω deve ser decomposto em duas compo-
nentes pertencentes ao plano ωi , ~Iz e ~T , sendo uma paralela ao eixo f z e a outra paralela
8.2 Cinemática Inversa 59

Figura 21: Cadeia vetorial fechada para a cadeia cinemática i.

Fonte: Produção do autor

ao plano xy respectivamente.
~Iω = ~Iz + ~T (8.15)

A norma do ~T pode ser escrita nos termos de ~I



T = ~T = Ix cos β + Iy sin β (8.16)

onde Ix e Iy são ~I componentes nos eixos x e y, respectivamente.


Com essas definições é possível analisar o plano de rotação do crank ωi e definir os
ângulos θ, α, φ, ε que devem ser encontrados a fim de resolver o problema de cinemática
inversa, onde θ é o ângulo do crank.
Realizando uma análise na Fig. 22 leva a:

π = ε+φ+α+θ (8.17)

Utilizando-se da definição do produto interno e chamando por M a componente hor-


izontal no plano ωi de~r, e então multiplicando por 2T ambos os lados, tem-se que:

~r · −T = k~rk ~T cos θ
~ (8.18)

8.2 Cinemática Inversa 60

Figura 22: Vista frontal do plano ωi

Fonte: Produção do autor

−~T
onde = −T̂ .
k~T k

Figura 23: Vista frontal do plano ωi

Fonte: Produção do autor


8.2 Cinemática Inversa 61

−T̂ = r̂ (8.19)
~T · r̂ = M (8.20)
M = k~rk cos θ (8.21)
2T M = 2T k~rk cos θ (8.22)

Um parâmetro sem significado físico u é definido e permite reescrever Eq. (8.22)


como:

u = 2Tri (8.23)
2T M
u = (8.24)
cos θ

Utilzando o mesmo método, outro parâmetro sem significado físico v é definido, no


entanto a equação é multiplicada por 2Iz ,

v = −2Iz k~rk (8.25)



~r · Iz = k~rk ~Iz cos α (8.26)

N = k~rk cos α (8.27)

onde N é a componente vertical de~r e a formulação é semelhante à M.

2Iz N = 2Iz k~rk cos α (8.28)


2Iz N
v = (8.29)
cos α

Nestes termos é possível, então, determinar a relação uv de modo a encontrar o ângulo


φ.
T
φ = arctan (8.30)
Iz
u 2T M cos α
= (8.31)
v 2Iz N cos θ
M cos θ
= (8.32)
N cos α
8.2 Cinemática Inversa 62

u T
= − (8.33)
v Iz
u
φ = − arctan (8.34)
v

Não é necessário utilizar este método para encontrar o valor de φ, uma vez que Iz
e T são conhecidos, entretanto como u e v são utilizados posteriormente, é conveniente
apresentar esta formulação.
Um método análogo é aplicado com o objetivo de encotrar as relações que solu-
cionam o problema de cinemática inversa. Chamando por s a projeção de Iω sobre ~r e
multiplicando por 2 k~rk por conveniência. Sendo também k~rk igual ao comprimento do
crank é possível substituir por ri

Figura 24: Vista frontal do plano ωi

Fonte: Produção do autor


s = ~Iω cos (φ + α) (8.35)


2ri s = 2ri ~Iω cos (φ + α) (8.36)

8.2 Cinemática Inversa 63

Utilizando a equação de cadeia fechada, segue que:


2 2
~ 2
R = I + k~rk − ~I k~rk cos δ
~
(8.37)

Sendo δ o ângulo real formado entre o crank e ~I. A análise da Eq. (8.37) no plano
de rotação do crank, leva a δ = α + φ, de modo que seja definido w, um outro parâmetro
sem significado físico.

w = −2 k~rk ~Iω cos δ (8.38)


w = Ri − ~I − ri2
2
(8.39)

Também é possível manipular de maneira apropriada as equações do triângulo retân-


gulo apresentado na Fig. 24.
 2
−w
s2 = (8.40)
2ri
u2 + v2 = (2Tri )2 + (−2Iz ri )2 (8.41)
u2 + v2 = (2ri )2 (Iω )2 (8.42)

Do triângulo retângulo apresentado na Fig. 24, tem-se que:


2
2
z +s 2
= ~Iω (8.43)

2
(2ri )2 z2 + (2ri )2 s2 = (2ri )2 ~Iω (8.44)

É definido outro parâmetros q sem significado físico, permitindo reescrever Eq. (8.44).

q = 2ri z (8.45)
2
q2 + (2ri )2 s2 2 ~
= (2ri ) Iω (8.46)

Substituindo Eq. (8.40) na Eq. (8.46):


2
q2 + w2 = (2ri )2 ~Iω (8.47)

 
2 ~ 2
2 2 ~
q = (2ri ) Iω − Iω cos (φ + α) (8.48)
2
2 2 ~
q = (2ri ) Iω sin (φ + α) (8.49)
(8.50)
8.3 Algorítimo 64

2
2 ~
q2 (2 k~rk) Iω cos2 (φ + α)
= 2 (8.51)
w2 2 ~
(2 k~rk) Iω sin2 (φ + α)
q
tan (φ + α) = (8.52)
w
q
φ + α = arctan (8.53)
w

Retornando à Eq. (8.17).

π = ε+φ+α+θ
π
ε = −φ (8.54)
2
π 
π = − φ + (φ + α) + θ (8.55)
2
π
θ = + φ − (φ + α) (8.56)
2 u q
π
θ = − arctan − arctan (8.57)
2 v w

Dessa forma, resolve-se o problema de cinempatica inversa. Uma vez que a função
arctan apresenta uma resposta dúbia, é conveniente utilizar a função atan2 para a real-
ização do cálculo de maneira computacional.

8.3 ALGORÍTIMO
Na seção anterior é apresentada a prova para uma metodologia de solução da cin-
emática inversa para um robô paralelo 6-RUS utilizando alguns parâmetros sem signifi-
cado físico, porém baseados na cadeia cinemática, através da manipulação algébrica das
equações de cadeia fechada.
Apesar da prova do método ser extensa, a aplicação é simples. A aplicação de um
algorítimo que calcula a posição das juntas passivas na plataforma móvel, dos atuadores
e calcula os parâmetros u, v, w e q conforme apresentado a fim de solucionar a cinemática
inversa apresentando com baixo custo computacional.
Por conveniência Eq. (8.23), Eq. (8.25), Eq. (8.39), Eq. (8.47) e Eq. (8.42) são ree-
scritas para computar o valor de u, v, w e q baseados em valores prévios para aplicar na
8.3 Algorítimo 65

Eq. (8.57).

u = 2ri (Ix cos β + Iy sin β) (8.58)


v = −2ri Iz (8.59)
w = R2i − ri2 − Ix2 − Iy2 − Iz2 (8.60)
u2 + v2 = q2 + w2 (8.61)
p
q = u2 + v2 − w2 (8.62)

O mesmo algorítimo é utilizado para encontrar o espaço de trabalho para uma dada
orientação utilizando incrementos para Px , Py e Pz e resolvendo a cinemática inversa
repetidamente. O espaço de trabalho para orientação constante ϕ = ϑ = ψ = 0 é
apresentado na Fig.25.

Figura 25: Espaço de trabalho do simulador de voo para orientação constante.

Fonte: Produção do autor


66

9 CONCLUSÃO E PERSPECTIVAS

Este trabalho teve como objetivo o desenvolvimento e aplicação de métodos para


cálculo de cinemática inversa em robôs paralelos de arquitetura 3-RRR planar e 6-RUS.
Estes robôs tem aplicação prática no âmbito tecnológico e científico. Também objetivou-
se realizar um controle de trajetória em tempo real para o robô planar, de modo que
tendo uma entrada de dado através de maneira acessível ao usuário, o robô seguisse sua
trajetória.
A construção e implementação do robô planar apresentado cumpre com os objetivos,
assimilando a realidade prática com a desenvolvida teóricamente. Isto é percebido pela
semelhança dos espaços de trabalho real por meio da interpolação de duas variáveis e do
espaço de trabalho total apresentado teóricamente.
Para o robô planar tem-se a expectativa de, futuramente, determinar a trajetória a
ser seguida pelo robô através do movimento do globo ocular integrando o software livre
Opengazer, a utilzação de um filtro de média móvel para estabilização dos dados de en-
trada, uma webcam convencional e o sistema desenvolvido para cálculo de cinemática
inversa e comunicação serial. Desta maneira obtém-se um seguidor de pupila a baixo
custo que comunicado ao robô pode servir para auxílio de pacientes portadores de Es-
clerose Lateral Amiotrófica ou de outras doenças que comprotam a capacidade motora.
O robô espacial deve servir a um simulador de voo. Para tanto é necessário desen-
volver a dinâmica deste manipulador, bem como as funções de transferências para quais
acelerações lineares e angulares impostas pelo robô sejam equivalentes às sensações per-
ceptidas pelo sistema vestibular do usuário. Desta maneira, o robô apresenta fidelidade
em termos dinâmicos para servir como simulador de voo para um ambiente de realidade
virtual.
67

REFERÊNCIAS

ADAMS, D. O Guia do Mochileiro das Galáxias. Editora Sextante, 2004.


ARSENAULT, M.; BOUDREAU, R. The Synthesis of Three-Degree-of-Freedom
Planar Parallel Mechanisms with Revolute Joints (3-RRR) for an Optimal
Singularity Free Workspace. Journal of Robotic Systems, v. 21(5), p. 259–274, 2004.
BONEV, I. A. Geometric Analysis of Parallel Mechanisms. Tese (Doutorado) —
Facult’e des Sciences et de G’enie Universal’ e Laval, Novembre 2002.
COELHO, C. S.; SANTOS, J. A.; SILVA, C. F. da. Enjoo de Movimento: etiologia,
factores predisponentes e adaptação. In: Psicologia, Saúde & Doenças. 2007.
FILHO, S. C. T.; QUEIROZ, E. L. Kinematics and Workspace Analysis of a Parallel
Architecture Robot: the hexa. In: ABCM Symposium Series in Mechatronics - Vol.2.
2006.
GOSSELIN, C.; ANGELES, J. Singularity Analysis of CLosed-Loop Kinematic
Chains. IEEE Transactions on Robot. Auton., v. 6, p. 281–290, 1990.
GU, H.; WU, D.; LIU, H. Development of a Novel Low-Cost Flight Simulator for
Pilot Traininng. World Academy of Science, Engineering and Technology, v. 36, p.
696–690, 2009.
MERLET, J.-P. Parallel Robots. Springer, 2002.
MOHAMED, M. G.; SANGER, J.; DUFFY, J. Instantaneous Kinematics of Fully
Parallel Devices. In: Proc. 1st International Symposium of Robotics Research. 1983.
NASA, C.; BANDYOPADHYAY, S. Trajectory-tracking control of a planar 3-RRR
parallel manipulator.
PAGE, R. L. Brief History of Flight Simulation. In: SimTechT 2000 Proceedings.
2010.
PONGRAC, H. et al. Effects of Varied Human Movement Control on Task
Performance and Feelings of Telepresence. In: Haptics: Perception, Devices and
Scenarios. 2008.
QUEIROZ, E. M. de et al. Direct Singularity Avoidance Strategy for the HEXA
Parallel Robot. In: ABCM Symposium Series in Mechatronics - Vol. 2. 2006.
REIS, A. A. dos et al. Pesquisas ergonômicas para simuladores de voo em RV
imersiva Projeto e Produção de uma Plataforma de Movimentos 6DOF. Revista
DAPesquisa, v. 7, p. 439–453, 2010.
Referências 68

SICILIANO, B.; SCIAVICCO, L.; VILLANI, G. O. L. Robotics Modeling, Planning


and Control. Springer, 2009.
SIMAAN, N. Analysis and Synsthesis of Parallel Robots for Medical Applications.
Dissertação (Mestrado) — Israel Institute of Technology, 1999.
SPONG, M. W.; VIDYASAGAR, M. Robot Dynamics and Control. John WIley &
Sons, Inc., 1989.
STAICU, S. Kinematics of the 3-RRR Planar Parallel Robot. U.P.B. Sci. Bull., v. 70,
p. 3–14, 2008.
TSAI, L.-W. Robot Analysis: The Mechanics of Serial and Parallel Manipulators. John
WIley & Sons, Inc., 1999.
WILLIAMS, R. L.; JOSHI, A. R. Planar Parallel 3-RPR Manipulator. In:
Proceedings of the Sixth Conference on Applied Mechanism and Robotics. 1999.
YANG, G.; CHEN, W.; CHEN, I.-M. A Geometrical Method for the Singularity
Analysis of 3-RRR Planar Parallel Robots with Different Actuation Schemes. In:
Proceedings of the 2002 IEEE/RSJ Intl. Conference on Inteligence Robots and Systems.
2002.
69

APÊNDICE A -- Códigos

Neste anexo são aprensentados os códigos implementados no decorrer deste tra-


balho, utilizados para simulação do robô, para aquisição de dados e solução da cin-
emática inversa, e para comunicação via porta serial com o Arduino.

A.1 SCILAB
O código a seguir é utilizado como simulação do robô, resolvendo a cinemática
inversa para uma trajetória linear entre dois pontos no plano, calculando, monitorando a
matriz Jacobiano e pausando o programa caso esta se torne singular.
1 / / P r o g r a m a que computa a c i n e m á t i c a i n v e r s a do r o b ô 3RRR p l a n a r
2 clear
3 clc
4 clf ;
5 / / I n p u t Data
6 b = 0.08890; / / r o d l e n g h t [m]
7 a = b/2; / / c r a n c k l e n g h t [m]
8 L = 0.26; / / s i d e l e n g h t o f b a s e t r i a n g l e [m]
9 l = 0.08573; / / s i d e l e n g h t o f end e f f e c t o r t r i a n g l e [m]
10 A = [ 0 , 0 ; L , 0 ; L / 2 , L∗ s q r t ( 3 ) / 2 ] ; / / c o o r d i n a t e s of motors
11

12 h o m e _ p o s i t i o n = [ L / 2 , L∗ s q r t ( 3 ) / 6 , 0 ] ’ ; / / home p o s i t i o n
13 TCP= [ h o m e _ p o s i t i o n ( 1 ) + 0 . 0 5 , h o m e _ p o s i t i o n ( 2 ) , −20] ’ ; / / tool center point
14

15 x c _ i n i c i a l = home_position (1) ; / / X p o s i t i o n − i n i t i a l time


16 y c _ i n i c i a l = home_position (2) ; / / Y p o s i t i o n − i n i t i a l time
17 p h i _ i n i c i a l = home_position (3) ; / / O r i e n t a t i o n − i n i t i a l time
18

19 x c _ f i n a l = TCP ( 1 ) ; / / X p o s i t i o n − f i n a l time
20 y c _ f i n a l = TCP ( 2 ) ; / / Y p o s i t i o n − f i n a l time
21 p h i _ f i n a l = TCP ( 3 ) ; / / end−e f f e c t o r o r i e n t a t i o n − f i n a l t i m e [ o ]
22 n_passos = 100;
23

24 f o r j =0: n_passos
25 / / Position Analysis
26 xc = x c _ i n i c i a l + j ∗ ( x c _ f i n a l −x c _ i n i c i a l ) / n _ p a s s o s ;
A.1 Scilab 70

27 yc = y c _ i n i c i a l + j ∗ ( y c _ f i n a l −y c _ i n i c i a l ) / n _ p a s s o s ;
28 p h i = ( p h i _ i n i c i a l + j ∗ ( p h i _ f i n a l − p h i _ i n i c i a l ) / n _ p a s s o s )∗%p i / 1 8 0 ;
29 G = [ xc −( c o s (% p i / 6 + p h i ) ∗ l ∗ ( s q r t ( 3 ) / 3 ) ) , yc −(( l ∗ s q r t ( 3 ) / 3 ) ∗ s i n (% p i / 6 + p h i ) ) ] ;
30 H = [G( 1 ) + l ∗ c o s ( p h i ) , G( 2 ) + l ∗ s i n ( p h i ) ] ;
31 I = [G( 1 ) + l ∗ c o s ( p h i+%p i / 3 ) , G( 2 ) + l ∗ s i n ( p h i+%p i / 3 ) ] ;
32 B = [G ; H ; I ] ;
33 TCP = [ xc , yc ] ;
34

35 / / I n v e r s e Ki nem ati cs Problem


36 f o r i =1:3
37 C = [ ( B ( i , 1 )−A( i , 1 ) ) , ( B ( i , 2 )−A( i , 2 ) ) ] ;
38 e3 = C ( 1 ) ^2 + C ( 2 ) ^2 + a ^2 − b ^ 2 ;
39 e2 = −2∗a ∗C ( 1 ) ;
40 e1 = −2∗a ∗C ( 2 ) ;
41 d e l t a ( i ) = e1 ^2+ e2^2−e3 ^ 2 ;
42 t = [( − e1 + s q r t ( d e l t a ( i ) ) ) / ( e3−e2 ) , (−e1−s q r t ( d e l t a ( i ) ) ) / ( e3−e2 ) ] ;
43 t h e t a ( i , : ) = 2∗ a t a n ( t ) ;
44 end
45

46 / / Jacobian
47 D = [ a∗ cos ( t h e t a ( 1 , 1 ) ) , a∗ s i n ( t h e t a ( 1 , 1 ) ) ;
48 (A( 2 , 1 ) +a ∗ c o s ( t h e t a ( 2 , 1 ) ) ) , (A( 2 , 2 ) +a ∗ s i n ( t h e t a ( 2 , 1 ) ) ) ;
49 (A( 3 , 1 ) +a ∗ c o s ( t h e t a ( 3 , 1 ) ) ) , (A( 3 , 2 ) +a ∗ s i n ( t h e t a ( 3 , 1 ) ) ) ]
50

51 a _ j = [A−D ] ;
52 b _ j = [D−B ] ;
53 f o r k =1:3
54 e _ j ( k , : ) = [ TCP−B ( k , : ) ] ;
55 end
56

57 J x = [ b _ j ( 1 , 1 ) , b _ j ( 1 , 2 ) , ( e _ j ( 1 , 1 ) ∗ b _ j ( 1 , 2 )−e _ j ( 1 , 2 ) ∗ b _ j ( 1 , 1 ) ) ;
58 b _ j ( 2 , 1 ) , b _ j ( 2 , 2 ) , ( e _ j ( 2 , 1 ) ∗ b _ j ( 2 , 2 )−e _ j ( 2 , 2 ) ∗ b _ j ( 2 , 1 ) ) ;
59 b _ j ( 3 , 1 ) , b _ j ( 3 , 2 ) , ( e _ j ( 3 , 1 ) ∗ b _ j ( 3 , 2 )−e _ j ( 3 , 2 ) ∗ b _ j ( 3 , 1 ) ) ]
60

61 f o r k =1:3
62 J q ( k , k ) = [ ( a _ j ( k , 1 ) ∗ b _ j ( k , 2 )−a _ j ( k , 2 ) ∗ b _ j ( k , 1 ) ) ] ;
63 end
64

65 i f a b s ( r e a l ( J q ( 1 , 1 ) ) ) <0.0001 t h e n b r e a k
66 end
67

68 i f a b s ( r e a l ( J q ( 2 , 2 ) ) ) <0.0001 t h e n b r e a k
69 end
70

71 i f a b s ( r e a l ( J q ( 3 , 3 ) ) ) <0.0001 t h e n b r e a k
72 end
73 J = inv ( Jq ) ∗ Jx
74

75 M = [A( 1 , 1 ) A( 1 , 2 ) ;
76 a∗ cos ( t h e t a ( 1 , 1 ) ) , a∗ s i n ( t h e t a ( 1 , 1 ) ) ;
A.2 Processing 71

77 B ( 1 , 1 ) ,B ( 1 , 2 ) ;
78 B ( 2 , 1 ) ,B ( 2 , 2 ) ;
79 (A( 2 , 1 ) +a ∗ c o s ( t h e t a ( 2 , 2 ) ) ) , (A( 2 , 2 ) +a ∗ s i n ( t h e t a ( 2 , 2 ) ) ) ;
80 A( 2 , 1 ) ,A( 2 , 2 ) ;
81 (A( 2 , 1 ) +a ∗ c o s ( t h e t a ( 2 , 2 ) ) ) , (A( 2 , 2 ) +a ∗ s i n ( t h e t a ( 2 , 2 ) ) ) ;
82 B ( 2 , 1 ) ,B ( 2 , 2 ) ;
83 B ( 3 , 1 ) ,B ( 3 , 2 ) ;
84 (A( 3 , 1 ) +a ∗ c o s ( t h e t a ( 3 , 2 ) ) ) , (A( 3 , 2 ) +a ∗ s i n ( t h e t a ( 3 , 2 ) ) ) ;
85 A( 3 , 1 ) ,A( 3 , 2 ) ;
86 (A( 3 , 1 ) +a ∗ c o s ( t h e t a ( 3 , 2 ) ) ) , (A( 3 , 2 ) +a ∗ s i n ( t h e t a ( 3 , 2 ) ) ) ;
87 B ( 3 , 1 ) ,B ( 3 , 2 )
88 B ( 1 , 1 ) ,B ( 1 , 2 ) ; ] ’ ;

A.2 PROCESSING
O código a seguir apresenta o programa escrito no software Processing para captar o
dado do cursor, realizar a conversão entre os espaços de trabalho e calcular a cinemática
inversa.
1 import processing . s e r i a l . ∗ ;
2 f l o a t xpos =90;
3 f l o a t ypos =90;
4 S e r i a l p o r t ; / / The s e r i a l p o r t we w i l l be u s i n g
5 i n t ladox =1250;
6 i n t ladoy =710;
7

8 f l o a t k1x = 0 . 0 9 ;
9 f l o a t k2x = 6 . 1 0 7 ∗ pow ( 1 0 , −5 ) ;
10 f l o a t k3x = 0 ;
11 f l o a t k4x = 2 . 3 8 2 ∗ pow ( 1 0 , −2 2 ) ;
12 f l o a t k5x = 4 . 1 0 8 ∗ pow ( 1 0 , −2 3 ) ;
13 f l o a t k6x = 6 2 5 9 4 7 4 . 8 ∗ pow ( 1 0 , −1 4 ) ;
14 f l o a t k7x = 1 . 5 5 1 ∗ pow ( 1 0 , −2 5 ) ;
15 f l o a t k8x = −9556.45∗pow ( 1 0 , −1 4 ) ;
16 f l o a t k9x = −2.019∗pow ( 1 0 , −2 8 ) ;
17

18 f l o a t k1y = 0 . 0 5 ;
19 f l o a t k2y = −0.0000153;
20 f l o a t k3y = 0 . 0 0 0 1 0 4 9 ;
21 f l o a t k4y = −0.0000002;
22 f l o a t k5y = 1 . 1 6 5 ∗ pow ( 1 0 , −8 ) ;
23 f l o a t k6y = −1.956∗pow ( 1 0 , −8 ) ;
24 f l o a t k7y = 1 . 5 6 5 ∗ pow ( 1 0 , −1 0 ) ;
25 f l o a t k8y = 3 . 4 6 4 ∗ pow ( 1 0 , −1 0 ) ;
26 f l o a t k9y = −2.644∗pow ( 1 0 , −1 3 ) ;
27

28 void setup ( )
29 {
A.2 Processing 72

30 s i z e ( ladox , ladoy ) ;
31 frameRate (100) ;
32 println ( Serial . l i s t () ) ;
33 p o r t = new S e r i a l ( t h i s , S e r i a l . l i s t ( ) [ 0 ] , 1 9 2 0 0 ) ;
34 }
35 v o i d draw ( )
36 {
37 f i l l (175) ;
38 r e c t ( 0 , 0 , ladox , ladoy ) ;
39 f i l l ( 2 5 5 , 0 , 0 ) ; / / r g b v a l u e s o RED
40 r e c t ( l a d o x / 2 , l a d o y / 2 , mouseX−l a d o x / 2 , 1 0 ) ; / / xpos , ypos , w i d t h , h e i g h t
41 f i l l ( 0 , 2 5 5 , 0 ) ; / / and GREEN
42 r e c t ( l a d o x / 2 , l a d o y / 2 , 1 0 , mouseY−l a d o y / 2 ) ;
43 u p d a t e ( mouseX , mouseY ) ;
44 }
45 void update ( i n t x , i n t y )
46 {
47

48 i n t P1 = 9 0 ;
49 i n t P2 = 9 0 ;
50 i n t P3 = 9 0 ;
51

52 f l o a t y2= l a d o y −y ;
53 x p o s = k1x+k2x ∗ x+k3x ∗ y2+k4x ∗x∗ y2+k5x ∗pow ( x , 2 ) +k6x ∗pow ( y2 , 2 ) +k7x ∗pow ( x , 2 ) ∗ y2+k8x ∗pow ( y2 , 2 ) ∗x+
k9x ∗pow ( x , 2 ) ∗pow ( y2 , 2 ) ;
54 y p o s = k1y+k2y ∗x+k3y ∗ y2+k4y ∗x∗ y2+k5y ∗pow ( x , 2 ) +k6y ∗pow ( y2 , 2 ) +k7y ∗pow ( x , 2 ) ∗ y2+k8y ∗pow ( y2 , 2 ) ∗x+
k9y ∗pow ( x , 2 ) ∗pow ( y2 , 2 ) ;
55

56 i n t phi= 0;
57

58 f l o a t A1x = 0 ; / / p o s i t i o n x of motor a x i s 1 [ m e t e r s ]
59 f l o a t A2x = 0 . 2 6 ; / / p o s i t i o n x of motor a x i s 2 [ m e t e r s ]
60 f l o a t A3x = 0 . 1 3 ; / / p o s i t i o n x of motor a x i s 3 [ m e t e r s ]
61

62 f l o a t A1y = 0 ; / / p o s i t i o n y of motor a x i s 1 [ m e t e r s ]
63 f l o a t A2y = 0 ; / / p o s i t i o n y of motor a x i s 2 [ m e t e r s ]
64 f l o a t A3y = 0 . 1 3 ∗ s q r t ( 3 ) ; / / p o s i t i o n y of motor a x i s 3 [ m e t e r s ]
65

66 f l o a t a = 0.04445; / / crank length [ meters ]


67 f l o a t b = 0.08890; / / rod l e n g t h [ meters ]
68

69 f l o a t l = 0.08573; / / move p l a t f o r m d i s t a n c e b e t w e e n j o i n t [ m e t e r s ]
70

71 f l o a t C1x = x p o s − l ∗ ( c o s ( ( P I / 6 ) + p h i ) ) ∗ ( s q r t ( 3 ) / 3 ) ;
72 f l o a t C2x = C1x + l ∗ ( c o s ( p h i ) ) ;
73 f l o a t C3x = C1x + l ∗ ( c o s ( p h i + ( P I / 3 ) ) ) ;
74

75 f l o a t C1y = y p o s − l ∗ ( s i n ( ( P I / 6 ) + p h i ) ) ∗ ( s q r t ( 3 ) / 3 ) ;
76 f l o a t C2y = C1y + l ∗ ( s i n ( p h i ) ) ;
77 f l o a t C3y = C1y + l ∗ ( s i n ( p h i + ( P I / 3 ) ) ) ;
A.2 Processing 73

78

79 f l o a t d1x = C1x − A1x ;


80 f l o a t d2x = C2x − A2x ;
81 f l o a t d3x = C3x − A3x ;
82

83 f l o a t d1y = C1y − A1y ;


84 f l o a t d2y = C2y − A2y ;
85 f l o a t d3y = C3y − A3y ;
86

87 f l o a t e11 = −2∗a ∗ d1y ;


88 f l o a t e21 = −2∗a ∗ d1x ;
89 f l o a t e31 = d1x ∗ d1x + d1y ∗ d1y + a ∗ a − b∗ b ;
90

91 f l o a t d e l t a 1 = e11 ∗ e11 + e21 ∗ e21 − e31 ∗ e31 ;


92

93 f l o a t e12 = −2∗a ∗ d2y ;


94 f l o a t e22 = −2∗a ∗ d2x ;
95 f l o a t e32 = d2x ∗ d2x + d2y ∗ d2y + a ∗ a − b∗ b ; ;
96

97 f l o a t d e l t a 2 = e12 ∗ e12 + e22 ∗ e22 − e32 ∗ e32 ;


98

99 f l o a t e13 = −2∗a ∗ d3y ;


100 f l o a t e23 = −2∗a ∗ d3x ;
101 f l o a t e33 = d3x ∗ d3x + d3y ∗ d3y + a ∗ a − b∗ b ; ;
102

103 f l o a t d e l t a 3 = e13 ∗ e13 + e23 ∗ e23 − e33 ∗ e33 ;


104

105 f l o a t t 1 = (− e11 + s q r t ( d e l t a 1 ) ) / ( e31−e21 ) ;


106 f l o a t t 2 = (−e12−s q r t ( d e l t a 2 ) ) / ( e32−e22 ) ;
107 f l o a t t 3 = (−e13−s q r t ( d e l t a 3 ) ) / ( e33−e23 ) ;
108

109 f l o a t t h e t a 1 = 2∗ a t a n ( t 1 ) ∗ 1 8 0 / P I ;
110 f l o a t t h e t a 2 = 2∗ a t a n ( t 2 ) ∗ 1 8 0 / P I ;
111 f l o a t t h e t a 3 = 2∗ a t a n ( t 3 ) ∗ 1 8 0 / P I ;
112

113 float teta3 ;


114

115 i f ( t h e t a 3 <0) {
116 t e t a 3 = t h e t a 3 + 180 +4 5;
117 } else {
118 t e t a 3 = t h e t a 3 −135;
119 }
120

121 i f ( d e l t a 1 <0) {
122 P1 = P1 ;
123 } else {
124 P1 = i n t ( t h e t a 1 ) ;
125 }
126

127 i f ( d e l t a 2 <0) {
A.3 Arduino 74

128 P2 = P2 ;
129 } else {
130 P2 = i n t ( t h e t a 2 ) ;
131 }
132

133 i f ( d e l t a 3 <0) {
134 P3 = P3 ;
135 } else {
136 P3 = i n t ( t e t a 3 ) ;
137 }
138

139 p o r t . w r i t e ( P1+ " p " ) ;


140 p o r t . w r i t e ( P2+ " q " ) ;
141 p o r t . w r i t e ( P3+ " r " ) ;
142 }

A.3 ARDUINO
O código a seguir é utilizado no Arduino para ler a porta serial e enviar um valor de
ângulo entre 0 e 180 graus para os servos.
1 # i n c l u d e < S e r v o . h>
2 Servo servo1 ; Servo servo2 ; Servo servo3 ;
3 // set i n i t i a l v a l u e s f o r x and y
4 i n t ypos = 0 ;
5 i n t xpos= 0 ;
6 void setup ( ) {
7 servo1 . a t t a c h (9) ;
8 servo2 . a t t a c h (6) ;
9 servo3 . a t t a c h (5) ;
10 S e r i a l . b e g i n ( 1 9 2 0 0 ) ; / / 19200 i s t h e r a t e o f c o m m u n i c a t i o n
11 Serial . println ( " Rolling " ) ;
12 }
13 void loop ( ) {
14 s t a t i c i n t v = 0 ; / / v a l u e t o be s e n t t o t h e s e r v o (0 −180)
15 if ( Serial . available () ) {
16 c h a r ch = S e r i a l . r e a d ( ) ; / / r e a d i n a c h a r a c t e r from t h e s e r i a l p o r t and a s s i g n t o ch
17 s w i t c h ( ch ) { / / s w i t c h b a s e d on t h e v a l u e o f ch
18 case ’0 ’ . . . ’9 ’ : / / if i t ’ s numeric
19 v = v ∗10 + ch − ’ 0 ’ ;
20

21 break ;
22 case ’p ’ :
23 servo1 . write ( v ) ;
24 v = 0;
25 break ;
26 case ’q ’ :
27 servo2 . write ( v ) ;
28 v = 0;
A.3 Arduino 75

29 break ;
30 case ’ r ’ :
31 servo3 . write ( v ) ;
32 v =0;
33 }
34 }
35 }

You might also like