Você está na página 1de 24

UNIVERSIDADE ESTADUAL DE LONDRINA

CENTRO DE TECNOLOGIA E URBANISMO


DEPARTAMENTO DE ENGENHARIA ELÉTRICA

LUCCA RODRIGUES PINTO

LABORATÓRIO 4 DE ROBÓTICA E AUTOMAÇÃO


INDUSTRIAL

LONDRINA
2023
2

LUCCA RODRIGUES PINTO

LABORATÓRIO 4 DE ROBÓTICA E AUTOMAÇÃO


INDUSTRIAL

Trabalho apresentado à disciplina


1ELE901 - Robótica e Automação In-
dustrial, na graduação em Engenharia
Elétrica - UEL.
Prof. Ruberlei Gaino

LONDRINA
2023
3

Conteúdo

1 Licença 4

2 Resumo 5

3 Introdução 6
3.1 Cinemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2 Cinemática direta e inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3 Notação de Denavit-Hartenberg . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.4 Posição e orientação do efetuador . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4 Metodologia e resultados 9
4.1 1-Determine a Cinemática Direta do Manipulador MICO com 4 DOF.
Temos L0 + L1 = 0.2755 m, L2 = 0.29 m, L3 = 0.1233 m, e L4 = 0.16 m. . . . . . . 9
4.1.1 a). Determine com os parâmetros DH . . . . . . . . . . . . . . . . . . . . . 9
4.1.2 b). Elabore com o toolbox do Perter Corke e determine os parâmetros DH. . 10
4.1.3 c). Determine a Transformada Homogênea de cada junta com uso da mul-
tiplicação das matrizes determinadas pelo parâmetros DH. Também a Trans-
formação 0A4. (Simbólico do SCILAB e ou equivalente). . . . . . . . . . . 11
4.2 d). Crie sua animação, sugira ângulos iniciais e finais e execute sua trajetória. (Mate-
rial do Peter Corke) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3 2-Determine a Cinemática Inversa do Manipulador MICO com 4 DOF. . . . . . . . . 18
4.3.1 a). Geometria (Lei de Cossenos e Senos) . . . . . . . . . . . . . . . . . . . 19
4.3.2 b). Utilize o recurso computacional do Peter Corke (ikine_sym e/ou ikcon),
elabore a programação comente sobre os resultados obtidos entre a) e b). . . 20
4.4 3. Questão sobre a figura a seguir: . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.4.1 Sugestão: Fizeram a cinemática direta e inversa, assim com os seus modelos
matemáticos e de simulação, determine x = 0, y = 0 e z mudam se você girar
a primeira junta? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

5 Conclusões 23
4

1 LICENÇA
5

2 RESUMO

A princípio, este laboratório tem como finalidade tratar do tema de cinemática e da notação de
Denavit-Hartenberg, bem como durante a realização das etapas, aplicar os conceitos vistos em aula,
averiguar e constatar os resultados experimentais e teóricos obtidos ao realizar o experimento para
um manipulador MICO com 4 DOF. Inicialmente, conforme a proposta do laboratório, a cinemática
direta de um manipulador MICO com 4 DOF foi determinada. Os parâmetros DH puderam ser en-
contrados, bem como a transformada homogênea de cada junta. Em sequência, com o toolbox do
Perter Corke, o mesmo foi realizado para possibilitar uma análise comparativa. Ao final dessa etapa,
foi possível criar a simulação, sugerindo ângulos iniciais e finais e executando sua trajetória. Em
seguida, foi determinada a cinemática inversa do mesmo manipulador pela lei de cossenos e senos.
No mais, utilizando o recurso computacional do Peter Corke, foi elaborada a programação com as
funções ikcon e ikine. Por fim, após as cinemáticas direta e inversa, foi colocado em questão o efeito
de transformações elementares na posição e orientação do robô.
6

3 INTRODUÇÃO

3.1 C INEMÁTICA

A cinemática é uma área da mecânica que estuda o movimento de corpos sem considerar massas ou
forças. Um braço robótico é composto por elos rígidos e juntas que podem ser de natureza transla-
cional (permitindo movimento linear) ou rotacional (permitindo movimento angular). O movimento
dessas juntas influencia a posição dos elos conectados e, consequentemente, do efetuador final. Este
último é a parte do robô que executa tarefas úteis e pode se mover livremente no espaço. Ao longo
deste processo, há a necessidade de calcular tanto a posição do efetuador final com base nas juntas,
o que é chamado de cinemática direta, quanto a posição das juntas com base na posição do efetuador
final, conhecido como o problema inverso (1).

