Escolar Documentos
Profissional Documentos
Cultura Documentos
Salvador - Bahia
2016
Ubiratan de Melo Pinto Júnior
Brasil
2016
fichacatalografica
CDU
02:141:005.7
Ubiratan de Melo Pinto Júnior
Brasil
2016
À minha família e amigos
Agradecimentos
– Gato, pode dizer-me que caminho devo tomar?
– Isso depende do lugar para onde você quer ir. (Res-
pondeu com muito propósito, o gato)
– Não tenho destino certo.
– Neste caso qualquer caminho serve.
Alice no País das Maravilhas - Lewis Carroll
Resumo
O planejamento de trajetórias com desvio de obstáculos pelo método dos campos potenciais
artificiais é amplamente utilizado em aplicações robóticos. Isso por conta de sua robustez
e conceito intuitivo. Este trabalho tem como objetivo a utilização deste método para o
manipulador robótico JACO através do ROS e, dessa forma, construir uma base de partida
para melhorias e trabalhos futuros utilizando esse sistema.
DH Denavit-Hartenberg
Lista de símbolos
oi xi yi zi Sistemas de coordenadas i
sα Seno do ângulo α
cα Cosseno do ângulo α
1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2 OBJETIVO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1 Objetivos específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3 DESENVOLVIMENTO . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1 Movimentos Rígidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.1 Matrizes de Rotação Tridimensionais . . . . . . . . . . . . . . . . . . . . . 19
3.1.2 Matrizes de Translação Tridimensionais . . . . . . . . . . . . . . . . . . . 21
3.2 Transformações Homogêneas . . . . . . . . . . . . . . . . . . . . . . . 21
3.3 Cinemática Direta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.1 Convenção Denavit-Hartenberg . . . . . . . . . . . . . . . . . . . . . . . . 24
3.4 Cinemática Inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.5 Planejamento de Trajetória . . . . . . . . . . . . . . . . . . . . . . . . 27
3.5.1 Campos Potenciais Artificiais . . . . . . . . . . . . . . . . . . . . . . . . . 27
4 RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.1 Planejamento de Trajetória sem Obstáculos . . . . . . . . . . . . . . 31
4.2 Planejamento de Trajetória com Obstáculos . . . . . . . . . . . . . . 35
4.3 Gráficos Comparativos . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
ANEXOS 46
1 Introdução
(a) Robô Aspirador Housekeeper Pro Polishop (b) Evolução dos robôs humanoides da Honda
(Polimport - Comércio e Exportação Ltda, - mais à frente, o ASIMO (Honda Motor
2017) Company, Limited, 2007)
Esta última aplicação, tem como exemplo o manipulador robótico JACO, figura
2 (Kinova Robotics, 2017), desenvolvido e comercializado pela Kinova Robotics. Este
manipulador foi utilizado no desenvolvimentos dos estudos descritos neste documento.
O manipulador JACO possui seis juntas, três juntas rotativas para o braço (RRR
ou articulado) e três juntas rotativas para o pulso não esférico. Sendo um manipulador
antropomórfico. Seu elemento final, ou ferramenta, é uma garra com três dedos com
uma atuador para cada dedo. Suas especificações estão disponíveis no endereço <http:
//www.gaitech.net/userfiles/file/JACO-2%20Specification%20Sheet%201.0.1.pdf>
Capítulo 1. Introdução 17
2 Objetivo
Este trabalho tem como foco a modelagem e análise do braço robótico articulado
JACO para aplicação em planejamento de trajetória através dos campos potenciais arti-
ficiais. Este método permite, a partir de uma pose (posição e ângulos determinados do
manipulador) inicial, chegar a uma pose final predefinida planejando uma trajetória de
forma que sejam evitadas colisões com obstáculos de localização conhecida.
A aplicação deste método será feita através do sistema operacional Robot Operating
System (ROS). O ROS é um espaço de trabalho flexível para escrever softwares para robôs.
Ele é uma coleção de ferramentas, bibliotecas, e convenções que visam simplificar a tarefa
de criação de comportamento robótico complexo e robusto dentre uma ampla variedade de
plataformas robóticas (ROS.ORG, 2017). Como resultado, ROS foi construído do zero para
encorajar desenvolvimento de softwares para robótica de forma colaborativa (ROS.ORG,
2017).
3 Desenvolvimento
u
p = ux0 + vy0 + wz0 =
0
v
z
(ux0 + vy0 + wz0 ).x1
p = ux0 .x1 + vx0 .x1 + wx0 .x1 = (ux0 + vy0 + wz0 ).y1
1
(ux0 + vy0 + wz0 ).z1
x .x y1 .x0 z1 .x0
1 0
R1 = x1 .y0 y1 .y0 z1 .y0
0
x1 .z0 y1 .z0 z1 .z0
cosθ −senθ 0
R10 = Rotz,θ = senθ cosθ 0
0 0 1
Por conveniência, daqui por diante será adotada a seguinte notação abreviada:
cosθ = cθ e senθ = sθ .
De forma similar, é possível determinar as matrizes de rotação em relação aos eixos
x0 , Rotx,α , e y0 , Roty,γ .
1 0 0
Rotx,α = 0 cα −sα
0 s α cα
c
γ
0 sγ
Roty,γ = 0 1 0
−sγ 0 cγ
R = Rotz0 ,θ Rotx1 ,α
R = Roty0 ,γ Rotz0 ,θ
d 0
x
0
T = oj = 0 + dy + 0
i
0 0 dz
d
x
oj = dy
i
dz
R3x3 T3x1
H=
f1x3 s1x1
n s x ax d x
x
ny sy ay dy
H=
nz sz az dz
0 0 0 1
θi , se a junta i f or de revolução
qi =
di , se a junta i f or prismática
Para que seja feita a análise cinemática de um manipulador, a cada elo i é fixado
rigidamente um sistema de coordenadas oi xi yi zi de forma que se a junta i é atuada, o
sistema oi xi yi zi sofre um movimento equivalente (Ex: se a junta i é prismática e causa
um deslocamento di , o sistema sofrerá uma translação de valor di no eixo de atuação da
junta).
Capítulo 3. Desenvolvimento 23
Ri−1 oi−1
Ai = i i
0 1
Ai+1 Ai+2 . . . Aj−1 Aj , se i < j
Tji = I , se i = j
(T j )−1
, se i > j
i
Logo,
R i oi
Tji = Ai+1 Ai+2 . . . Aj−1 Aj = j j
0 1
Rji = Ri+1
i
. . . Rjj−1
R0 o0
H = n n
0 1
c −sθi
θi
0 0 1 0 0 0 1 0 0 ai 1 0 0 0
sθi cθ i 0 0 0 1 0 0 0 1 0 0 0 cαi −sαi 0
Ai =
0 0 1 0 0 0 1 di 0 0 1 0 0 sαi cα i 0
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
c −sθi cαi sθi sαi ai cθi
θi
sθi cθi cαi −cθi sαi ai sθi
Ai =
0 s c d
αi αi i
0 0 0 1
Elo θi (limites) di ai αi
1 q1 0,2755 0,0000 90°
2.1 q2 (47° - 313°) 0,0000 0,0000 90°
2.2 0° 0,4100 0,0000 90°
3.1 q3 (19° - 341°) 0,0098 0,0000 90°
3.2 0° 0,2073 0,0000 0°
4.1 q4 0,0658 0,0000 -90°
4.2 0° 0,0342 0,0000 35°
5.1 q5 0,0000 0,0000 -35°
5.2 0° 0,0737 0,0000 90°
5.3 0° 0,0098 0,0000 -110°
(Coppelia Robotics, 2017)
1. qinit = q[0] , i = 0
4. IR PARA 2
1
Uatt (q) = ζρ2f (q)
2
Sendo ρ2f (q) a distância euclidiana entre a posição atual do efetuador, q, e a posição
objetivo, qf inal .
O campo possui característica quadrática, pois para distâncias muito pequenas a
força atrativa tende a zero com derivada contínua. Porém, para distâncias muito grandes,
essa força pode assumir valores excessivamente altos. Por isso é interessante que a partir de
determinada distância d o campo assuma um comportamento cônico e aumente linearmente
com a distância. Assim, uma forma mais conveniente é.
1
ζρ2 (q)
2 f
, se ρf (q) ≤ d
Uatt (q) =
dζρf (q) − 21 ζd2
, se ρ(q) > d
A força atrativa a cada ponto terá o módulo, sentido e direção definidos pelo
gradiente mínimo, como a seguir.
−ζ(q − qf inal ) , se ρf (q) ≤ d
Fatt (q) = − 5 Uatt (q) =
dζ(q−qf inal )
− ρf (q)
, se ρ(q) > d
da distância, ρ(q), entre eles. Além disso, para o caso de existirem diversos obstáculos, é
interessante que cada campo repulsivo tenha uma distância de influência, ρ0 , a partir da
qual o campo se torna nulo e não influencie na trajetória do efetuador. Dessa maneira o
campo repulsivo pode ser definido da seguinte maneira.
1
η( 1
2 ρ(q)
− 1 2
ρ0
) , se ρ(q) ≤ ρ0
Urep (q) =
0
, se ρ(q) > ρ0
A força repulsiva em cada ponto terá o módulo, sentido e direção definidos pelo
gradiente mínimo do campo como segue.
1
η( ρ(q) − 1
) 1
ρ0 ρ2 (q)
5 ρ(q) , se ρf (q) ≤ ρ0
Frep (q) = − 5 Urep (q) =
0
, se ρ(q) > ρ0
A força resultante sobre a ferramenta a cada ponto é a resultante das duas forças.
4 Resultados
Figura 8 – Módulo das forças atrativa (Fatt ) e repulsiva (Frep ) para a trajetória I
Como não há obstáculos, a força repulsiva é numa durante todo o trajeto. A força
atrativa diminui quadraticamente com a aproximação de qf inal , que é o comportamento
esperado.
O movimento do manipulador no espaço de junta é mostrado na figura 9.
Se a constante de força atrativa for o dobro do caso anterior e os outros parâmetros
forem os mesmos. Isto é, se ζ = 100, η = 0, 1 e α = 0, 01,o algoritmo encontrará como
Capítulo 4. Resultados 32
solução uma trajetória II de apenas 1 ponto. Ou seja, o efetuador levará apenas uma
iteração para chegar ao ponto objetivo.
perceber o campo repulsivo. Por isso é desejável para este tipo de aplicação possua uma
trajetória de vários pontos com pequenos deslocamentos executados em pequenos tempos
a fim de que se possa perceber e evitar colisões o mais breve possível.
O experimento seguinte tem como resultado uma trajetória III que atende aos
requisitos citados acima. Para este caso foram usados ζ = 100, η = 0, 1 e α = 0, 001. O
algoritmo encontra uma solução para estes parâmetros em 22 pontos. A trajetória III é
mostrada na figura 12 no espaço cartesiano e na figura 14 no espaço de juntas.
Figura 13 – Módulo das forças atrativa (Fatt ) e repulsiva (Frep ) para a trajetória III
Capítulo 4. Resultados 35
Com isso, conclui-se que os valores escolhidos para a trajetória III dão ao algoritmo
um melhor desempenho para desvios de obstáculos. Na próxima seção será testada essa
capacidade do método.
Neste caso, o método de planejamento não encontrará uma solução que leve o
efetuador para qf inal . Ao invés disso, já na iteração de número 7 o efetuador chega à posição
q = [0.22211248723795193, −0.23342923457597461, 0.6689406000904017] e não consegue
Capítulo 4. Resultados 36
sair dela. As figuras 15 e 16 mostram essa trajetória, IV, no espaço cartesiano e de juntas,
respectivamente.
É possível ver que o efetuador não chega em qf inal não importa quanto tempo
se passe. Este é um problema de mínimo local, comum no método de planejamento de
Capítulo 4. Resultados 37
trajetória por campos potenciais artificiais. Ele ele se dá quando o gradiente do campo
resultante formado por obstáculos e ponto objetivo apresenta, além do valor mínimo global
em qf inal , valores mínimos locais em ponto intermediários da trajetória. Nesses pontos,
a resultante das forças que atuam sobre o efetuador é nula e mesmo que a condição de
parada do algoritmo não seja atendida, ele não sairá deste ponto. A figura 17 mostra a
variação do módulo das forças no decorrer da trajetória.
Figura 17 – Módulo das forças atrativa (Fatt ) e repulsiva (Frep ) para a trajetória IV
O problema dos mínimos locais pode ser resolvido de diversas maneiras, como, por
exemplo, a aplicação de campo rotacionais nos obstáculos ao invés de lineares ou, uma
vez preso num mínimo local, o manipulador executar uma série de movimentos aleatórios,
controlados para tentar se afastar o suficiente deste ponto e conseguir chegar ao ponto
objetivo, ou ainda a determinação de pontos obstáculos auxiliares para que este mínimo
deixe de existir. Contudo, este trabalho não visa propor uma solução para o problema dos
mínimos locais e este experimento foi feito com o intuito de mostrar oportunidades de
melhorias para a aplicação.
Para evitar o mínimo local é possível deslocar o obstáculo de forma que não fique
sobre uma linha reta entre qinit e qf inal . Assim, qo2 = [0.26, −0.25, 0.7729635104026684] e
o algoritmo não é alterado.
Uma trajetória é encontrada pelo algoritmo em 38 pontos. O manipulador desvia do
obstáculo e chega ao ponto final como pode ser visto nas figuras 18, no espaço cartesiano,
e 19, no espaço de juntas. Comparando essa trajetória com as trajetória I, II e III é
perceptível que não são iguais apesar de chegarem ao mesmo ponto final.
Pode ser percebido que a modificação do percurso ocorre logo nas primeiras
iterações, pois é na sétima iterações que a força repulsiva assume seu valor máximo, logo,
é neste instante que o efetuador está mais próximo de qo2 e sofre maior influência do
campo repulsivo alterando mais acentuadamente seu trajeto. Após isso, a campo repulsivo
influencia cada vez menos o manipulador.
Capítulo 4. Resultados 38
Figura 20 – Módulo das forças atrativa (Fatt ) e repulsiva (Frep ) para a trajetória V
5 Conclusão
Referências
Honda Motor Company, Limited. Advanced Step in Innovative Mobility (ASIMO). 2007.
Citado na página 16.
KHATIB, O. Real-time obstacle avoidance for manipulators and mobile robots. The
International Journal of Robotics Research, 1986. Citado na página 27.
Schmidt, Jeff (Clearpath) and Bencz, Alex (Clearpath) and DeDonato, Matt (WPI). Pacote
Kinova-ROS. 2017. Disponível em: <https://github.com/Kinovarobotics/kinova-ros>.
Citado 2 vezes nas páginas 26 e 30.
84
85 # Calculo da forca atrativa F
86
87 global F
88 F = []
89
90 F.append(qx - qFinal[0])
91 F.append(qy - qFinal[1])
92 F.append(qz - qFinal[2])
93
94 F[0] = F[0]/distancia_pontos(q[i],qFinal)
95 F[1] = F[1]/distancia_pontos(q[i],qFinal)
96 F[2] = F[2]/distancia_pontos(q[i],qFinal)
97
98 modF = ro*distancia_pontos(q[i],qFinal)
99 #modF = ro
100 # mod = math.sqrt(F[0]**2 + F[1]**2 + F[2]**2) # Verificando ...
modulo unitario de F
101
102 #F[0] = qx - ro*F[0]
103 #F[1] = qy - ro*F[1]
104 #F[2] = qz - ro*F[2]
105
106 # Calculo da forca repulsiva R
107
108 global R
109 R = []
110
111 R.append(qx - qObstaculo[0])
112 R.append(qy - qObstaculo[1])
113 R.append(qz - qObstaculo[2])
114
115 if distancia_pontos(q[i],qObstaculo) > di:
116 modR = 0
117 else:
118 R[0] = R[0]/distancia_pontos(q[i],qObstaculo)
119 R[1] = R[1]/distancia_pontos(q[i],qObstaculo)
120 R[2] = R[2]/distancia_pontos(q[i],qObstaculo)
121
122 modR = eta*(1/distancia_pontos(q[i],qObstaculo) - ...
1/di)/math.pow(distancia_pontos(q[i],qObstaculo),2)
123 #modR = eta
124
125 F[0] = qx - alpha*modF*F[0] + alpha*modR*R[0]
126 F[1] = qy - alpha*modF*F[1] + alpha*modR*R[1]
127 F[2] = qz - alpha*modF*F[2] + alpha*modR*R[2]
128
ANEXO A. Código Python 50
129 q.append(F)
130 i = i + 1
131 return q,i,modR,distancia_pontos(q[i],qObstaculo),modF
132
133
134 def QuaternionNorm(Q_raw):
135 qx_temp,qy_temp,qz_temp,qw_temp = Q_raw[0:4]
136 qnorm = math.sqrt(qx_temp*qx_temp + qy_temp*qy_temp + ...
qz_temp*qz_temp + qw_temp*qw_temp)
137 qx_ = qx_temp/qnorm
138 qy_ = qy_temp/qnorm
139 qz_ = qz_temp/qnorm
140 qw_ = qw_temp/qnorm
141 Q_normed_ = [qx_, qy_, qz_, qw_]
142 return Q_normed_
143
144
145 def Quaternion2EulerXYZ(Q_raw):
146 Q_normed = QuaternionNorm(Q_raw)
147 qx_ = Q_normed[0]
148 qy_ = Q_normed[1]
149 qz_ = Q_normed[2]
150 qw_ = Q_normed[3]
151
152 tx_ = math.atan2((2 * qw_ * qx_ - 2 * qy_ * qz_), (qw_ * qw_ - ...
qx_ * qx_ - qy_ * qy_ + qz_ * qz_))
153 ty_ = math.asin(2 * qw_ * qy_ + 2 * qx_ * qz_)
154 tz_ = math.atan2((2 * qw_ * qz_ - 2 * qx_ * qy_), (qw_ * qw_ + ...
qx_ * qx_ - qy_ * qy_ - qz_ * qz_))
155 EulerXYZ_ = [tx_,ty_,tz_]
156 return EulerXYZ_
157
158
159 def EulerXYZ2Quaternion(EulerXYZ_):
160 tx_, ty_, tz_ = EulerXYZ_[0:3]
161 sx = math.sin(0.5 * tx_)
162 cx = math.cos(0.5 * tx_)
163 sy = math.sin(0.5 * ty_)
164 cy = math.cos(0.5 * ty_)
165 sz = math.sin(0.5 * tz_)
166 cz = math.cos(0.5 * tz_)
167
168 qx_ = sx * cy * cz + cx * sy * sz
169 qy_ = -sx * cy * sz + cx * sy * cz
170 qz_ = sx * sy * cz + cx * cy * sz
171 qw_ = -sx * sy * sz + cx * cy * cz
172
ANEXO A. Código Python 51