Você está na página 1de 34

Método de

Denavit - Hartenberg
Robótica RENATA MERCANTE
Método de
Denavit - Hartenberg
▪ Descreve de forma geral uma sequência articulada de juntas.
▪ Descreve como funciona mecanicamente qualquer robô
▪ Cada junta possui quatro parâmetros
▪ Permite calcular a posição da ferramenta e de todas as juntas de forma matricial.
▪ Pode ser usado para cálculos manuais, mas geralmente é empregado em
algoritmos para computador.

Especifica robôs com um conjunto de valores de forma que seja possível encontrar o ponto XYZ de
qualquer junta do robô. Cada junta é especificada por 4 parâmetros. Geralmente o robô possui uma
ferramenta na última junta. E a posição dessa ferramenta é importante ser calculada.
Método de
Denavit - Hartenberg

▪ Um robô é descrito como uma série


de elos e juntas.
▪ Os elos são rígidos
▪ As juntas podem ser mover

▪ Manipulador de elos sequenciais.


▪ Há uma ferramenta ao final do robô
que se deseja conhecer a posição
(X,Y,Z) dado a posição (X,Y,Z) da
primeira junta.
Manipulador de elos sequenciais
▪ Cada junta é conectada, através de
um elo, com a próxima junta.
▪ Cada junta conecta 2 elos Junta 1

▪ Cada elo conecta 2 juntas


Elo 2
▪ Exceto o primeiro e o último elo

▪ N juntas
▪ N + 1 Elos Elo 1
Junta 0

Manipulador simples com


Elo 0 dois eixos sem movimento
em Z.
Suporte de haste
que liga o chão
Parâmetros DH

▪ Cada junta deve ter seu próprio eixo


de coordenadas (X, Y, Z).
▪ O objetivo do método DH é transferir
uma posição (X,Y,Z) de um eixo de
coordenada para outro. De uma
junta para a outra.
▪ Encontrar a posição da outra junta
dada a posição da junta anterior.

Para passar de uma junta para outra existe uma


multiplicação matricial que o software faz. A ideia é
chegar nos parâmetros, colocar no software e simular.
Parâmetros DH
▪ Para encontrar a posição de uma
junta a partir da anterior, precisa-se
de 4 parâmetros.
▪ θ – representa uma rotação no eixo
dos Z.
▪ d – representa uma translação em Z
▪ a – representa uma translação em X
▪ α – representa uma rotação no eixo
dos X

▪ Um θ = 90 representa que há uma


rotação de 90º entre uma junta e
outra.

Denavit usa só parâmetros em X e Z. O eixo Y é calculado pelos


Translação = linear = movimento retilíneo outros eixos senão precisaria de 6 parâmetros e só têm 4.
Parâmetros DH para um robô de dois elos
θ – rotação no eixo dos Z.
d – translação em Z Junta θ d a α
a – translação em X
α – rotação no eixo dos X 1 q1 0 a1 0
2 q2 0 a2 0

▪ O eixo dos Z está para fora da tela

▪ Os valores θ são variáveis (que se representa por q1 e q2).


Ventilador que gira em torno do centro. As pás giram em torno
do eixo Z que seria uma reta do centro do ventilador até o
chão. Mas, elas não se movimentam em Z.

▪ d é zero pois o robô está no mesmo eixo dos Z. Movimento


linear da junta Z. Não acontece, só se a pá cair girando em
nossa cabeça.

▪ a é a distância/tamanho do braço do robô (que é o eixo dos X


Z se q1=q2=0). É o movimento linear em X, ou seja, de uma
junta para outra há o tamanho do braço do robô.

▪ α representa uma rotação no eixo X (em torno dele). Isso não


acontece. Só roda em torno do Z.

Os elos giram em torno do Z. Toda vez que o elo girar em torno


Só tem movimento XY e não tem Z.
do Z temos alpha = variável, por isso q1 e q2 para cada junta.
Robô de dois elos

▪ Colocando-se os dados da matriz


DH no Matlab pode-se simular o
robô.
▪ Usando o Toolbox de Robótica para
o MATLAB do Peter Corke
▪ O Matlab calcula a posição da
ferramenta da extremidade do robô,
a partir da posição da primeira junta,
usando as matrizes de
transformação homogênea.
Robô com três elos