3.2 C INEMÁTICA DIRETA E INVERSA

A cinemática direta é um conceito fundamental na robótica que envolve mapear as coordenadas das
juntas de um robô para a posição final de seu efetuador. Este processo é explorado no contexto de
braços robóticos, começando com exemplos simples de movimento bidimensional e evoluindo para
braços mais complexos com movimento tridimensional (1).
Ao contrário da cinemática direta, na qual desejamos calcular a posição do órgão terminal do ma-
nipulador em função das variáveis de junta, na cinemática inversa se deseja calcular os valores das
variáveis de junta que produzirão a posição e orientação desejadas para o órgão terminal.

3.3 N OTAÇÃO DE D ENAVIT-H ARTENBERG

Uma série de abordagens foram desenvolvidas para descrever de forma mais concisa um braço ro-
bótico serial-link: a notação de Denavit-Hartenberg (DH) é uma convenção amplamente utilizada na
robótica para descrever a cinemática de robôs manipuladores. Foi desenvolvida por Jacques Denavit
e Richard Hartenberg na década de 1950 e é fundamental para representar a geometria e as transfor-
mações entre os elos de um robô manipulador. Essa notação é particularmente útil para modelar a
cinemática direta e inversa de robôs (1).
A Figura 3.1 apresenta os parâmetros de Denavit-Hartenberg, seu significado físico, símbolo e defi-
nição formal.
7

Figura 3.1: parâmetros de Denavit-Hartenberg

3.4 P OSIÇÃO E ORIENTAÇÃO DO EFETUADOR

Com a notação de Denavit-Hartenberg definida, pode-se obter a posição e orientação do efetuador em


relação ao sistema da base em função dos deslocamentos de todas as articulações. O deslocamento
de cada articulação é dada por di para articulações prismáticas ou θi para articulações de revolução.
Para facilitar a nomenclatura, a posição das articulações pode ser denotada por qi .
Dessa forma, a posição e orientação do ligamento i relativo ao ligamento i-1 é descrita em função
de qi , através da matriz homogênea Ai−1i (qi ). Um manipulador consiste de n + 1 ligamentos, com
a base sendo o ligamento e o efetuador o ligamento n. Portanto, do efetuador à base existem n
transformações homogêneas consecutivas, assim, a posição e orientação do efetuador é dada por:

A0n = A01 (q1 )A12 (q2 )...An−1


n (qn ) (3.1)

Onde A0n é a matriz homogênea que representa a posição e orientação do efetuador em relação ao
sistema da base, em função das posições de todas as articulações. Como A0n é uma matriz homogênea
ela tem a seguinte forma:
" #
Rn0 (q1 , ..., qn ) Tn0 (q1 , ..., qn )
A0n (q1 , ..., qn ) = (3.2)
0 1

Rn0 (q1 , ..., qn ) é a matriz de rotação que representa a orientação do efetuador em relação ao sistema da
base. O vetor Tn0 (q1 , ..., qn ) fornece a posição do efetuador em relação ao sistema da base.
A transformação correspondente às rotações em torno dos eixos x, y ou z por um ângulo é:
 
1 0 0 0
 
 0 cosθ −sinθ 0 
R(x, θ) =   (3.3)

 0 sinθ cosθ 0 
0 0 0 1
8

 
cosθ
0 sinθ 0
 
 01 0 0 
R(y, θ) =   (3.4)

 −sinθ
0 cosθ 0 
00 0 1
 
cosθ −sinθ 0 0
 
 sinθ cosθ 0 0 
R(z, θ) = 
  (3.5)
 0 0 1 0 

0 0 0 1
No mais, a transformação T correspondente a uma translação por um vetor ai + bj + ck é (2):
 
1 0 0 a
 
 0 1 0 b 
T (a, b, c) =   (3.6)

 0 0 1 c 

0 0 0 1
9

4 METODOLOGIA E RESULTADOS

4.1 1-D ETERMINE A C INEMÁTICA D IRETA DO M ANIPULADOR MICO COM 4 DOF.


T EMOS L0 + L1 = 0.2755 M , L2 = 0.29 M , L3 = 0.1233 M , E L4 = 0.16 M .

4.1.1 a). Determine com os parâmetros DH

Os parâmetros DH determinados são mostrados na Tabela 4.1.

Tabela 4.1: Parâmetros DH

# θ d a α
0-1 θ1 L0 + L1 0 0
1-2 θ2 0 0 -90
2-3 θ3 0 L2 0
3-4 θ4 L3 + L4 0 -90

