You are on page 1of 21

Fundamentos de Robótica, Guía 6 1

Facultad: Ingeniería
Escuela: Electrónica
Asignatura: Fundamentos de Robótica
Tema: La caja de
Herramientas de Robótica (versión 7.0) para Matlab parte
II
Manipuladores de Dinámica de Cuerpos Rígidos.
(Formulación recursiva de Newton – Euler, dinámica directa, parámetros de
inercia de cuerpos rígidos).

Contenidos

 Uso del Toolbox de Robótica en Dinámica de manipuladores

Objetivos Específicos

 Calcular la dinámica inversa y directa de un manipulador serie.


 Crear trayectorias en las coordenadas cartesianas y de las articulaciones.
 Encontrar las trayectorias por análisis cinemático y dinámico.

Material y Equipo

Nº Cantidad Descripción
1 1 Computadora con Windows
2 1 Programa Matlab
3 1 Caja de herramientas de Robótica

Introduccion Teorica

La dinámica 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 matemáticas de la dinámica de los manipuladores en serie es bien cubierta por Paul[1] y
Hollerbach[11]. Hay dos problemas relacionados a la dinámica del manipulador que son importantes de
resolver:
 Dinámica 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 sección 6.1, y
2 Fundamentos de Robótica, Guía 6

 Dinámica inversa en la cual las ecuaciones del movimiento se integran para determinar la
respuesta en coordenadas generalizadas a las fuerzas generalizadas aplicadas se discutirá más en
la Sección 6.2.
Las ecuaciones del movimiento para un manipulador de n-ejes están 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 posición del
manipulador

q
es el vector de velocidades de las articulaciones;

q
es el vector de aceleraciones de las articulaciones
M es la matriz de inercia simétrica en el espacio de la articulación, o el tensor de inercia del
manipulador
 
q iq
C describe los efectos de Coriolis y centrípeto – Las torcas centrípetas son proporcionales a j

F describe la fricción viscosa y de Coulomb y no es generalmente una parte considerada de la dinámica


del cuerpo rígido.
G es la carga gravitacional
Q q
es el vector de fuerzas generalizadas asociados con las coordenadas generalizadas
Las ecuaciones pueden derivarse por medio de un número de técnicas, incluyendo, por Lagrange
(basado en la energía), por Newton-Euler, por d’Alembert [2, 12] o por el de Kane [13]. Los trabajos
más 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 desempeño en tiempo real fueron sugeridas
muchas aproximaciones, incluyendo tablas de asignación [16] y aproximación [17, 18]. La
aproximación más común fue ignorar el término C de dependencia de velocidad, ya que el
posicionamiento preciso y el movimiento a altas velocidades son exclusivos en aplicaciones típicas del
robot.
Fundamentos de Robótica, Guía 6 3

Método Multiplicaciones Adiciones Para N=6


Multiplicaciones Sumas
De Lagrange [22] 86  66 66271 51548
4 3 4 3
32 1
2
n 5
12
n 25n 1
3
n
171 1
4
n 2
 53 1
3
n 129 1
2
n 2
 42 1
3
n
 128  96

150n  48 131n  48

NE Recursivo[22]  852 738


Kane [13]  646 394
RNE Simplificado [25] 224 174
Tabla 6.1. Comparación de costos computacionales para dinámicas inversas de varias fuentes la última
adhesión se logra por simplificación simbólica usando el paquete de software ARM.

