PRÁCTICA II: Parámetros Denavit - Hartenberg

González Chávez Rolando

MARCO TEÓRICO

1. Transformaciones

Una transformación consiste en una
aplicación que hace corresponder a
cada punto P (x,y,z) a otro punto P’
(x’,y’,z’). Las transformaciones más
usuales son las de traslación,
simetría y rotación.

1.1. Transformación matricial de
rotación

La trasformación matricial de rotación
es la siguiente:

() [


] [

] [

]

[

] [


] [

] … (1)

Sin embargo, la expresión (1)
determina la rotación en R
2
, para
obtener la expresión para R
3
, por
inspección, se sabe que la rotación
es exclusiva alrededor del eje z, por
lo que las coordenadas z se
mantienen constantes, por lo tanto, la
rotación alrededor de z es

[

] [



] [

] … (2)

Semejante es la matriz de rotación
alrededor del eje x

[

] [



] [

] … (3)

Y otra para la rotación alrededor del
eje y


[

] [



] [

] … (4)

Algo importante a considerar en las
transformaciones matriciales de
rotación es que no son conmutativas.

1.2. Transformación matricial de
traslación

Las traslaciones se entienden como
movimientos directos sin cambios de
orientación (mantienen tamaño y
forma); generalmente se usan
coordenadas homogéneas para
representar la traslación mediante
una matriz y poder así expresarla
como una transformación lineal sobre
un espacio de dimensión superior.

Por lo tanto, un vector tridimensional
v = (x
i
, y
j
, z
k
) puede ser reescrito
utilizando cuatro coordenadas
homogéneas como v = (x
i
, y
j
, z
k
, 1).
En dichas condiciones una traslación
se representa de la siguiente forma:

[

] [






] [

] … (5)

Al efectuar la multiplicación puede
observarse en (6) que se genera un
vector con un resultado de
desplazamiento en el respectivo eje:

[

] [


] … (6)

La inversa de una matriz de traslación
puede obtenerse cambiando el signo
de la dirección del vector de
desplazamiento. Así mismo, el
producto de dos matrices de
traslación es:

Debido a que la suma de vectores es
conmutativa, la multiplicación de
matrices de traslación también es
conmutativa.

2. Parámetros Denavit - Hartenberg

Para un estudio analítico de la
geometría del movimiento de un
brazo robótico con respecto a un
sistema de coordenadas fijo en
función del tiempo sin considerar las
fuerzas que originan el movimiento.

Pare ello se utilizan los parámetros
de Denavit – Hartenberg (D - H)
permite referir las coordenadas de la
herramienta o extremo del robot; para
empezar, se deben seguir las reglas
para definir los sistemas de
coordenadas en base a los cuales se
construyen las matrices de
transformación homogéneas (rotación
y traslación de coordenadas). La
representación de D – H emplea
cuatro parámetros que describen
completamente la geometría de cada
eslabón, estos parámetros son:

- θ
i
: Ángulo en torno a z
i – 1
de x
i – 1
a x
i

usando la regla de la mano derecha.

- d
i
: Distancia a lo largo de z
i – 1
desde
el origen del sistema de coordenadas
S
i - 1
hasta la intersección de z
i – 1
a x
i
.


- a
i
: Distancia a lo largo de x
i
desde la
intersección de z
i – 1
con x
i
hasta el
origen del sistema S
i
o la distancia
más corta entre z
i – 1
y z
i
.

- α
i
: Ángulo en torno a x
i
de z
i – 1
a z
i

usando la regla de la mano derecha.

El procedimiento es el siguiente:

DH1: Numerar los eslabones i = 0, 1,
…, n (0 para la base fija y 1 para el
primer eslabón móvil).

DH2: Numerar las articulaciones i =
1,2, …, n (1 para el primer grado de
libertad, n para el último).

DH3: Para i = 0, 1, …, n – 1 fijar el eje
z
i
sobre la articulación i +1.

DH4: Sistema de coordenadas de la
base S
0
, situar el origen en cualquier
punto del eje z
0
de modo que x
0
y y
0

formen un sistema de mano derecha
con z
0
.

DH5: Para i = 1, 2, …, n fijar el origen
del sistema de coordenadas del
eslabón i, S
i
, en la intersección del eje
z
i
. Si ambos ejes se cortan, fijar el
origen en el punto de intersección. Si
ambos ejes son paralelos, fijar el
origen en la articulación i + 1.

DH6: Fijar x
i
en la línea perpendicular
común a z
i-1
y z
i
.

DH7: Fijar y
i
de modo que forme un
sistema de mano derecha con x
i
y z
i
.

DH8: Fijar el sistema de coordenadas
del extremo S
n
de modo que z
n

coincida con la dirección de z
n-1
y z
n
.
Establecer S
n
preferentemente en el
centro de la pinza o en la punta de la
herramienta que tenga el robot.
PRÁCTICA II: Parámetros Denavit - Hartenberg

González Chávez Rolando