Logo mais, podemos definir a matriz de transformação homogênea como:

A04 = A01 · A12 · A23 · A34 · (4.1)

A01 = Rz (θ1 ) · Tz (L0 + L1 ) (4.2)

A12 = Rz (θ2 ) · Rx (−90) (4.3)


10

A23 = Rz (θ3 ) · Tx (L2 ) (4.4)

A34 = Rz (θ4 ) · Tz (L3 + L4 ) · Rx (−90) (4.5)

4.1.2 b). Elabore com o toolbox do Perter Corke e determine os parâmetros DH.

clc, clear all, close all


import ETS2.*

L0L1 = 0.2755;
L2 = 0.29;
L3 = 0.1233;
L4 = 0.16;
d2r = pi/180;
syms q1 q2 q3 q4 real

% juntas
J0 = Revolute('d', L0L1)
J1 = Revolute('alpha', -90*d2r)
J2 = Revolute('a', L2)
J3 = Revolute('d', L3+L4, 'alpha', -90*d2r)

% conectando as juntas em um robo


robot = SerialLink([J0 J1 J2 J3], 'name', 'Mico', 'manufacturer', 'Kinova')

J0 =
Revolute(std): theta=q, d=0.2755, a=0, alpha=0, offset=0

J1 =
Revolute(std): theta=q, d=0, a=0, alpha=-1.5708, offset=0

J2 =
Revolute(std): theta=q, d=0, a=0.29, alpha=0, offset=0

J3 =
Revolute(std): theta=q, d=0.2833, a=0, alpha=-1.5708, offset=0

robot =
11

Mico [Kinova]:: 4 axis, RRRR, stdDH, slowRNE


+---+-----------+-----------+-----------+-----------+-----------+
| j | theta | d | a | alpha | offset |
+---+-----------+-----------+-----------+-----------+-----------+
| 1| q1| 0.2755| 0| 0| 0|
| 2| q2| 0| 0| -1.5708| 0|
| 3| q3| 0| 0.29| 0| 0|
| 4| q4| 0.2833| 0| -1.5708| 0|
+---+-----------+-----------+-----------+-----------+-----------+

4.1.3 c). Determine a Transformada Homogênea de cada junta com uso da multiplicação das
matrizes determinadas pelo parâmetros DH. Também a Transformação 0A4. (Simbólico
do SCILAB e ou equivalente).

clc, clear all, close all


import ETS2.*

L0L1 = 0.2755;
L2 = 0.29;
L3 = 0.1233;
L4 = 0.16;
d2r = pi/180;
syms q1 q2 q3 q4 real

% juntas
J0 = Revolute('d', L0L1);
J1 = Revolute('alpha', -90*d2r);
J2 = Revolute('a', L2);
J3 = Revolute('d', L3+L4, 'alpha', -90*d2r);

% conectando as juntas em um robo


robot = SerialLink([J0 J1 J2 J3], 'name', 'Mico', 'manufacturer', 'Kinova');

fprintf('Transformadas Homogêneas (simbólico):\n');

% simbolicos
syms q1 q2 q3 q4 real

% ---------------------------------------

Rz1 = [cos(q1) -sin(q1) 0 0; ...


12

sin(q1) cos(q1) 0 0; ...


0 0 1 0; ...
0 0 0 1];

Tz1 = [1 0 0 0; ...
0 1 0 0; ...
0 0 1 L0L1; ...
0 0 0 1];

A01 = Rz1 * Tz1

% ---------------------------------------

Rz2 = [cos(q2) -sin(q2) 0 0; ...


sin(q2) cos(q2) 0 0; ...
0 0 1 0; ...
0 0 0 1];

Rx2 = [1 0 0 0; ...
0 cos(-90*d2r) -sin(-90*d2r) 0; ...
0 sin(-90*d2r) cos(-90*d2r) 0; ...
0 0 0 1];

A12 = Rz2 * Rx2

% ---------------------------------------

Rz3 = [cos(q3) -sin(q3) 0 0; ...


sin(q3) cos(q3) 0 0; ...
0 0 1 0; ...
0 0 0 1];

Tz3 = [1 0 0 L2; ...


0 1 0 0; ...
0 0 1 0; ...
0 0 0 1];

A23 = Rz3 * Tz3

% ---------------------------------------
13

Rz4 = [cos(q4) -sin(q4) 0 0; ...


sin(q4) cos(q4) 0 0; ...
0 0 1 0; ...
0 0 0 1];

Tz4 = [1 0 0 0; ...
0 1 0 0; ...
0 0 1 L3+L4; ...
0 0 0 1];