▪ Comandos:

L(1) = Link([0 0 1 0],'standard');


L(2) = Link([0 0 1 0],'standard');
R = SerialLink(L);
q = [0 0]; %posição inicial
R.plot(q,'noname'); R.teach;
E a matemática?
▪ A ideia é obter a coordenada da próxima junta, tendo as coordenadas da junta
anterior.
▪ Se a primeira junta tem coordenadas J1, por exemplo, a próxima junta terá
coordenada:

J2 = J1 · Rz(θ1) · Tz(d1) · Tx(a1) · Rx(α1)


▪ Essas são conhecidas como matrizes de transformação homogênea:
▪ J1 e J2 são matrizes contendo as coodenadas X, Y e Z das juntas
▪ Rz (matriz de rotação em Z)
▪ Tz (matriz de translação em Z) Matrix J1 as 3 coordenadas
formam uma matriz.
▪ Tx (matriz de translação em X) Para encontrar J2 que é a
▪ Rx (matriz de rotação em X) posição da segunda junta,
multiplica-se por 4 matrizes.
Duas matrizes de rotação e
duas de translação.
E a matemática?
▪ Para obter a coordenada da junção J3, temos:

J3 = J2 · Rz(θ2) · Tz(d2) · Tx(a2) · Rx(α2)


▪ E assim por diante. Os parâmetros DH permitem transformar as coordenadas de
uma junta na coordenada da próxima.
▪ As matrizes homogêneas de transformação estão mostradas abaixo e são usadas
pelo software para calcular a posição de todas as coordenadas das juntas do robô.

Só tem um T porque a
Essas matrizes são necessárias para transformar uma coordenada de translação em x ou z
uma junta para outra. São matrizes de rotação e translação. usa a mesma matriz.
Exemplo de parâmetros DH
▪ Para encontrar os parâmetros DH
desse robô mais complexo, deve-se
primeiro obter as medidas de
comprimento dos elos.
▪ Neste exemplo, todos os
comprimentos serão considerados
como “1”. Pode ser 1m ou 1cm. Não
importa.
▪ Depois deve-se colocar todos os
eixos X e Z em todas as juntas de
rotação.
Exemplo de parâmetros DH

▪ Colocando os eixos Z:
▪ Todos os eixos Z de todas as juntas
devem ser colocados na direção em
que estas giram!
▪ Os eixos Z estão em vermelho...
Exemplo de parâmetros DH
Z

X
▪ Colocando os eixos X:
▪ Os eixos X devem ser
perpendiculares ao Z da junta.
▪ Também devem ser perpendiculares
ao eixo Z da junta anterior.
▪ Eixos X em azul...
Todas as juntas giram em torno do eixo
θ – rotação no eixo dos Z.
Z (vermelho).
d – translação em Z
a não pode ser uma variável porque não
a – translação em X
se mexe. Quando algo é variável no
α – rotação no eixo dos X
Denavit significa que pode se mexer.

Exemplo de parâmetros DH
▪ Em θ temos q0, q1 e q2 pois são Z
todas juntas de rotação.
X
▪ Indo da junta T para a junta V há 2
movimentos: um em Z e outro em X,
ou seja, uma translação no eixo de
rotação (Z) e uma translação no eixo
perpendicular à rotação (X).
▪ A primeira junta (T) d=1 e a=1.

Junta θ d a α
0 (T) q0 1 1
1 (V) q1
2 (R) q2
θ – rotação no eixo dos Z.
d – translação em Z
a – translação em X
α – rotação no eixo dos X

Exemplo de parâmetros DH
Z
▪ Indo da junta V para a junta R temos
uma translação no eixo X
perpendicular à rotação (Eixo X).
▪ A segunda junta (V) d=0 e a=1.

Junta θ d a α
0 (T) q0 1 1
1 (V) q1 0 1
2 (R) q2

Para d de V para R o eio Z de V está na mesma direção do eixo Z de R. A direção do eixo X também.
Mas, o eixo X está mais a frente.
θ – rotação no eixo dos Z.
d – translação em Z
a – translação em X
α – rotação no eixo dos X

