Вы находитесь на странице: 1из 21

Fundamentos de Robtica, Gua 6

Facultad: Ingeniera
Escuela: Electrnica
Asignatura: Fundamentos de Robtica

Tema: La caja de
Herramientas de Robtica (versin 7.0)
para Matlab parte
II
Manipuladores de Dinmica de
Cuerpos Rgidos.
(Formulacin recursiva de Newton Euler, dinmica directa, parmetros de
inercia de cuerpos rgidos).

Contenidos

Uso del Toolbox de Robtica en Dinmica de manipuladores

Objetivos Especficos

Calcular la dinmica inversa y directa de un manipulador serie.

Crear trayectorias en las coordenadas cartesianas y de las articulaciones.

Encontrar las trayectorias por anlisis cinemtico y dinmico.

Material y Equipo
N

Cantidad

Descripcin

Computadora con Windows

Programa Matlab

Caja de herramientas de Robtica

Introduccion Teorica
La dinmica del manipulador tiene que ver con las ecuaciones del movimiento, el camino en el cual el
manipulador se mueve en respuesta a las torcas aplicadas por los actuadores, o fuerzas externas. La
historia y matemticas de la dinmica de los manipuladores en serie es bien cubierta por Paul[1] y
Hollerbach[11]. Hay dos problemas relacionados a la dinmica del manipulador que son importantes de
resolver:

Dinmica inversa en la cual las ecuaciones del movimiento del manipulador son resueltas para
un movimiento dado para determinar las fuerzas generalizadas, se extender en la seccin 6.1, y

Fundamentos de Robtica, Gua 6

Dinmica inversa en la cual las ecuaciones del movimiento se integran para determinar la
respuesta en coordenadas generalizadas a las fuerzas generalizadas aplicadas se discutir ms en
la Seccin 6.2.

Las ecuaciones del movimiento para un manipulador de n-ejes estn dadas por



Q M q q C q , q q F q G q

(6.1)

Donde
q

es el vector generalizado de coordenadas de las articulaciones describiendo la posicin del


manipulador

es el vector de velocidades de las articulaciones;

es el vector de aceleraciones de las articulaciones

M es la matriz de inercia simtrica en el espacio de la articulacin, o el tensor de inercia del


manipulador

C describe los efectos de Coriolis y centrpeto Las torcas centrpetas son proporcionales a

q iq

F describe la friccin viscosa y de Coulomb y no es generalmente una parte considerada de la dinmica


del cuerpo rgido.
G es la carga gravitacional
Q

es el vector de fuerzas generalizadas asociados con las coordenadas generalizadas

Las ecuaciones pueden derivarse por medio de un nmero de tcnicas, incluyendo, por Lagrange
(basado en la energa), por Newton-Euler, por dAlembert [2, 12] o por el de Kane [13]. Los trabajos
ms tempranamente reportados fueron por Uicker [14] and Kahn [15] usando el enfoque de Lagrange.
Debido al enorme coste computacional O(n4), de este enfoque no fue posible calcular la torca del
manipulador para un control de tiempo real. Para lograr un desempeo en tiempo real fueron sugeridas
muchas aproximaciones, incluyendo tablas de asignacin [16] y aproximacin [17, 18]. La
aproximacin ms comn fue ignorar el trmino C de dependencia de velocidad, ya que el
posicionamiento preciso y el movimiento a altas velocidades son exclusivos en aplicaciones tpicas del
robot.

Fundamentos de Robtica, Gua 6

Mtodo

Multiplicaciones

Adiciones

ParaN=6
Multiplicaciones

DeLagrange[22]

86

171

1
4

32

1
2

5
12

53

n
1
3

25n
n

129

66
1
2

128

96

150n 48

131n 48

1
3

66271

42

1
3

Sumas
51548

NERecursivo[22]
852
738
Kane[13]
646
394
RNESimplificado[25]
224
174
Tabla 6.1. Comparacin de costos computacionales para dinmicas inversas de varias fuentes la ltima
adhesin se logra por simplificacin simblica usando el paquete de software ARM.
Orin [19] propone un enfoque alternativo basado en las ecuaciones de Newton-Euler (NE) del
movimiento de cuerpos rgidos aplicadas a cada eslabn. Armstrong [20] luego, mostr como la
recursividad puede aplicarse resultando en una complejidad de O(n). Luh [21] dio una formulacin
recursiva de las ecuaciones de Newton-Euler con las velocidades lineales y angulares referenciadas al
marco de coordenadas del eslabn. Ellos sugirieron una mejora de tiempo desde 7.9s para la
formulacin de Lagrange hasta 4.5ms, y as lleg a ser prctica la implementacin on-line.
Hollerbach [22] mostr como la recursividad puede aplicarse a la forma de Lagrange, y reducir los
clculos hasta dentro de un factor de 3 del NE recursivo. Silver [23] mostr la equivalencia de las
formas recursivas de Lagrange y Newton-Euler, y que la diferencia en eficiencia se debe a la
representacin de la velocidad angular.
Las ecuaciones de Kane [13] proveen otra metodologa para la derivacin de ecuaciones de
movimiento para un manipulador especfico. Se introducen un nmero de variables Z, las cuales no
necesariamente tienen significado fsico, guan a una formulacin dinmica con baja carga
computacional. Wampler [24] discute los costos computacionales del mtodo de Kane en algn detalle.
Las formas de NE y Lagrange pueden escribirse generalmente en trminos de los parmetros de
Denavit-Hartenberg Sin embargo las formulaciones especficas, tal como la de Kane, pueden tener el
ms bajo costo computacional para un manipulador especfico. Mientras las formas recursivas son
computacionalmente ms eficientes, las formas no recursivas calculan los trminos dinmicos
individuales (M, C y G) directamente. Una comparacin de los costos computacionales se dan en la
Tabla 6.1.