Rx4 = [1 0 0 0; ...
0 cos(-90*d2r) -sin(-90*d2r) 0; ...
0 sin(-90*d2r) cos(-90*d2r) 0; ...
0 0 0 1];

A34 = Rz4 * Tz4 * Rx4

% ---------------------------------------

% matriz de transformacao homogenea


A04 = A01 * A12 * A23 * A34

fprintf('Transformadas Homogêneas (Peter Corke):\n');

A01 = J0.A(q1)
A12 = J1.A(q2)
A23 = J2.A(q3)
A34 = J3.A(q4)
% matriz de transformacao homogenea
A04 = A01 * A12 * A23 * A34

Transformadas Homogêneas (simbólico):

A01 =

[ cos(q1), -sin(q1), 0, 0]
[ sin(q1), cos(q1), 0, 0]
[ 0, 0, 1, 551/2000]
[ 0, 0, 0, 1]

A12 =

[ cos(q2), -(4967757600021511*sin(q2))/81129638414606681695789005144064,
,→ -sin(q2), 0]
14

[ sin(q2), (4967757600021511*cos(q2))/81129638414606681695789005144064,
,→ cos(q2), 0]
[ 0, -1,
,→ 4967757600021511/81129638414606681695789005144064, 0]
[ 0, 0,
,→ 0, 1]

A23 =

[ cos(q3), -sin(q3), 0, (29*cos(q3))/100]


[ sin(q3), cos(q3), 0, (29*sin(q3))/100]
[ 0, 0, 1, 0]
[ 0, 0, 0, 1]

A34 =

[ cos(q4), -(4967757600021511*sin(q4))/81129638414606681695789005144064,
,→ -sin(q4), 0]
[ sin(q4), (4967757600021511*cos(q4))/81129638414606681695789005144064,
,→ cos(q4), 0]
[ 0, -1,
,→ 4967757600021511/81129638414606681695789005144064, 2833/10000]
[ 0, 0,
,→ 0, 1]

A04 =

[ - cos(q4)*(sin(q3)*((4967757600021511*cos(q1)*sin(q2))/81129638414606681695789005144064 +
,→ (4967757600021511*cos(q2)*sin(q1))/81129638414606681695789005144064) - cos(q3)*(cos(q1)*cos(q2)
,→ - sin(q1)*sin(q2))) -
,→ sin(q4)*(cos(q3)*((4967757600021511*cos(q1)*sin(q2))/81129638414606681695789005144064 +
,→ (4967757600021511*cos(q2)*sin(q1))/81129638414606681695789005144064) + sin(q3)*(cos(q1)*cos(q2)
,→ - sin(q1)*sin(q2))), cos(q1)*sin(q2) + cos(q2)*sin(q1) -
,→ (4967757600021511*cos(q4)*(cos(q3)*((4967757600021511*cos(q1)*sin(q2))/81129638414606681695789005144064
,→ + (4967757600021511*cos(q2)*sin(q1))/81129638414606681695789005144064) +
,→ sin(q3)*(cos(q1)*cos(q2) - sin(q1)*sin(q2))))/81129638414606681695789005144064 +
,→ (4967757600021511*sin(q4)*(sin(q3)*((4967757600021511*cos(q1)*sin(q2))/81129638414606681695789005144064
,→ + (4967757600021511*cos(q2)*sin(q1))/81129638414606681695789005144064) -
,→ cos(q3)*(cos(q1)*cos(q2) - sin(q1)*sin(q2))))/81129638414606681695789005144064,
,→ sin(q4)*(sin(q3)*((4967757600021511*cos(q1)*sin(q2))/81129638414606681695789005144064 +
,→ (4967757600021511*cos(q2)*sin(q1))/81129638414606681695789005144064) - cos(q3)*(cos(q1)*cos(q2)
,→ - sin(q1)*sin(q2))) - (4967757600021511*cos(q2)*sin(q1))/81129638414606681695789005144064 -
,→ cos(q4)*(cos(q3)*((4967757600021511*cos(q1)*sin(q2))/81129638414606681695789005144064 +
,→ (4967757600021511*cos(q2)*sin(q1))/81129638414606681695789005144064) + sin(q3)*(cos(q1)*cos(q2)
,→ - sin(q1)*sin(q2))) - (4967757600021511*cos(q1)*sin(q2))/81129638414606681695789005144064,
,→ (29*cos(q3)*(cos(q1)*cos(q2) - sin(q1)*sin(q2)))/100 - (2833*cos(q2)*sin(q1))/10000 -
,→ (29*sin(q3)*((4967757600021511*cos(q1)*sin(q2))/81129638414606681695789005144064 +
,→ (4967757600021511*cos(q2)*sin(q1))/81129638414606681695789005144064))/100 -
,→ (2833*cos(q1)*sin(q2))/10000]
15