Exemplo de parâmetros DH
Z
▪ Indo da junta R para a ferramenta
temos uma translação no eixo X
perpendicular à rotação. (Eixo X)
▪ A terceira junta (R) d=0 e a=1.

Junta θ d a α
0 (T) q0 1 1
1 (V) q1 0 1
2 (R) q2 0 1
Exemplo de parâmetros DH
▪ Valores de α:
Z
▪ Toda vez que não se modificar o
eixo Z, α=0 X
▪ Quando modificar, usar a regra da
mão direita.

Junta θ d a α
0 (T) q0 1 1
1 (V) q1 0 1 0
2 (R) q2 0 1 0
Exemplo de parâmetros DH
▪ Valores de α:
Z
▪ Alinhe o polegar da mão direita no eixo X
da junta T e rode para a o eixo X da junta
V. X

▪ Se for na direção horária temos α = -90

▪ Se for na direção anti-horária temos α = 90

Junta θ d a α
0 (T) q0 1 1 -90
1 (V) q1 0 1 0
2 (R) q2 0 1 0
Robô com três elos

▪ Colocando-se os dados da matriz


DH no Matlab pode-se simular o
robô.
▪ Usando o Toolbox de Robótica para
o MATLAB do Peter Corke
▪ O Matlab calcula a posição da
ferramenta da extremidade do robô,
a partir da posição da primeira junta,
usando as matrizes de
transformação homogênea.
Ignorar (sempre 0 posição inicial)
Robô com três elos d

▪ Comandos: a
α
L(1) = Link([0 1 1 -pi/2],'standard');
L(2) = Link([0 0 1 0],'standard');
L(3) = Link([0 0 1 0],'standard');
R = SerialLink(L);
q = [0 0 0]; %posição inicial
R.plot(q,'noname'); R.teach;
Exemplo de DH: manipulador Stanford
▪ Nesse exemplo mais complexo
temos 6 juntas e a ferramenta. 2
▪ Note que existe uma junta 1
prismática!
1
▪ Os parâmetros de DH permitem 1
encontrar a posição de todas as 1 1
juntas do robô. Além de simular sua
atuação por software!
▪ Neste exemplo todas as medidas
serão igual a 1, menos a junta
prismática que será igual a 2. (a
escala não é necessária)
Exemplo de DH: manipulador Stanford
▪ Colocar os eixos Z!
▪ O eixo Z deve ser o eixo de rotação
das juntas. 3

▪ Na junta prismática, o eixo Z deve ser 4


a junta na direção do movimento. 2

▪ Atenção que existem diferentes


direções para a colocação do eixo Z. 5
Ou seja, é possível colocar o eixo Z 6
1
em outros locais diferentes dos
colocados. E dá o mesmo resultado.
No entanto, todos chegam ao mesmo
robô!
Exemplo de DH: manipulador Stanford

▪ Colocar os eixos X! 3

▪ O eixo X deve ser perpendicular ao 4


2
eixo dos Z
▪ Pense em 3D! Gire o robô para a
posição em que torne mais fácil a 5 6
1
colocação dos eixos!
Exemplo de DH: manipulador Stanford
θ – representa uma rotação no eixo dos Z.
▪ Colocar as variáveis “q” nas juntas de d – representa uma translação em Z
rotação a – representa uma translação em X
α – representa uma rotação no eixo dos X
▪ A junta prismática movimenta na 3
direção de Z e por isso θ = 0 e o
parâmetro passa a ser d2!
4
2
Junta θ d a α
1 q0
2 q1 5 6
1
3 0 d2
4 q3
5 q4
6 q5
Exemplo de DH: manipulador Stanford
θ – representa uma rotação no eixo dos Z.
▪ Entre a junta 1 e a junta 2 temos d – representa uma translação em Z
uma translação em Z, logo d=1. a – representa uma translação em X
α – representa uma rotação no eixo dos X

▪ O mesmo entre a junta 2 e 3: d=1 3


4
2
Junta θ d a α
1 q0 1
2 q1 1 5 6
1
3 0 d2
4 q3
5 q4
6 q5