DH9: Definir θ
i
como el ángulo que
habría de girar en torno a z
i-1
para
que x
i-1
y x
i
queden alineados.

DH10: Definir d
i
como la distancia
medida a lo largo de z
i-1
que habría
de desplazar S
i-1
para que x
i-1
y x
i

queden alineados.

DH11: Definir a
i
como la distancia
medida a lo largo de x
i
(que ahora
coincidiría con x
i-1
) que habría de
desplazar el nuevo S
i-1
para que su
origen coincida con el de S
i
.

DH12: Definir α
i
como el ángulo que
gira entorno a x
i
(que coincide con
x
i-1
) para que el nuevo sistema de
referencia S
i-1
coincida con S
i
.

DH13: Construir las matrices de
transformación empleando las
matrices de trasformación que se
expresan en (2), (3) y (5), siguiendo
el orden correspondiente mostrado:

… (7)

[




]

2.1. Aplicaciones

Los parámetros Denavit-Hartenberg
(DH) forman la parte básica de la
robótica, ya que son un estándar a la
hora de describir la geometría de un
brazo o manipulador robótico. Se
usan para resolver de forma trivial el
problema de la cinemática directa, y
como punto inicial para plantear hasta
el más complejo sistema
de cinemática inversa.
DESARROLLO

Se implementa una simulación en
Matlab
®
para mostrar los parámetros
DH, para ello se emplean las
matrices de transformación para
rotación sobre el eje z, rotación sobre
el eje x, traslación sobre el eje z y
traslación sobre el eje x rotación.

[

] … (8)

[

] … (9)

[

] … (10)

[

] … (11)

Para mostrar la simulación se
comienza estableciendo el área de
trabajo, es decir, se establece una
figura de 5 X 5 X 5 unidades, en
medio se establece la coordenada
(0, 0, 0) a partir de ahí se generan los
ejes de referencia que serán
mostrados en rojo.

Los ejes de referencia rojos
permanecerán fijos para visualizar
mejor el movimiento de los ejes que
se grafican posteriormente sobre
estos en color verde (Ver fig. 1).













Figura 1 Inicio de la simulación

Se establece un ciclo para realizar la
rotación de los ejes actuales, los ejes
graficados en verde rotarán sobre
cada eje z y x y se trasladarán sobre
cada eje z y x nuevo que se genere
tras cada transformación. En la fig. 2
se muestra el primer parámetro de
DH; rotación de 45° sobre el eje z.

























Figura 2 Rotación de 45° sobre el eje z.

Posteriormente se realiza el segundo
parámetro de DH, traslación de 3
unidades positivas sobre el nuevo eje
z, se muestra el resultado en la fig. 3,
as líneas grises muestran la posición
anterior.


















Figura 3 Traslación sobre el nuevo eje z, la
traslación es de 3 unidades tal y
como muestran las líneas
azules de referencia.

Después se realiza una traslación de
4 unidades sobre el nuevo eje x
(tercer parámetro de DH), el resultado
se muestra en la fig. 4; las líneas
grises de referencia muestran las
posiciones anteriores.




















Figura 4 Traslación de 4 unidades sobre el nuevo
eje x.

PRÁCTICA II: Parámetros Denavit - Hartenberg

González Chávez Rolando

Por último se obtiene el cuarto
parámetro de DH, rotación de 135°
sobre el nuevo eje x, el resultado se
muestra en la fig, 5, los ejes de
referencia grises representa a los
ejes anteriores, los ejes verdes
representan al sistema de referencia
final y los ejes rojos muestra el
sistema de referencia inicial.




























Figura 5 Rotación de 135° sobre el nuevo eje x.











FUENTES DE CONSULTA

Craig J. J. Róbotica. Tercera Edición.
Pearson Education. 2010.

Barrientos A., Peñín L.F., Balaguer,
R. Fundamentos de robótica.
McGraw Hill. 1997.

Kolman, B. y Hill, D. R. Álgebra
Lineal. Pearson Education, México,
2006.

Matrices y transformaciones.
Fascículo 21. Fundación Polar.
Venezuela: 2006.

Traslación. En Línea. Consultado el
09 de Septiembre, 2013.
Disponible en:
<http://es.wikipedia.org/wiki/Traslaci%
C3%B3n_(geometr%C3%ADa) >























ANEXOS

Se muestra el código empleado en
Matlab
®
:

function [] =
movEje3(gamma,dZ,dX,theta)

% Generación de los ejes de
referencia iniciales.
Eje=[0;1];
Ref=zeros(2,1);

% Graficación de los ejes de
referencia iniciales.
figure;
plot3(Eje,Ref,Ref,...
'r','LineWidth',2);
hold on;
grid on;
xlabel('X');
ylabel('Y');
zlabel('Z');
axis([-5,5,-5,5,-5,5])
plot3(Ref,Eje,Ref,...
'r','LineWidth',2);
plot3(Ref,Ref,Eje,...
'r','LineWidth',2);