[ cos(q4)*(sin(q3)*((4967757600021511*cos(q1)*cos(q2))/81129638414606681695789005144064 -
,→ (4967757600021511*sin(q1)*sin(q2))/81129638414606681695789005144064) + cos(q3)*(cos(q1)*sin(q2)
,→ + cos(q2)*sin(q1))) +
,→ sin(q4)*(cos(q3)*((4967757600021511*cos(q1)*cos(q2))/81129638414606681695789005144064 -
,→ (4967757600021511*sin(q1)*sin(q2))/81129638414606681695789005144064) - sin(q3)*(cos(q1)*sin(q2)
,→ + cos(q2)*sin(q1))), sin(q1)*sin(q2) - cos(q1)*cos(q2) +
,→ (4967757600021511*cos(q4)*(cos(q3)*((4967757600021511*cos(q1)*cos(q2))/81129638414606681695789005144064
,→ - (4967757600021511*sin(q1)*sin(q2))/81129638414606681695789005144064) -
,→ sin(q3)*(cos(q1)*sin(q2) + cos(q2)*sin(q1))))/81129638414606681695789005144064 -
,→ (4967757600021511*sin(q4)*(sin(q3)*((4967757600021511*cos(q1)*cos(q2))/81129638414606681695789005144064
,→ - (4967757600021511*sin(q1)*sin(q2))/81129638414606681695789005144064) +
,→ cos(q3)*(cos(q1)*sin(q2) + cos(q2)*sin(q1))))/81129638414606681695789005144064,
,→ (4967757600021511*cos(q1)*cos(q2))/81129638414606681695789005144064 -
,→ (4967757600021511*sin(q1)*sin(q2))/81129638414606681695789005144064 +
,→ cos(q4)*(cos(q3)*((4967757600021511*cos(q1)*cos(q2))/81129638414606681695789005144064 -
,→ (4967757600021511*sin(q1)*sin(q2))/81129638414606681695789005144064) - sin(q3)*(cos(q1)*sin(q2)
,→ + cos(q2)*sin(q1))) -
,→ sin(q4)*(sin(q3)*((4967757600021511*cos(q1)*cos(q2))/81129638414606681695789005144064 -
,→ (4967757600021511*sin(q1)*sin(q2))/81129638414606681695789005144064) + cos(q3)*(cos(q1)*sin(q2)
,→ + cos(q2)*sin(q1))), (2833*cos(q1)*cos(q2))/10000 - (2833*sin(q1)*sin(q2))/10000 +
,→ (29*sin(q3)*((4967757600021511*cos(q1)*cos(q2))/81129638414606681695789005144064 -
,→ (4967757600021511*sin(q1)*sin(q2))/81129638414606681695789005144064))/100 +
,→ (29*cos(q3)*(cos(q1)*sin(q2) + cos(q2)*sin(q1)))/100]
[
,→ - cos(q3)*sin(q4) - cos(q4)*sin(q3),
,→ (4967757600021511*sin(q3)*sin(q4))/81129638414606681695789005144064 -
,→ (4967757600021511*cos(q3)*cos(q4))/81129638414606681695789005144064 -
,→ 4967757600021511/81129638414606681695789005144064,
,→ sin(q3)*sin(q4) - cos(q3)*cos(q4) +
,→ 24678615572571482867467662723121/6582018229284824168619876730229402019930943462534319453394436096,
,→ 223512153832241422145555990032836983/811296384146066816957890051440640000 - (29*sin(q3))/100]
[
,→ 0,
,→ 0,
,→ 0,
,→ 1]

Transformadas Homogêneas (Peter Corke):

[ cos(q1), -sin(q1), 0, 0]
[ sin(q1), cos(q1), 0, 0]
[ 0, 0, 1, 551/2000]
[ 0, 0, 0, 1]

[ cos(q2), -(4967757600021511*sin(q2))/81129638414606681695789005144064,
,→ -sin(q2), 0]
[ sin(q2), (4967757600021511*cos(q2))/81129638414606681695789005144064,
,→ cos(q2), 0]
[ 0, -1,
,→ 4967757600021511/81129638414606681695789005144064, 0]
[ 0, 0,
,→ 0, 1]