Orin [19] propone un enfoque alternativo basado en las ecuaciones de Newton-Euler (NE) del
movimiento de cuerpos rígidos aplicadas a cada eslabón. Armstrong [20] luego, mostró como la
recursividad puede aplicarse resultando en una complejidad de O(n). Luh [21] dio una formulación
recursiva de las ecuaciones de Newton-Euler con las velocidades lineales y angulares referenciadas al
marco de coordenadas del eslabón. Ellos sugirieron una mejora de tiempo desde 7.9s para la
formulación de Lagrange hasta 4.5ms, y así llegó a ser práctica la implementación ‘on-line’.
Hollerbach [22] mostró como la recursividad puede aplicarse a la forma de Lagrange, y reducir los
cálculos 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
representación de la velocidad angular.
Las “ecuaciones de Kane” [13] proveen otra metodología para la derivación de ecuaciones de
movimiento para un manipulador específico. Se introducen un número de variables ‘Z’, las cuales no
necesariamente tienen significado físico, guían a una formulación dinámica con baja carga
computacional. Wampler [24] discute los costos computacionales del método de Kane en algún detalle.
Las formas de NE y Lagrange pueden escribirse generalmente en términos de los parámetros de
Denavit-Hartenberg – Sin embargo las formulaciones específicas, tal como la de Kane, pueden tener el
más bajo costo computacional para un manipulador específico. Mientras las formas recursivas son
computacionalmente más eficientes, las formas no recursivas calculan los términos dinámicos
individuales (M, C y G) directamente. Una comparación de los costos computacionales se dan en la
Tabla 6.1.
6.1 La formulación recursiva de Newton-Euler.
La formulación recursiva de Newton-Euler (RNE) [21] calcula la dinámica 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 información cinemática – tal como velocidades
angulares, aceleraciones angulares, aceleraciones lineales – desde el marco de referencia de la base
4 Fundamentos de Robótica, Guía 6

(marco inercial) hasta el elemento terminal. La recursividad hacia atrás propaga las fuerzas y
momentos ejercidos en cada eslabón desde el elemento terminal del manipulador hasta el marco de
referencia de la base[1]. La Figura 6.1 muestra las variables involucradas en el cálculo para un eslabón.
Será usada la notación de Hollerbach [22] y Walker y Orin [26] en la cual el superíndice de la izquierda
indica el marco de coordenadas de referencia para la variable. La notación de Luh [21] y luego Lee[7,
2] se considera menos clara.

Figura 6.1. Notación usada para la dinámica inversa, basada en la notación estándar de Denavit-
Hartenberg.
1  i  n
Recursividad hacia delante, ,
Si el eje i +1 es rotativo
i 1 i 

 i 1  i1
R i   i  z 0 q i1 
  (6.2)
i 1 
i  
 i  1 R i   i  z 0 q i  1  i  i   z 0 q i  1
 
 i1 
  
(6.3)
i 1 i 1 i1 * i1 i
v i1   i1  p i1  R i
i1 v i
(6.4)

 
i 1  i 1  i 
i1 i1 i 1 i1
v i1   i1  p *
i1   i1
i 1
  i1
i1
 p *
i1
i1
R v i
i
(6.5)
Si el eje i +1 es prismático
i 1
 i1R
i
 i 1 
i i
(6.6)
i 1  i 
 i 1  i1
R  i
i
(6.7)

[1]
Note que usando la notación MDH con su convención diferente de asignación de ejes la
formulación de Newton Euler se expresa de forma diferente [8].
Fundamentos de Robótica, Guía 6 5

i 1   i  i 1 *
v i1  i 1R i  z 0 q i1
 v i   i  1  i 1  p i 1
  (6.8)
i 1 
 i 
 i 1 
  
 
v i1  i  1 R i  z 0 q i1
 v i    i1  i1 p *
i1 2 i 1
 i1
i1
R iz0 q i 1 
   
(6.9)
i 1
 i 1   i 1
 i 1 
i1
p
*
i1 
 
 i 
i
v i  i  s ii i   s i  iv
i
i i
(6.10)

i
 m
i
F i i v i
(6.11)
i  i 
 i 

i
N i  J i  i   i   J i  i 
  (6.12)

n  i  1
Recursividad hacia atrás, ,
i i 1 i
f i R  F
i
f i
i 1 i 1 (6.13)
i
n i  iR i1  i1
n i 1   i1
R i
i
p
*
i  i1
f i1
  i
p
*
i 
 si  F i N
i i
i
(6.14)

Q
 in
  i
  R i
i
i 1z0  si el e s la b ó n i 1 es r o t a t iv o
i
 f   R i
i
i1 z 0  si el e s la b ó n i1 es p r is m á t ic o
(6.15)
Donde:
i es el índice del eslabón, en el rango de 1 a n.

J i
es el momento de inercia del eslabón i alrededor de su centro de masa (CDM).
s i
es el vector de posición del CDM del eslabón i con respecto al marco i.
 i
es la velocidad angular del eslabón i

 i
es la aceleración angular del eslabón i
v i
es la velocidad lineal del marco i

v i es la aceleración lineal del marco i
v i
es la velocidad lineal del CDM del eslabón i

v i
es la aceleración lineal del CDM del eslabón i
6 Fundamentos de Robótica, Guía 6