d=setas vermelhas
Exemplo de DH: manipulador Stanford
▪ Entre a junta 3 e a junta 4 temos uma
translação em Z (junta prismática)
θ – representa uma rotação no eixo dos Z.
▪ O mesmo entre a junta 4 e 5: d=1 d – representa uma translação em Z
a – representa uma translação em X
α – representa uma rotação no eixo dos X
▪ Entre a junta 5 e 6: d=1
3
▪ Entre a junta 6 e a ferramenta: d=1
4
2
Junta θ d a α
1 q0 1
2 q1 1 5 6
1
3 0 d2
4 q3 1
5 q4 0
6 q5 1

Em d de 5 para 6 não tem movimento em Z só em X.


De 2 para 3 precisa apenas
deslocar em Z e rodar em X.
Não precisa deslocar em X
(translação retilíneo).

Exemplo de DH: manipulador Stanford


▪ Verifique que não há deslocamento
no eixo dos X ao longo de todo o
robô com exceção de 5 para 6.
Dessa forma a = 0 em todos e a=1 3
de 5 para 6.
4
2
Junta θ d a α
1 q0 1 0
2 q1 1 0 5 6
1
3 0 d2 0
4 q3 1 0
5 q4 0 1
6 q5 1 0

Não há movimento translação (retilíneo) em X de uma junta para outra om exceção de 5 para 6.
Denavit não é movimento do robô, é movimento dos eixos das juntas, de uma junta para outra.
Exemplo de DH: manipulador Stanford
▪ Para encontrar α, acompanhe o eixo dos X
das juntas usando o polegar da mão
direita.

▪ Rodando no sentido horário temos α=-90 e 3


no sentido anti-horário temos α = 90
4
2
Junta θ d a α
1 q0 1 0
2 q1 1 0 5 6
1
3 0 d2 0
4 q3 1 0
5 q4 1 1
6 q5 1 0
Exemplo de DH: manipulador Stanford
▪ Da junta 1 para a 2 sentido horário
α = -90
▪ Da junta 2 para a 3 sentido anti- 3
horário α = 90
4
2
Junta θ d a α
1 q0 1 0 -90
2 q1 1 0 90 5 6
1
3 0 d2 0
4 q3 1 0
5 q4 0 1
6 q5 1 0

De 1 para 2 são 15h e passou para 16h então sentido horário seguindo eixo X para alfa (azul).
Exemplo de DH: manipulador Stanford
▪ Da junta 3 para a 4 não há
movimentação: α = 0
▪ Da junta 4 para a 5 sentido horário : 3
α = -90
4
2
Junta θ d a α
1 q0 1 0 -90
2 q1 1 0 90 5 6
1
3 0 d2 0 0
4 q3 1 0 -90
5 q4 0 1
6 q5 1 0
Exemplo de DH: manipulador Stanford
▪ Da junta 5 para a 6 sentido anti-
horário : α = 90
▪ Da junta 6 para a ferramenta não há 3
movimentação: α = 0
4
2
Junta θ d a α
1 q0 1 0 -90
2 q1 1 0 90 5 6
1
3 0 d2 0 0
4 q3 1 0 -90
5 q4 0 1 90
6 q5 1 0 0
Robô manipulador Stanford

▪ Colocando-se os dados da matriz


DH no Matlab pode-se simular o
robô.
▪ Usando o Toolbox de Robótica para
o MATLAB do Peter Corke
▪ O Matlab calcula a posição da
ferramenta da extremidade do robô,
a partir da posição da primeira junta,
usando as matrizes de
transformação homogênea.
Robô com três elos
▪ Comandos:

L(1) = Link([0 1 0 -pi/2],'standard');


L(2) = Link([0 1 0 +pi/2],'standard');
L(3) = Prismatic('theta',0,'a',0,'alpha',0,'standard','qlim',[0 2]);
L(4) = Link([0 1 0 -pi/2],'standard');
L(5) = Link([0 0 1 +pi/2],'standard');
L(6) = Link([0 1 0 0],'standard');
R = SerialLink(L);
q = [0 0 0 0 0 0]; %posição inicial
R.plot(q,'noname'); R.teach;

Você também pode gostar