[ cos(q3), -sin(q3), 0, (29*cos(q3))/100]


[ sin(q3), cos(q3), 0, (29*sin(q3))/100]
[ 0, 0, 1, 0]
[ 0, 0, 0, 1]
16

[ cos(q4), -(4967757600021511*sin(q4))/81129638414606681695789005144064,
,→ -sin(q4), 0]
[ sin(q4), (4967757600021511*cos(q4))/81129638414606681695789005144064,
,→ cos(q4), 0]
[ 0, -1,
,→ 4967757600021511/81129638414606681695789005144064, 2833/10000]
[ 0, 0,
,→ 0, 1]

[ - cos(q4)*(sin(q3)*((4967757600021511*cos(q1)*sin(q2))/81129638414606681695789005144064 +
,→ (4967757600021511*cos(q2)*sin(q1))/81129638414606681695789005144064) - cos(q3)*(cos(q1)*cos(q2)
,→ - sin(q1)*sin(q2))) -
,→ sin(q4)*(cos(q3)*((4967757600021511*cos(q1)*sin(q2))/81129638414606681695789005144064 +
,→ (4967757600021511*cos(q2)*sin(q1))/81129638414606681695789005144064) + sin(q3)*(cos(q1)*cos(q2)
,→ - sin(q1)*sin(q2))), cos(q1)*sin(q2) + cos(q2)*sin(q1) -
,→ (4967757600021511*cos(q4)*(cos(q3)*((4967757600021511*cos(q1)*sin(q2))/81129638414606681695789005144064
,→ + (4967757600021511*cos(q2)*sin(q1))/81129638414606681695789005144064) +
,→ sin(q3)*(cos(q1)*cos(q2) - sin(q1)*sin(q2))))/81129638414606681695789005144064 +
,→ (4967757600021511*sin(q4)*(sin(q3)*((4967757600021511*cos(q1)*sin(q2))/81129638414606681695789005144064
,→ + (4967757600021511*cos(q2)*sin(q1))/81129638414606681695789005144064) -
,→ cos(q3)*(cos(q1)*cos(q2) - sin(q1)*sin(q2))))/81129638414606681695789005144064,
,→ sin(q4)*(sin(q3)*((4967757600021511*cos(q1)*sin(q2))/81129638414606681695789005144064 +
,→ (4967757600021511*cos(q2)*sin(q1))/81129638414606681695789005144064) - cos(q3)*(cos(q1)*cos(q2)
,→ - sin(q1)*sin(q2))) - (4967757600021511*cos(q2)*sin(q1))/81129638414606681695789005144064 -
,→ cos(q4)*(cos(q3)*((4967757600021511*cos(q1)*sin(q2))/81129638414606681695789005144064 +
,→ (4967757600021511*cos(q2)*sin(q1))/81129638414606681695789005144064) + sin(q3)*(cos(q1)*cos(q2)
,→ - sin(q1)*sin(q2))) - (4967757600021511*cos(q1)*sin(q2))/81129638414606681695789005144064,
,→ (29*cos(q3)*(cos(q1)*cos(q2) - sin(q1)*sin(q2)))/100 - (2833*cos(q2)*sin(q1))/10000 -
,→ (29*sin(q3)*((4967757600021511*cos(q1)*sin(q2))/81129638414606681695789005144064 +
,→ (4967757600021511*cos(q2)*sin(q1))/81129638414606681695789005144064))/100 -
,→ (2833*cos(q1)*sin(q2))/10000]
[ cos(q4)*(sin(q3)*((4967757600021511*cos(q1)*cos(q2))/81129638414606681695789005144064 -
,→ (4967757600021511*sin(q1)*sin(q2))/81129638414606681695789005144064) + cos(q3)*(cos(q1)*sin(q2)
,→ + cos(q2)*sin(q1))) +
,→ sin(q4)*(cos(q3)*((4967757600021511*cos(q1)*cos(q2))/81129638414606681695789005144064 -
,→ (4967757600021511*sin(q1)*sin(q2))/81129638414606681695789005144064) - sin(q3)*(cos(q1)*sin(q2)
,→ + cos(q2)*sin(q1))), sin(q1)*sin(q2) - cos(q1)*cos(q2) +
,→ (4967757600021511*cos(q4)*(cos(q3)*((4967757600021511*cos(q1)*cos(q2))/81129638414606681695789005144064
,→ - (4967757600021511*sin(q1)*sin(q2))/81129638414606681695789005144064) -
,→ sin(q3)*(cos(q1)*sin(q2) + cos(q2)*sin(q1))))/81129638414606681695789005144064 -
,→ (4967757600021511*sin(q4)*(sin(q3)*((4967757600021511*cos(q1)*cos(q2))/81129638414606681695789005144064
,→ - (4967757600021511*sin(q1)*sin(q2))/81129638414606681695789005144064) +
,→ cos(q3)*(cos(q1)*sin(q2) + cos(q2)*sin(q1))))/81129638414606681695789005144064,
,→ (4967757600021511*cos(q1)*cos(q2))/81129638414606681695789005144064 -
,→ (4967757600021511*sin(q1)*sin(q2))/81129638414606681695789005144064 +
,→ cos(q4)*(cos(q3)*((4967757600021511*cos(q1)*cos(q2))/81129638414606681695789005144064 -
,→ (4967757600021511*sin(q1)*sin(q2))/81129638414606681695789005144064) - sin(q3)*(cos(q1)*sin(q2)
,→ + cos(q2)*sin(q1))) -
,→ sin(q4)*(sin(q3)*((4967757600021511*cos(q1)*cos(q2))/81129638414606681695789005144064 -
,→ (4967757600021511*sin(q1)*sin(q2))/81129638414606681695789005144064) + cos(q3)*(cos(q1)*sin(q2)
,→ + cos(q2)*sin(q1))), (2833*cos(q1)*cos(q2))/10000 - (2833*sin(q1)*sin(q2))/10000 +
,→ (29*sin(q3)*((4967757600021511*cos(q1)*cos(q2))/81129638414606681695789005144064 -
,→ (4967757600021511*sin(q1)*sin(q2))/81129638414606681695789005144064))/100 +
,→ (29*cos(q3)*(cos(q1)*sin(q2) + cos(q2)*sin(q1)))/100]
17