n i
es el momento ejercido sobre el eslabón i por el eslabón i -1
f i es la fuerza ejercida sobre el eslabón i por el eslabón i -1
N i
es el momento total en el CDM del eslabón i
F i
es la fuerza total en el CDM del eslabón i
Q i
es la fuerza o torca ejercida por el actuador en la articulación i
i 1
R
es la matriz ortogonal de rotación que define la orientación del marco i con respecto al marco i –
i

1. Es la porción 33 superior de la matriz de transformación de eslabones dada por:

c o s  i  c o s  i s in  i s in  i s in  i 
i 1
R i   s in  i c o s  i s in  i  s in  i s in  i  (6.16)
 0 s in  i cos i 

i
R i 1   i1
R i  1
  i1
R i  T
(6.17)

i *
p 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 

i *
p i (6.18)
 d i c o s  i 

Es la parte de la traslación negativa de


 i 1
A i  1

z 0
es un vector unitario en la dirección Z, z 0  0 0 1

Note que la velocidad lineal del CDM dada por la ecuación (6.4) o (6.8) no necesita calcularse ya que
ninguna expresión depende más 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 eslabón de la base.

v 0  g (6.19)

g
Donde es el vector de gravedad en el marco de coordenadas de referencia, generalmente actuando en
la dirección Z negativa, de arriba hacia abajo. La velocidad de la base es generalmente cero
v0  0 (6.20
Fundamentos de Robótica, Guía 6 7

 0  0 (6.21)


 0  0 (6.22)

En esta etapa la Caja de Herramientas solo tiene la implementación de este algoritmo usando la
convención estándar de Denavit-Hartenberg.
5.2 Dinámica Directa
La ecuación (6.1) puede usarse para calcular la así llamada dinámica inversa, esto es, la torca del
actuador como una función del estado del manipulador y es útil para el control ‘on line’. Para la
simulación la formulación de la dinámica hacia delante, directa o integral se necesita, dando el
movimiento de las articulaciones en términos de las torcas de entrada.
Walker and Orin [26] describen varios métodos para calcular la dinámica directa, y todos hacen uso de
una solución dinámica inversa existente. Usando el algoritmo RNE para la dinámica inversa, la
complejidad computacional de la dinámica directa usando el ‘Método 1’ es O(n3) para un manipulador
de n-ejes. Sus otros métodos son incrementalmente más sofisticados pero reducen el costo
computacional, aunque se mantienen en O(n3). Featherstone [27] ha descrito “el método del cuerpo
articulado” para O(n) cálculos de la dinámica directa, sin embargo para n < 9 es más costoso que el
enfoque de Walker y Orin. Otra mejora de O(n) para la dinámica directa se describe en Lathrop [28].
5.3 Parámetros de inercia de cuerpos rígidos
Modelos precisos basados en el control dinámico de un manipulador necesitan del conocimiento de los
parámetros de inercia de cuerpos rígidos. Cada eslabón tiene diez parámetros de inercia independientes:
m
 masa de los eslabones, i
;

 tres primeros momentos, los cuales pueden expresarse como el lugar del CDM, s i , con respecto
S  m isi
a algún dato en el eslabón o como un momento i ;
seis segundos momentos, los cuales representan la inercia del eslabón sobre un eje dado, típicamente a
través del CDM. Los segundos momentos en forma de matriz o tensor como:
J X X J X Y J X Z 
J   J X Y J YY J YZ

 (6.23)
 J X Z J YZ J 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 rígido hay un conjunto de ejes conocidos como los ejes principales
de inercia para los cuales los términos fuera de la diagonal, o productos, son cero. Estos ejes están
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
simetría.
Un modelo dinámico de un manipulador de cuerpo rígido de 6 ejes así vincula 60 parámetros de
8 Fundamentos de Robótica, Guía 6

inercia. Puede haber parámetros adicionales por articulación debidos a la fricción y a la inercia de la
armadura del motor. Claramente, establecer valores numéricos para este número de parámetros es una
tarea difícil. Muchos parámetros no pueden medirse sin desmantelar el robot y realizar experimentos
cuidadosos, aunque este enfoque fue usado por Armstrong.[29]. Muchos parámetros podrían derivarse
de los modelos CAD de los robots, pero esta información es frecuentemente considerada del
propietario y no está disponible para los investigadores.

Procedimiento

PARTE I. Dinámica inversa.


1. La dinámica inversa calcula las torcas de las articulaciones necesarias para lograr un estado
específico de posición, velocidad y aceleración de las articulaciones.
La formulación recursiva de Newton-Euler es un algoritmo eficiente orientado a matrices para el
cálculo de la dinámica inversa y se implementa con la función rne().
La dinámica inversa requiere de los parámetros de masa e inercia de cada eslabón, como también
de los parámetros cinemáticos. Esto se logra al aumentar la matriz de descripción cinemática con
columnas adicionales para los parámetros de masa e inercia para cada eslabón (vea la última Pág.).
Se va a aplicar el método de Newton-Euler para la obtención del modelo dinámico 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 asignación de los sistemas de referencia según D-H es la mostrada en la Figura 6.2. Los
correspondientes parámetros de D-H se muestran en la Tabla 6.2.

Articulación i di ai i

1 1 0 0 -90

2 0 d2 0 0

Tabla 6.2. Parámetros 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 eslabón:
Fundamentos de Robótica, Guía 6 9

m1 = 20 Kg
m2 = 5 Kg
Vector de coordenadas del centro de masas del eslabón i respecto del mismo sistema:
1S = [0,0, L ] 2S = [0,0, 0]
1 1 2
Matriz de inercia del eslabón i respecto de su centro de masas:
0 0 0 0 0 0
1
I 1   0 0 0  2
I 2   0 0 0 
 0 0 0   0 0 0 

y todos los otros parámetros conocidos del robot como la inercia de cada motor, la relación de los
engranes y la fricción.
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];
10 Fundamentos de Robótica, Guía 6