6.1 La formulacin recursiva de Newton-Euler.


La formulacin recursiva de Newton-Euler (RNE) [21] calcula la dinmica inversa del manipulador, es
decir, las torcas necesarias para un conjunto dado de ngulos, velocidades y aceleraciones de las
articulaciones. La recursividad hacia delante propaga la informacin cinemtica tal como velocidades
angulares, aceleraciones angulares, aceleraciones lineales desde el marco de referencia de la base
(marco inercial) hasta el elemento terminal. La recursividad hacia atrs propaga las fuerzas y
momentos ejercidos en cada eslabn desde el elemento terminal del manipulador hasta el marco de

Fundamentos de Robtica, Gua 6

referencia de la base[1]. La Figura 6.1 muestra las variables involucradas en el clculo para un eslabn.
Ser usada la notacin de Hollerbach [22] y Walker y Orin [26] en la cual el superndice de la izquierda
indica el marco de coordenadas de referencia para la variable. La notacin de Luh [21] y luego Lee[7,
2] se considera menos clara.

Figura 6.1. Notacin usada para la dinmica inversa, basada en la notacin estndar de DenavitHartenberg.
Recursividad hacia delante,

1 i n

Si el eje i +1 es rotativo
i 1

i 1

i 1

i 1

(6.2)

i
i 1

R
i z 0 q i 1 i i z 0 q i 1
i1
i

i1

i1

i 1

i1R i i z 0 q i1

i 1

i1

i1 p

i 1

i1

i1

i1

i1

i1

i1

i1

i1

i 1

(6.3)
(6.4)

i 1

i1

i1

i1 p

i1

i1

i
i

(6.5)

Si el eje i +1 es prismtico
i 1

i 1

i1R

i 1

i1R

i 1

i 1

[1]

i1

(6.6)

(6.7)

i 1R i z 0 q

i1

i 1
v i i 1 i 1 p

i 1

(6.8)

Note que usando la notacin MDH con su convencin diferente de asignacin de ejes la
formulacin de Newton Euler se expresa de forma diferente [8].

Fundamentos de Robtica, Gua 6

i 1 R i z

i 1

i1

i 1

i 1

i1

i 1

i
i

i1

i1

v i i s ii i

i
i 1
v i

i 1

i 1
i 1

n i R

i1

i1

i 1

i1

i1

R iz0 q

i 1

(6.9)

(6.10)

(6.11)

i1

i 1

i 1

n R
f R
i

i1

i i J

f i iR

i1

(6.12)

Recursividad hacia atrs,


i

s i iv

i
i

z0
i1 z 0

i 1

n i 1

i1

i
i

si
si

el
el

i1

i1

e s la b n
e s la b n

(6.13)
i

si F i N

i 1
i1

es
es

r o t a t iv o
p r is m t ic o

(6.14)

(6.15)

Donde:
i es el ndice del eslabn, en el rango de 1 a n.

es el momento de inercia del eslabn i alrededor de su centro de masa (CDM).

es el vector de posicin del CDM del eslabn i con respecto al marco i.

es la velocidad angular del eslabn i

es la aceleracin angular del eslabn i

es la velocidad lineal del marco i

es la aceleracin lineal del marco i

es la velocidad lineal del CDM del eslabn i

es la aceleracin lineal del CDM del eslabn i

es el momento ejercido sobre el eslabn i por el eslabn i -1

es la fuerza ejercida sobre el eslabn i por el eslabn i -1

Fundamentos de Robtica, Gua 6

es el momento total en el CDM del eslabn i

es la fuerza total en el CDM del eslabn i

es la fuerza o torca ejercida por el actuador en la articulacin i

i 1

es la matriz ortogonal de rotacin que define la orientacin del marco i con respecto al marco i
1. Es la porcin 33 superior de la matriz de transformacin de eslabones dada por:
i

cosi
i 1
R i s in i
0
i

c o s i s in
c o s i s in
s in i

i 1

i1

s in i s in i
s in i s in i
cos i

i1

(6.16)

(6.17)

*
i

es el desplazamiento desde el origen del marco i 1 hasta el marco i con respecto al marco i.
ai