[
,→ - cos(q3)*sin(q4) - cos(q4)*sin(q3),
,→ (4967757600021511*sin(q3)*sin(q4))/81129638414606681695789005144064 -
,→ (4967757600021511*cos(q3)*cos(q4))/81129638414606681695789005144064 -
,→ 4967757600021511/81129638414606681695789005144064,
,→ sin(q3)*sin(q4) - cos(q3)*cos(q4) +
,→ 24678615572571482867467662723121/6582018229284824168619876730229402019930943462534319453394436096,
,→ 223512153832241422145555990032836983/811296384146066816957890051440640000 - (29*sin(q3))/100]
[
,→ 0,
,→ 0,
,→ 0,
,→ 1]

4.1.4 d). Crie sua animação, sugira ângulos iniciais e finais e execute sua trajetória. (Material
do Peter Corke)

clc, clear all, close all


import ETS2.*

L0L1 = 0.2755;
L2 = 0.29;
L3 = 0.1233;
L4 = 0.16;
d2r = pi/180;
syms q1 q2 q3 q4 real

% juntas
J0 = Revolute('d', L0L1);
J1 = Revolute('alpha', -90*d2r);
J2 = Revolute('a', L2);
J3 = Revolute('d', L3+L4, 'alpha', -90*d2r);

% conectando as juntas em um robo


robot = SerialLink([J0 J1 J2 J3], 'name', 'Mico', 'manufacturer', 'Kinova');
robot.teach
18

Figura 4.1: Modelo do Manipulador MICO com 4 DOF

4.2 2-D ETERMINE A C INEMÁTICA I NVERSA DO M ANIPULADOR MICO COM 4 DOF.


19

Figura 4.2: Figura com Vista Lateral e de Topo

4.2.1 a). Geometria (Lei de Cossenos e Senos)

Solução 1:

θ1 = atan2(y, x) = 0 (4.6)

p
α = atan2(z − (L0 + L1), x2 + y 2 ) = atan2(0.7 − 0.2755, 0) = 1.5708rad = 90◦ (4.7)

p
R= x2 + y 2 + (z − (L0 + L1 ))2 = 0.7 − 0.2755 = 0.4245 (4.8)

R2 + L22 − (L3 − L4 )2
 
ψ = arccos (4.9)
2L2 R

0.42452 + 0.292 − (0.1233 − 0.16)2


 
ψ = arccos = 0.7265rad = 41.6390◦ (4.10)
2 · 0.29 · 0.4245

θ2 = −(α + ψ) = −131.63 (4.11)

L22 + (L3 + L4 )2 − (x2 + y 2 + (z − (L0 + L1 ))2 )


 
θ3 = arcsin (4.12)
2L2 (L3 + L4)
20