L{2}.r = [0 0 0 ];
% 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', 'parámetros de la guia 6 EJEMPLO 1');
clear L
pol.name = 'POL';

pol.manuf = 'UDB';
Paso 4. Ejecutar la función rne() de la caja de herramientas de robótica:
>> 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
posición 1 = 0 rad d2 = 1 m se mueve con una velocidad de las articulaciones de 5 rad/s y una
aceleración de 1 rad/s2. La respuesta concuerda con el libro de texto cuando se evalúa la ecuación para
estas condiciones.
2. Si se considera al robot en posición horizontal, tal como aparece en la Figura 6.3, manteniéndose
la definición 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 sería:
Fundamentos de Robótica, Guía 6 11

Figura 6.3. Robot polar del ejemplo 1 en configuración horizontal.


Puede usar el comando help rne para ver la sintaxis de la función 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. Dinámica directa.
3. La dinámica directa es el cálculo de las aceleraciones de las articulaciones dados los estados de
posición y velocidad, y las torcas de los actuadores. Es útil en la simulación 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 posición 1 = 0 rad d2 = 1 m con una torca en la articulación 1 de 262.2 Nm y
una fuerza en la articulación 2 de –120 N; la aceleración de las articulaciones estaría dada por:
>> accel(pol, [0 1], [5 5], [262.2 -120])
4. Para que sea útil a la simulación esta función debe integrarse. La función fdin() usa la función
de MATLAB ode45() para integrar la aceleración de las articulaciones. Es una alternativa que
permite al usuario calcular la torca de las articulaciones en función del estado del manipulador.

A continuación se simulará el movimiento del Puma 560 desde el reposo en la posición 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('Articulación 1 (rad)')
>> subplot(3,1,2)
>> plot(t,q(:,2))
>> xlabel('Tiempo (s)');
>> ylabel('Articulación 2 (rad)')
>> subplot(3,1,3)
>> plot(t,q(:,3))
>> xlabel('Tiempo (s)');

>> ylabel('Articulación 3 (rad)')


Claramente el robot está cayendo, bajo la acción de la gravedad, pero es interesante notar que la
velocidad rotacional del brazo superior e inferior están ejerciendo torcas centrípetas y de Coriolis en la
articulación de la cintura (articulación 1), causando que rote.
Esto puede mostrarse con una animación:
>> clf
12 Fundamentos de Robótica, Guía 6

>> plot(p560, q)
Parte III. Control cinemático.
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 función 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 estándares de MATLAB.
>> subplot(2,1,1)
>> plot(t,q(:,2))
>> title('Theta')
>> xlabel('Tiempo (s)');
>> ylabel('Articulación 2 (rad)')
>> subplot(2,1,2)
>> plot(t,q(:,3))
>> xlabel('Tiempo (s)');