d i s in i
d i c o s i

*
i

Es la parte de la traslacin negativa de


z

es un vector unitario en la direccin Z, z

i 1

(6.18)

Note que la velocidad lineal del CDM dada por la ecuacin (6.4) o (6.8) no necesita calcularse ya que
ninguna expresin depende ms delante de ella. Las condiciones de frontera se usan para introducir el
efecto de la gravedad al colocar el efecto de la gravedad en el eslabn de la base.

(6.19)

Donde es el vector de gravedad en el marco de coordenadas de referencia, generalmente actuando en


la direccin Z negativa, de arriba hacia abajo. La velocidad de la base es generalmente cero
v0 0

(6.20

(6.21)

Fundamentos de Robtica, Gua 6

(6.22)

En esta etapa la Caja de Herramientas solo tiene la implementacin de este algoritmo usando la
convencin estndar de Denavit-Hartenberg.
5.2 Dinmica Directa
La ecuacin (6.1) puede usarse para calcular la as llamada dinmica inversa, esto es, la torca del
actuador como una funcin del estado del manipulador y es til para el control on line. Para la
simulacin la formulacin de la dinmica hacia delante, directa o integral se necesita, dando el
movimiento de las articulaciones en trminos de las torcas de entrada.
Walker and Orin [26] describen varios mtodos para calcular la dinmica directa, y todos hacen uso de
una solucin dinmica inversa existente. Usando el algoritmo RNE para la dinmica inversa, la
complejidad computacional de la dinmica directa usando el Mtodo 1 es O(n3) para un manipulador
de n-ejes. Sus otros mtodos son incrementalmente ms sofisticados pero reducen el costo
computacional, aunque se mantienen en O(n3). Featherstone [27] ha descrito el mtodo del cuerpo
articulado para O(n) clculos de la dinmica directa, sin embargo para n < 9 es ms costoso que el
enfoque de Walker y Orin. Otra mejora de O(n) para la dinmica directa se describe en Lathrop [28].
5.3 Parmetros de inercia de cuerpos rgidos
Modelos precisos basados en el control dinmico de un manipulador necesitan del conocimiento de los
parmetros de inercia de cuerpos rgidos. Cada eslabn tiene diez parmetros de inercia independientes:
m

masa de los eslabones,

tres primeros momentos, los cuales pueden expresarse como el lugar del CDM, s i , con respecto
S m isi
a algn dato en el eslabn o como un momento i
;

seis segundos momentos, los cuales representan la inercia del eslabn sobre un eje dado, tpicamente a
travs del CDM. Los segundos momentos en forma de matriz o tensor como:
J
J J
J

X X
X Y
X Z

J
J
J

X Y
YY
YZ

J
J
J

X Z

(6.23)

YZ
ZZ

Donde los elementos de la diagonal son los momentos de inercia, y fuera de la diagonal son productos
de inercia. Solo seis de estos nueve elementos son nicos: tres momentos y tres productos de inercia.
Para cualquier punto en un cuerpo rgido hay un conjunto de ejes conocidos como los ejes principales
de inercia para los cuales los trminos fuera de la diagonal, o productos, son cero. Estos ejes estn
dados por los autovectores de la matriz de inercia (6.23) y los autovalores son el momento principal de
inercia. Frecuentemente los productos de inercia de los eslabones de los robots son cero debido a la
simetra.
Un modelo dinmico de un manipulador de cuerpo rgido de 6 ejes as vincula 60 parmetros de
inercia. Puede haber parmetros adicionales por articulacin debidos a la friccin y a la inercia de la
armadura del motor. Claramente, establecer valores numricos para este nmero de parmetros es una

Fundamentos de Robtica, Gua 6

tarea difcil. Muchos parmetros no pueden medirse sin desmantelar el robot y realizar experimentos
cuidadosos, aunque este enfoque fue usado por Armstrong.[29]. Muchos parmetros podran derivarse
de los modelos CAD de los robots, pero esta informacin es frecuentemente considerada del
propietario y no est disponible para los investigadores.

Procedimiento
PARTE I. Dinmica inversa.
1. La dinmica inversa calcula las torcas de las articulaciones necesarias para lograr un estado
especfico de posicin, velocidad y aceleracin de las articulaciones.
La formulacin recursiva de Newton-Euler es un algoritmo eficiente orientado a matrices para el
clculo de la dinmica inversa y se implementa con la funcin rne().
La dinmica inversa requiere de los parmetros de masa e inercia de cada eslabn, como tambin
de los parmetros cinemticos. Esto se logra al aumentar la matriz de descripcin cinemtica con
columnas adicionales para los parmetros de masa e inercia para cada eslabn (vea la ltima Pg.).
Se va a aplicar el mtodo de Newton-Euler para la obtencin del modelo dinmico del robot de dos
grados de libertad 1 , d 2 con base fija de la Figura 6.2.
Figura 6.2. Sistemas de referencia del robot polar del numeral 1.
Paso 1. La asignacin de los sistemas de referencia segn D-H es la mostrada en la Figura 6.2. Los
correspondientes parmetros de D-H se muestran en la Tabla 6.2.
Articulacin

di

ai

-90

d2

Tabla 6.2. Parmetros D-H del robot polar del numeral 1.


Paso 2. Definimos los datos de problema y establecemos las condiciones iniciales:
Dimensiones de los eslabones:
1 = 0
d2 = 1 m.
L1 = 0.6 m.
Masa de cada eslabn:
m1 = 20 Kg

Fundamentos de Robtica, Gua 6

m2 = 5 Kg
Vector de coordenadas del centro de masas del eslabn i respecto del mismo sistema:
1S = [0,0, L ] 2S = [0,0, 0]
1
1
2
Matriz de inercia del eslabn i respecto de su centro de masas:
1

0
I 1 0
0

0
0
0

0
0
0

0
0
0

0
0
0

0
0
0

y todos los otros parmetros conocidos del robot como la inercia de cada motor, la relacin de los
engranes y la friccin.
Paso 3. Definir el problema en un archivo m.
Para el ejemplo anterior queda definido de la siguiente forma en un archivo llamado polar.m:
% POLAR Carga los datos de la cinematica y dinamica para un %manipulador polar
% del ejemplo 1
%
% POLAR
%
% Define el objeto 'pol' en el espacio de trabajo actual el cual describe las
% caracteristicas cinematicas y dinamicas del manipulador %polar del ejemplo 1
% usando la convencion estandar DH.
%
% Tambien define el vector qz el cual corresponde a la configuracion de angulo
% y desplazamiento cero de las articulaciones.
%

% Vea tambien: ROBOT, PUMA560, PUMA560AKB, STANFORD, TWOLINK.


clear L
% Parametros DH de cada eslabon
% alpha A theta D sigma
L{1} = link([-pi/2 0 0 0 0], 'standard');

L{2} = link([0 0 0 1 1],'standard');


% Masa de cada eslabon
L{1}.m = 20;

L{2}.m = 5;
% Vector de centro de gravedad de cada eslabon (esta variable es S en el libro)
L1 = 0.6;
L{1}.r = [0 0 L1];

L{2}.r = [0 0 0 ];

10

Fundamentos de Robtica, Gua 6

% Vector que representa la matriz de inercia (esta variable es I en el libro)


L{1}.I = [ 0 0 0 0 0 0];
L{2}.I = [ 0 0 0 0 0 0];
% LOS DATOS QUE SIGUEN SON OPCIONALES Y SI NO LOS CONOCE SERAN CERO
% inercia de cada motor
L{1}.Jm = 0;
L{2}.Jm = 0;
% relacion de engranes
L{1}.G = 1;
L{2}.G = 1;
% friccion viscosa (referenciada al motor)
L{1}.B = 0;

L{2}.B = 0;
% friccion de Coulomb (referenciada al motor)
L{1}.Tc = 0;

L{2}.Tc = 0;
%
% dos posiciones utiles
%
qz = [0 0]; % cero angulos y desplazamientos

qr = [pi/2 0]; % posicion de listo


pol = robot(L, 'POL', 'UDB', 'parmetros de la guia 6 EJEMPLO 1');
clear L
pol.name = 'POL';

pol.manuf = 'UDB';
Paso 4. Ejecutar la funcin rne() de la caja de herramientas de robtica:
>> polar

>> tau = rne(pol, [0 1], [5 5], [1 1])


El ejemplo anterior calcula el par y la fuerza en las articulaciones cuando el manipulador est en la
posicin 1 = 0 rad d2 = 1 m se mueve con una velocidad de las articulaciones de 5 rad/s y una
aceleracin de 1 rad/s2. La respuesta concuerda con el libro de texto cuando se evala la ecuacin para
estas condiciones.
2. Si se considera al robot en posicin horizontal, tal como aparece en la Figura 6.3, mantenindose
la definicin de los sistemas de referencia de la Figura 6.2, lo nico que cambiar es el vector de
gravedad expresado en el marco de referencia de la base sera:

Figura 6.3. Robot polar del ejemplo 1 en configuracin horizontal.

Fundamentos de Robtica, Gua 6

11

Puede usar el comando help rne para ver la sintaxis de la funcin y cambiar el vector de gravedad o
la carga en el elemento terminal, as para el cambio del vector de gravedad resulta:
>> tau = rne(pol, [0 1], [5 5], [1 1],[-9.81 0 0])
PARTE II. Dinmica directa.
3. La dinmica directa es el clculo de las aceleraciones de las articulaciones dados los estados de
posicin y velocidad, y las torcas de los actuadores. Es til en la simulacin de un sistema de
control de robot.
Considere el robot polar del numeral 1 con una velocidad en sus articulaciones de 5 rad/s y 5 m/s ,
respectivamente, en la posicin 1 = 0 rad d2 = 1 m con una torca en la articulacin 1 de 262.2 Nm y
una fuerza en la articulacin 2 de 120 N; la aceleracin de las articulaciones estara dada por:
>> accel(pol, [0 1], [5 5], [262.2 -120])
4. Para que sea til a la simulacin esta funcin debe integrarse. La funcin fdin() usa la funcin
de MATLAB ode45() para integrar la aceleracin de las articulaciones. Es una alternativa que
permite al usuario calcular la torca de las articulaciones en funcin del estado del manipulador.
A continuacin se simular el movimiento del Puma 560 desde el reposo en la posicin de ngulo cero
con una torca de cero aplicada a las articulaciones
>> puma560

>> tic, [t q qd] = fdyn(nofriction(p560), 0, 10); toc


y el movimiento resultante puede graficarse contra el tiempo
>> subplot(3,1,1)
>> plot(t,q(:,1))
>> xlabel('Tiempo (s)');
>> ylabel('Articulacin 1 (rad)')
>> subplot(3,1,2)
>> plot(t,q(:,2))
>> xlabel('Tiempo (s)');
>> ylabel('Articulacin 2 (rad)')
>> subplot(3,1,3)
>> plot(t,q(:,3))
>> xlabel('Tiempo (s)');

>> ylabel('Articulacin 3 (rad)')


Claramente el robot est cayendo, bajo la accin de la gravedad, pero es interesante notar que la
velocidad rotacional del brazo superior e inferior estn ejerciendo torcas centrpetas y de Coriolis en la
articulacin de la cintura (articulacin 1), causando que rote.
Esto puede mostrarse con una animacin:
>> clf

>> plot(p560, q)

12

Fundamentos de Robtica, Gua 6

Parte III. Control cinemtico.


5. Primero creamos un vector de tiempo, completando el movimiento en 2 segundos con un
intervalo de muestreo de 56ms.

>> t = [0:.056:2];

Una trayectoria polinomial entre las 2 posiciones se calcula usando la funcin jtraj()
>> q = jtraj(qz, qr, t);
Para esta trayectoria particular mucho del movimiento es hecho por las articulaciones 2 y 3, y este
puede ser convenientemente graficado usando operaciones estndares de MATLAB.
>> subplot(2,1,1)
>> plot(t,q(:,2))
>> title('Theta')
>> xlabel('Tiempo (s)');
>> ylabel('Articulacin 2 (rad)')
>> subplot(2,1,2)
>> plot(t,q(:,3))
>> xlabel('Tiempo (s)');

>> ylabel('Articulacin 3 (rad)')


Tambin podemos ver los perfiles de las velocidades y aceleraciones. Podemos derivar la trayectoria
angular usando la funcin diff(), pero resultados ms precisos pueden obtenerse solicitando que la
funcin jtraj() regrese la velocidad y la aceleracin angular como sigue:
>> [q,qd,qdd] = jtraj(qz, qr, t);
Las cuales pueden graficarse como sigue:
>> subplot(2,1,1)
>> plot(t,qd(:,2))
>> title('Velocidad')
>> xlabel('Tiempo (s)');
>> ylabel('Articulacin 2 vel (rad/s)')
>> subplot(2,1,2)
>> plot(t,qd(:,3))
>> xlabel('Tiempo (s)');

>> ylabel('Articulacin 3 vel (rad/s)')


y los perfiles de las aceleraciones:
>> subplot(2,1,1)
>> plot(t,qdd(:,2))
>> title('Aceleracin')
>> xlabel('Tiempo (s)');
>> ylabel('Articulacin 2 acel (rad/s^2)')

Fundamentos de Robtica, Gua 6

13

>> subplot(2,1,2)
>> plot(t,qdd(:,3))
>> xlabel('Tiempo (s)');

>> ylabel('Articulacin 3 acel (rad/s^2)')


Parte IV. Trayectorias cinemticas
6. Como vimos en la gua anterior, la cinemtica directa puede calcularse usando la funcin
fkine() con una apropiada descripcin cinemtica, en este caso, usamos la matriz p560 la cual
define la cinemtica para el robot Puma 560 de 6 ejes.
>> fkine(p560, qz)

esta regresa la transformacin homognea correspondiente al ltimo eslabn del manipulador.


fkine() tambin puede usarse con una secuencia en el tiempo de coordenadas de las articulaciones,
o trayectoria, la cual se genera por jtraj():
>> t = [0:.056:2]; % genera un vector de tiempo
>> q = jtraj(qz, qr, t); % calcula la trayectoria de las coordenadas de las
>> % articulaciones

entonces la transformacin homognea para cada conjunto de coordenadas de las articulaciones est
dada por:
>> T = fkine(p560, q);
donde T es una matriz de 3 dimensiones, las primeras dos dimensiones nos dan una transformacin
homognea de 44 y la tercera dimensin es el tiempo.
Por ejemplo, el primer punto es:
>> T(:,:,1)

y el dcimo punto es:


>> T(:,:,10)

Los elementos (1:3,4) corresponden a las coordenadas X, Y y Z respectivamente y pueden graficarse


contra el tiempo
>> subplot(3,1,1)
>> plot(t, squeeze(T(1,4,:)))
>> xlabel('Tiempo (s)');
>> ylabel('X (m)')
>> subplot(3,1,2)
>> plot(t, squeeze(T(2,4,:)))
>> xlabel('Tiempo (s)');
>> ylabel('Y (m)')
>> subplot(3,1,3)
>> plot(t, squeeze(T(3,4,:)))
>> xlabel('Tiempo (s)');

14

Fundamentos de Robtica, Gua 6

>> ylabel('Z (m)')


o podemos graficar X contra Z para tener una idea del camino Cartesiano seguido por el manipulador:
>> subplot(1,1,1)
>> plot(squeeze(T(1,4,:)), squeeze(T(3,4,:)));
>> xlabel('X (m)')
>> ylabel('Z (m)')

>> grid
7. La cinemtica inversa tambin puede calcularse para una trayectoria.
Si tomamos una ruta Cartesiana en lnea recta:
>> t = [0:.056:2]; % crea a vector de tiempo
>> T1 = transl(0.6, -0.5, 0.0) % define el punto inicial
>> T2 = transl(0.4, 0.5, 0.2) % y el destino

>> T = ctraj(T1, T2, length(t)); % calcula la ruta Cartesiana


Ahora se resuelve la cinemtica inversa. Cuando resolvemos para una trayectoria, las coordenadas
iniciales de las articulaciones para cada punto se toman como el resultado de la solucin inversa
anterior:
>> tic, q = ikine(p560, T); toc

Claramente este enfoque es lento, y no adecuado para un controlador real de un robot donde una
solucin cinemtica inversa puede necesitarse en pocos milisegundos
Vamos a examinar la trayectoria en el espacio de las articulaciones que da como resultado el
movimiento cartesiano en lnea recta:
>> subplot(3,1,1)
>> plot(t,q(:,1))
>> xlabel('Tiempo (s)');
>> ylabel('Articulacin 1 (rad)')
>> subplot(3,1,2)
>> plot(t,q(:,2))
>> xlabel('Tiempo (s)');
>> ylabel('Articulacin 2 (rad)')
>> subplot(3,1,3)
>> plot(t,q(:,3))
>> xlabel('Tiempo (s)');

>> ylabel('Articulacin 3 (rad)')


Ahora podemos animar la trayectoria en el espacio de las articulaciones:
>> clf

>> plot(p560, q)
Parte V. Trayectorias dinmicas

Fundamentos de Robtica, Gua 6

15

8. Como con otras funciones, la dinmica inversa tambin puede calcularse para cada punto en una
trayectoria. Cree una trayectoria de coordenadas de las articulaciones y calcule la velocidad y la
aceleracin tambin:

>> t = [0:.056:2]; % crea un vector de tiempo

>> [q,qd,qdd] = jtraj(qz, qr, t); % calcula la trayectoria en coord. de las art.

>> tau = rne(p560, q, qd, qdd); % calcula la dinmica inversa


Ahora pueden graficarse las torcas como funcin del tiempo
>> plot(t, tau(:,1:3))
>> xlabel('Tiempo (s)');

>> ylabel('Torca de Articulaciones (Nm)')


Mucho de la torca en las articulaciones 2 y 3 del Puma 560 (montado convencionalmente) se debe a la
gravedad. Esa componente puede calcularse usando la funcin gravload()
>> taug = gravload(p560, q);
>> plot(t, taug(:,1:3))
>> xlabel('Tiempo (s)');

>> ylabel('Torca debida a la gravedad (Nm)')


Graficaremos lo anterior como una fraccin de la torca total necesaria sobre toda la trayectoria
>> subplot(2,1,1)
>> plot(t,[tau(:,2) taug(:,2)])
>> xlabel('Tiempo (s)');
>> ylabel('Torca en la articulacin 2 (Nm)')
>> subplot(2,1,2)
>> plot(t,[tau(:,3) taug(:,3)])
>> xlabel('Tiempo (s)');

>> ylabel('Torca en la articulacin 3 (Nm)')


La inercia vista por el motor de la cintura (articulacin 1) cambia marcadamente con la configuracin
del robot. La funcin inertia() calcula la matriz de inercia del manipulador para cualquier
configuracin dada.
Calcularemos la variacin en la inercia de la articulacin 1, esto es M(1,1), cuando el manipulador se
mueve a lo largo de la trayectoria:
>> clf
>> M = inertia(p560, q);
>> M11 = squeeze(M(1,1,:));
>> plot(t, M11);
>> xlabel('Tiempo (s)');

>> ylabel('Inercia en la articulacin 1 (kgms^2)')


Claramente, la inercia vista por la articulacin 1 vara considerablemente sobre esta ruta. Este es uno de

16

Fundamentos de Robtica, Gua 6

muchos desafos para el diseo del control en robtica, lograr estabilidad y altas prestaciones en la
faseta de la variacin de la planta. Efectivamente para este ejemplo la inercia vara en un factor de:
>> max(M11)/min(M11)

9. Salga de los programas y apague la computadora.

Anlisis de Resultados

Cree el modelo dinmico del manipulador presente en el laboratorio de Automatizacin.

Investigacin Complementaria

Investigue como realizar los ejemplos de la gua usando simulink.

Bibliografa
[1] R. P. Paul, Robot Manipulators: Mathematics, Programming, and Control. Cam-bridge,
Massachusetts: MIT Press, 1981.
[2] K. S. Fu, R. C. Gonzalez, and C. S. G. Lee, Robotics. Control, Sensing, Vision and
Intelligence. McGraw-Hill, 1987.
[3] M. Spong and M. Vidyasagar, Robot Dynamics and Control. John Wiley and Sons,
1989.
[4] J. J. Craig, Introduction to Robotics. Addison Wesley, 1986.
[5] S. Hutchinson, G. Hager, and P. Corke, A tutorial on visual servo control, IEEE
Transactions on Robotics and Automation, vol. 12, pp. 651670, Oct. 1996.
[6] R. S. Hartenberg and J. Denavit, A kinematic notation for lower pair mechanisms based on
matrices, Journal of Applied Mechanics, vol. 77, pp. 215221, June 1955.
[7] C. S. G. Lee, Robot arm kinematics, dynamics and control, IEEE Computer, vol. 15,
pp. 6280, Dec. 1982.
[8] J. J. Craig, Introduction to Robotics. Addison Wesley, second ed., 1989.
[9] D. Whitney, The mathematics of coordinated control of prosthetic arms and manipu-lators,
ASME Journal of Dynamic Systems, Measurement and Control, vol. 20, no. 4,
pp. 303309, 1972.
[10] R. P. Paul, B. Shimano, and G. E. Mayer, Kinematic control equations for simple
manipulators, IEEE Trans. Syst. Man Cybern., vol. 11, pp. 449455, June 1981.
[11] J. M. Hollerbach, Dynamics, in Robot Motion - Planning and Control (M. Brady,
J. M. Hollerbach, T. L. Johnson, T. Lozano-Perez, and M. T. Mason, eds.), pp. 5171,
MIT, 1982.
[12] C. S. G. Lee, B. Lee, and R. Nigham, Development of the generalized DAlembert
equations of motion for mechanical manipulators, in Proc. 22nd CDC, (San Antonio,
Texas), pp. 12051210, 1983.
[13] T. Kane and D. Levinson, The use of Kanes dynamical equations in robotics, Int. J.
Robot. Res., vol. 2, pp. 321, Fall 1983.
[14] J. Uicker, On the Dynamic Analysis of Spatial Linkages Using 4 by 4 Matrices. PhD

Fundamentos de Robtica, Gua 6

17

thesis, Dept. Mechanical Engineering and Astronautical Sciences, NorthWestern


University, 1965.
[15] M. Kahn, The near-minimum time control of open-loop articulated kinematic
linkages, Tech. Rep. AIM-106, Stanford University, 1969.
[16] M. H. Raibert and B. K. P. Horn, Manipulator control using the configuration space
method, The Industrial Robot, pp. 6973, June 1978.
[17] A. Bejczy, Robot arm dynamics and control, Tech. Rep. NASA-CR-136935, NASA
JPL, Feb. 1974.
[18] R. Paul, Modelling, trajectory calculation and servoing of a computer controlled
arm, Tech. Rep. AIM-177, Stanford University, Artificial Intelligence Laboratory, 1972.
[19] D. Orin, R. McGhee, M. Vukobratovic, and G. Hartoch, Kinematics and kinetic analysis of openchain linkages utilizing Newton-Euler methods, Mathematical Biosciences. An International Journal,
vol. 43, pp. 107130, Feb. 1979.
[20] W. Armstrong, Recursive solution to the equations of motion of an n-link
manipulator, in Proc. 5th World Congress on Theory of Machines and Mechanisms,
(Montreal), pp. 13431346, July 1979.
[21] J. Y. S. Luh, M. W. Walker, and R. P. C. Paul, On-line computational scheme for
mechanical manipulators, ASME Journal of Dynamic Systems, Measurement and
Control, vol. 102, pp. 6976, 1980.
[22] J. Hollerbach, A recursive Lagrangian formulation of manipulator dynamics and a
comparative study of dynamics formulation complexity, IEEE Trans. Syst. Man Cybern., vol. SMC-10, pp. 730736, Nov. 1980.
[23] W. M. Silver, On the equivalance of Lagrangian and Newton-Euler dynamics for
manipulators, Int. J. Robot. Res., vol. 1, pp. 6070, Summer 1982.
[24] C. Wampler, Computer Methods in Manipulator Kinematics, Dynamics, and
Control: a Comparative Study. PhD thesis, Stanford University, 1985.
[25] J. J. Murray, Computational Robot Dynamics. PhD thesis, Carnegie-Mellon
University, 1984.
[26] M. W. Walker and D. E. Orin, Efficient dynamic computer simulation of robotic
mechanisms, ASME Journal of Dynamic Systems, Measurement and Control, vol. 104,
pp. 205211, 1982.
[27] R. Featherstone, Robot Dynamics Algorithms. Kluwer Academic Publishers, 1987.
[28] R. Lathrop, Constrained (closed-loop) robot simulation by local constraint
propoga-tion., in Proc. IEEE Int. Conf. Robotics and Automation, pp. 689694, 1986.
[29] B. Armstrong, O. Khatib, and J. Burdick, The explicit dynamic model and inertial
parameters of the Puma 560 arm, in Proc. IEEE Int. Conf. Robotics and Automation,
vol. 1, (Washington, USA), pp. 51018, 1986.
http://www.cat.csiro.au/cmst/staff/pic/robot
ARTCULO {Corke96b,
AUTOR = {P.I. Corke},
REVISTA = {IEEE Robotics and Automation Magazine},
MES = mar,
NMERO = {1},
PGINAS = {24-32},
TITULO = {A Robotics Toolbox for {MATLAB}},
VOLUMEN = {3}, AO = {1996}

18

Fundamentos de Robtica, Gua 6

19

Fundamentos de Robtica, Gua 6


Hoja de cotejo: 6

Gua 6: La Caja de herramientas de Robtica para Matlab II


Alumno:

Maquina No:
GL:

Docente:

Fecha:

EVALUACION
%

1-4

5-7

8-10

CONOCIMIENTO

25%

Conocimiento
deficiente de los
fundamentos
tericos

Conocimiento y
explicacin
incompleta de los
fundamentos
tericos

Conocimiento
completo y
explicacin clara
de los fundamentos
tericos

APLICACIN
DEL
CONOCIMIENTO

70%

No genera
conclusiones acerca
de las aplicaciones
prcticas de los
servomotores

Da observaciones
correctas pero no
completas.

Aplica
correctamente el
conocimiento y da
explicaciones
correctas de la
utilidad del
laboratorio
recibido.

No comprende la
utilidad del
procedimiento

ACTITUD

Aplica el
conocimiento a
situaciones
concretas

2.5%

Es un observador
pasivo.

Participa
ocasionalmente o
lo hace
constantemente
pero sin
coordinarse con su
compaero.

Participa
propositiva e
integralmente en
toda la prctica.

2.5%

Es ordenado; pero
no hace un uso
adecuado de los
recursos

Hace un uso
adecuado de los
recursos, respeta
las pautas de
seguridad; pero es

Hace un manejo
responsable y
adecuado de los
recursos conforme
a pautas de

Nota

20

Fundamentos de Robtica, Gua 6


desordenado.

TOTAL

100%

seguridad e
higiene.

%STANFORD Load kinematic and dynamic data for Stanford arm


% Defines the object 'stanford' in the current workspace which describes the
% kinematic and dynamic characterstics of the Stanford (Scheinman) arm.
% Kinematic data from "Modelling, Trajectory calculation and Servoing of
% a computer controlled arm". Stanford AIM-177. Figure 2.3
% Dynamic data from "Robot manipulators: mathematics, programming and control"
% Paul 1981, Tables 6.4, 6.6
% Note: gear ratios not currently known, though reflected armature inertia
% is known, so gear ratios set to 1.
%
% Also define the vector qz which corresponds to the zero joint
% angle configuration.
%
% See also: ROBOT, PUMA560, PUMA560AKB, TWOLINK.
% $Log: stanford.m,v $
% Revision 1.2 2002/04/01 11:47:18 pic
% General cleanup of code: help comments, see also, copyright, remnant dh/dyn
% references, clarification of functions.
%
% $Revision: 1.2 $
% Copyright (C) 1990-2002, by Peter I. Corke
% alpha A
theta D
sigma m
rx
ry
rz
Ixx
Iyy
Izz
Ixy
stanford_dyn = [
-pi/2
0 0
0.412 0
9.29 0
.0175 -0.1105
0.276 0.255 0.071 0
pi/2
0 0
0.154 0
5.01 0
-1.054
0
0.108 0.018 0.100 0
0 0
-pi/2 0
1
4.25 0
0
-6.447
2.51 2.51 0.006 0
-pi/2 0 0
0
0
1.08 0
0.092 -0.054
0.002 0.001 0.001 0
pi/2
0 0
0
0
0.63 0
0
0.566 0.003 0.003 0.0004
0
0 0 0
0.263 0
0.51 0
0
1.554 0.013 0.013 0.0003
0
0
];
qz = [0 0 0 0 0 0];
stanf = robot(stanford_dyn);
stanf.plotopt = {'workspace', [-2 2 -2 2 -2 2]};
stanf.name = 'Stanford arm';

Iyz

Ixz

Jm

0
0
0
0
0
0

0
0
0
0
0
0.020

0.953
2.193
0.782
0.106
0.097
1

1
1
1
1
1