A=plot3(Eje,Ref,Ref,...
'g','LineWidth',2);
B=plot3(Ref,Eje,Ref,...
'g','LineWidth',2);
C=plot3(Ref,Ref,Eje,...
'g','LineWidth',2);

X=[1;0;0;1];
Y=[0;1;0;1];
Z=[0;0;1;1];

RefX=[0;0;0;1];
RefY=[0;0;0;1];
RefZ=[0;0;0;1];

pause;

% Rotación sobre el eje Z.

for i=0:abs(gamma)

% Matriz de rotación sobre el
eje Z.

rZ=[cosd(i),-sind(i),0,0;...
sind(i),cosd(i),0,0;...
0,0,1,0;...
0,0,0,1];

Xplot=rZ*X;
Yplot=rZ*Y;
Zplot=rZ*Z;

delete(A)
delete(B)
delete(C)

A=plot3([0,Xplot(1)],...
[0,Xplot(2)],...
[0,Xplot(3)],...
'g','LineWidth',2);
B=plot3([0,Yplot(1)],...
[0,Yplot(2)],...
[0,Yplot(3)],...
'g','LineWidth',2);
C=plot3([0,Zplot(1)],...
[0,Zplot(2)],...
[0,Zplot(3)],...
'g','LineWidth',2);
pause(0.001);
end

pause;

% Traslación sobre el eje Z
actual.

for i=0:0.01:dZ

% Matriz de traslación sobre
el eje Z.

tZ=[1,0,0,0;...
0,1,0,0;...
0,0,1,i;...
0,0,0,1];

Xplot=rZ*tZ*X;
Yplot=rZ*tZ*Y;
Zplot=rZ*tZ*Z;

XplotR=rZ*tZ*RefX;
YplotR=rZ*tZ*RefY;
ZplotR=rZ*tZ*RefZ;

delete(A)
delete(B)
delete(C)

PRÁCTICA II: Parámetros Denavit - Hartenberg

González Chávez Rolando


A=plot3([XplotR(1),Xplot(1)],...

[XplotR(2),Xplot(2)],...

[XplotR(3),Xplot(3)],...
'g','LineWidth',2);

B=plot3([YplotR(1),Yplot(1)],...

[YplotR(2),Yplot(2)],...

[YplotR(3),Yplot(3)],...
'g','LineWidth',2);

C=plot3([ZplotR(1),Zplot(1)],...

[ZplotR(2),Zplot(2)],...

[ZplotR(3),Zplot(3)],...
'g','LineWidth',2);
pause(0.001);
end

pause;

% Traslación sobre el eje X
actual.

for i=0:0.01:dX

% Translación sobre el eje X.

tX=[1,0,0,i;...
0,1,0,0;...
0,0,1,0;...
0,0,0,1];

Xplot=rZ*tZ*tX*X;
Yplot=rZ*tZ*tX*Y;
Zplot=rZ*tZ*tX*Z;

XplotR=rZ*tZ*tX*RefX;
YplotR=rZ*tZ*tX*RefY;
ZplotR=rZ*tZ*tX*RefZ;

delete(A)
delete(B)
delete(C)


A=plot3([XplotR(1),Xplot(1)],...

[XplotR(2),Xplot(2)],...

[XplotR(3),Xplot(3)],...
'g','LineWidth',2);

B=plot3([YplotR(1),Yplot(1)],...

[YplotR(2),Yplot(2)],...

[YplotR(3),Yplot(3)],...
'g','LineWidth',2);

C=plot3([ZplotR(1),Zplot(1)],...

[ZplotR(2),Zplot(2)],...

[ZplotR(3),Zplot(3)],...
'g','LineWidth',2);
pause(0.001);
end

pause;

% Rotación de eje X actual.
for i=0:abs(theta)

% Rotación sobre el eje X.

rX=[1,0,0,0;...
0,cosd(i),-sind(i),0;...
0,sind(i),cosd(i),0;...
0,0,0,1];

Xplot=rZ*tZ*tX*rX*X;
Yplot=rZ*tZ*tX*rX*Y;
Zplot=rZ*tZ*tX*rX*Z;

XplotR=rZ*tZ*tX*rX*RefX;
YplotR=rZ*tZ*tX*rX*RefY;
ZplotR=rZ*tZ*tX*rX*RefZ;

delete(A)
delete(B)
delete(C)


A=plot3([XplotR(1),Xplot(1)],...

[XplotR(2),Xplot(2)],...

[XplotR(3),Xplot(3)],...
'g','LineWidth',2);

B=plot3([YplotR(1),Yplot(1)],...

[YplotR(2),Yplot(2)],...

[YplotR(3),Yplot(3)],...
'g','LineWidth',2);

C=plot3([ZplotR(1),Zplot(1)],...

[ZplotR(2),Zplot(2)],...

[ZplotR(3),Zplot(3)],...
'g','LineWidth',2);
pause(0.001);
end