>> ylabel('Articulación 3 (rad)')


También podemos ver los perfiles de las velocidades y aceleraciones. Podemos derivar la trayectoria
angular usando la función diff(), pero resultados más precisos pueden obtenerse solicitando que la
función jtraj() regrese la velocidad y la aceleración 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('Articulación 2 vel (rad/s)')
>> subplot(2,1,2)
>> plot(t,qd(:,3))
>> xlabel('Tiempo (s)');

>> ylabel('Articulación 3 vel (rad/s)')


y los perfiles de las aceleraciones:
>> subplot(2,1,1)
>> plot(t,qdd(:,2))
>> title('Aceleración')
>> xlabel('Tiempo (s)');
Fundamentos de Robótica, Guía 6 13

>> ylabel('Articulación 2 acel (rad/s^2)')


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

>> ylabel('Articulación 3 acel (rad/s^2)')


Parte IV. Trayectorias cinemáticas
6. Como vimos en la guía anterior, la cinemática directa puede calcularse usando la función
fkine() con una apropiada descripción cinemática, en este caso, usamos la matriz p560 la cual
define la cinemática para el robot Puma 560 de 6 ejes.
>> fkine(p560, qz)

esta regresa la transformación homogénea correspondiente al último eslabón del manipulador.


fkine() también 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 transformación homogénea 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 transformación
homogénea de 44 y la tercera dimensión es el tiempo.
Por ejemplo, el primer punto es:
>> T(:,:,1)

y el décimo 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,:)))
14 Fundamentos de Robótica, Guía 6

>> xlabel('Tiempo (s)');

>> 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 cinemática inversa también puede calcularse para una trayectoria.
Si tomamos una ruta Cartesiana en línea 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 cinemática inversa. Cuando resolvemos para una trayectoria, las coordenadas
iniciales de las articulaciones para cada punto se toman como el resultado de la solución 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
solución cinemática 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 línea recta:
>> subplot(3,1,1)
>> plot(t,q(:,1))
>> xlabel('Tiempo (s)');
>> ylabel('Articulación 1 (rad)')
>> subplot(3,1,2)
>> plot(t,q(:,2))
>> xlabel('Tiempo (s)');
>> ylabel('Articulación 2 (rad)')
>> subplot(3,1,3)
>> plot(t,q(:,3))
>> xlabel('Tiempo (s)');

>> ylabel('Articulación 3 (rad)')


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

>> plot(p560, q)
Fundamentos de Robótica, Guía 6 15

Parte V. Trayectorias dinámicas


8. Como con otras funciones, la dinámica inversa también puede calcularse para cada punto en una
trayectoria. Cree una trayectoria de coordenadas de las articulaciones y calcule la velocidad y la
aceleración también:
>> 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 dinámica inversa


Ahora pueden graficarse las torcas como función 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 función 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 fracción 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 articulación 2 (Nm)')
>> subplot(2,1,2)
>> plot(t,[tau(:,3) taug(:,3)])
>> xlabel('Tiempo (s)');

>> ylabel('Torca en la articulación 3 (Nm)')


La inercia vista por el motor de la cintura (articulación 1) cambia marcadamente con la configuración
del robot. La función inertia() calcula la matriz de inercia del manipulador para cualquier
configuración dada.
Calcularemos la variación en la inercia de la articulación 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 articulación 1 (kgms^2)')


16 Fundamentos de Robótica, Guía 6

Claramente, la inercia vista por la articulación 1 varía considerablemente sobre esta ruta. Este es uno de
muchos desafíos para el diseño del control en robótica, lograr estabilidad y altas prestaciones en la
faseta de la variación de la planta. Efectivamente para este ejemplo la inercia varía en un factor de:
>> max(M11)/min(M11)

9. Salga de los programas y apague la computadora.

Análisis de Resultados

 Cree el modelo dinámico del manipulador presente en el laboratorio de Automatización.

Investigación Complementaria

 Investigue como realizar los ejemplos de la guía usando simulink.


Bibliografía