0.292 + (0.1233 + 0.16)2 − (0.7 + 0.2755)2


 
θ3 = arcsin (4.13)
2 · 0.29 · (0.1233 + 0.16)

θ3 = −0.0966rad = −5.53◦ (4.14)

Solução 2:

θ1 = atan2(y, x) = 0 (4.15)

θ2 = −(α − ψ) = −48.37 (4.16)

L22 + (L3 + L4 )2 − (x2 + y 2 + (z − (L0 + L1 ))2 )


 
θ3 = −π − arcsin (4.17)
2L2 (L3 + L4)

0.292 + (0.1233 + 0.16)2 − (0.7 + 0.2755)2


 
θ3 = −π − arcsin (4.18)
2 · 0.29 · (0.1233 + 0.16)

θ3 = −π + 0.0966 = −3.05rad = −174.47◦ (4.19)

4.2.2 b). Utilize o recurso computacional do Peter Corke (ikine_sym e/ou ikcon), elabore a
programação comente sobre os resultados obtidos entre a) e b).

clc, clear all, close all


import ETS2.*

L0L1 = 0.2755;
L2 = 0.29;
L3 = 0.1233;
L4 = 0.16;
d2r = pi/180;
syms q1 q2 q3 q4 real

% juntas
J0 = Revolute('d', L0L1);
J1 = Revolute('alpha', -90*d2r);
J2 = Revolute('a', L2);
J3 = Revolute('d', L3+L4, 'alpha', -90*d2r);

% conectando as juntas em um robo


robot = SerialLink([J0 J1 J2 J3], 'name', 'Mico', 'manufacturer', 'Kinova');
21

% posição e orientação desejadas do efetuador


T_desired = [0, 0, 1, 0.2833
0, -1, 0, 0;
1, 0, 0, 0.5655;
0, 0, 0, 1];

% ikine para calcular as posições articulares


q_solutions_ikine = robot.ikine(T_desired, 'mask', [1 1 1 0 0 0])

% ikcon para calcular as posições articulares


q_solutions_ikcon = robot.ikcon(T_desired)

q_solutions_ikine =

-0.7854 -0.7854 -1.5708 0

q_solutions_ikcon =

-0.1782 -0.1782 -0.8296 -0.7412

4.3 3. Q UESTÃO SOBRE A FIGURA A SEGUIR :

Figura 4.3: Esquemático do manipulador na posição desejada (x = 0, y = 0 e z = 0.7 m)


22

4.3.1 Sugestão: Fizeram a cinemática direta e inversa, assim com os seus modelos matemáticos
e de simulação, determine x = 0, y = 0 e z mudam se você girar a primeira junta?

Para os pontos ao longo do eixo Z0 , θ0 não afeta a posição, mas afeta a orientação do efetuador final
do robô.
23

5 CONCLUSÕES

Observamos e documentamos a teoria necessária de cinemática e da notação de Denavit-Hartenberg


para desenvolver o relatório. O mesmo foi realizado tendo como base as aulas ministradas pelo do-
cente e os livros teóricos denotados na Bibliografia.
Em um primeiro momento, conforme a proposta do laboratório, a cinemática direta de um mani-
pulador MICO com 4 DOF deveria ser determinada. Os parâmetros DH puderam ser encontrados,
bem como a transformada homogênea de cada junta. Em seguida, com o toolbox do Perter Corke, o
mesmo seria realizado para que fosse possível efetuar uma análise comparativa. Ao final dessa etapa,
foi possível criar a simulação, sugerindo ângulos iniciais e finais e executando sua trajetória.
Em seguida, foi determinada a cinemática inversa do mesmo manipulador pela lei de cossenos e se-
nos. No mais, utilizando o recurso computacional do Peter Corke, foi elaborada a programação com
as funções ikcon e ikine.
Por fim, após as cinemáticas direta e inversa, foi colocado em questão o efeito de transformações
elementares na posição e orientação do robô. Em geral, foi possível verificar que os programas res-
ponderam adequadamente.
24

Bibliografia

[1] Corke, P. Robotics, Vision and Control: Fundamental Algorithms in MATLAB. [S.l.]: Springer,
2017.

[2] Paul R. P. Mathematics, Programming, and Control : the Computer Control of Robot Manipula-
tors. [S.l.]: The MIT Press, 1981.

[3] Santos V. M. F. Robótica Industrial. Universidade de Aveiro, 2003-2004.

[4] Peter Corke. ROBOTICS ToolBox. 2022. Disponível em:


<https://petercorke.com/ToolBoxes/robotics-ToolBox/>.

Você também pode gostar