[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. 651–670, 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. 215–221, June 1955.
[7] C. S. G. Lee, “Robot arm kinematics, dynamics and control,” IEEE Computer, vol. 15,
pp. 62–80, 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. 303–309, 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. 449–455, 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. 51–71,
MIT, 1982.
[12] C. S. G. Lee, B. Lee, and R. Nigham, “Development of the generalized D’Alembert
equations of motion for mechanical manipulators,” in Proc. 22nd CDC, (San Antonio,
Texas), pp. 1205–1210, 1983.
[13] T. Kane and D. Levinson, “The use of Kane’s dynamical equations in robotics,” Int. J.
Robot. Res., vol. 2, pp. 3–21, Fall 1983.
Fundamentos de Robótica, Guía 6 17

[14] J. Uicker, On the Dynamic Analysis of Spatial Linkages Using 4 by 4 Matrices. PhD
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. 69–73, 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 open-
chain linkages utilizing Newton-Euler methods,” Mathematical Biosciences. An International Journal,
vol. 43, pp. 107–130, 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. 1343–1346, 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. 69–76, 1980.
[22] J. Hollerbach, “A recursive Lagrangian formulation of manipulator dynamics and a
comparative study of dynamics formulation complexity,” IEEE Trans. Syst. Man Cy-
bern., vol. SMC-10, pp. 730–736, Nov. 1980.
[23] W. M. Silver, “On the equivalance of Lagrangian and Newton-Euler dynamics for
manipulators,” Int. J. Robot. Res., vol. 1, pp. 60–70, 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. 205–211, 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. 689–694, 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. 510–18, 1986.
 http://www.cat.csiro.au/cmst/staff/pic/robot
 ARTÍCULO {Corke96b,
AUTOR = {P.I. Corke},
REVISTA = {IEEE Robotics and Automation Magazine},
MES = mar,
NÚMERO = {1},
PÁGINAS = {24-32},
TITULO = {A Robotics Toolbox for {MATLAB}},
VOLUMEN = {3}, AÑO = {1996}
18 Fundamentos de Robótica, Guía 6
Fundamentos de Robótica, Guía 6 19

Hoja de cotejo: 6

Guía 6: La Caja de herramientas de Robótica para Matlab II

Alumno: Maquina No:

Docente: GL: Fecha:

EVALUACION

% 1-4 5-7 8-10 Nota

CONOCIMIENTO 25% Conocimiento Conocimiento y Conocimiento


deficiente de los explicación completo y
fundamentos incompleta de los explicación clara
teóricos fundamentos de los fundamentos
teóricos teóricos

APLICACIÓN 70% No genera Da observaciones Aplica


DEL conclusiones acerca correctas pero no correctamente el
de las aplicaciones completas. conocimiento y da
CONOCIMIENTO
prácticas de los explicaciones
Aplica el
servomotores correctas de la
conocimiento a
utilidad del
No comprende la situaciones
laboratorio
utilidad del concretas
recibido.
procedimiento

ACTITUD 2.5% Es un observador Participa Participa


pasivo. ocasionalmente o propositiva e
lo hace integralmente en
constantemente toda la práctica.
pero sin
coordinarse con su
compañero.
20 Fundamentos de Robótica, Guía 6

2.5% Es ordenado; pero Hace un uso Hace un manejo


no hace un uso adecuado de los responsable y
adecuado de los recursos, respeta adecuado de los
recursos las pautas de recursos conforme
seguridad; pero es a pautas de
desordenado. seguridad e
higiene.

TOTAL 100%
%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 Iyz Ixz Jm G
stanford_dyn = [
-pi/2 0 0 0.412 0 9.29 0 .0175 -0.1105 0.276 0.255 0.071 0 0 0 0.953 1
pi/2 0 0 0.154 0 5.01 0 -1.054 0 0.108 0.018 0.100 0 0 0 2.193 1
0 0 -pi/2 0 1 4.25 0 0 -6.447 2.51 2.51 0.006 0 0 0 0.782 1
-pi/2 0 0 0 0 1.08 0 0.092 -0.054 0.002 0.001 0.001 0 0 0 0.106 1
pi/2 0 0 0 0 0.63 0 0 0.566 0.003 0.003 0.0004 0 0 0 0.097 1
0 0 0 0.263 0 0.51 0 0 1.554 0.013 0.013 0.0003 0 0 0 0.020 1
];
qz = [0 0 0 0 0 0];
stanf = robot(stanford_dyn);
stanf.plotopt = {'workspace', [-2 2 -2 2 -2 2]};
stanf.name = 'Stanford arm';

You might also like