Professional Documents
Culture Documents
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
Objetivos Específicos
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
150n 48 131n 48
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 i1
R i i z 0 q i1
(6.2)
i 1
i
i 1 R i i z 0 q i 1 i i z 0 q i 1
i1
(6.3)
i 1 i 1 i1 * i1 i
v i1 i1 p i1 R i
i1 v i
(6.4)
i 1 i 1 i
i1 i1 i 1 i1
v i1 i1 p *
i1 i1
i 1
i1
i1
p *
i1
i1
R v i
i
(6.5)
Si el eje i +1 es prismático
i 1
i1R
i
i 1
i i
(6.6)
i 1 i
i 1 i1
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 i1 i 1R i z 0 q i1
v i i 1 i 1 p i 1
(6.8)
i 1
i
i 1
v i1 i 1 R i z 0 q i1
v i i1 i1 p *
i1 2 i 1
i1
i1
R iz0 q i 1
(6.9)
i 1
i 1 i 1
i 1
i1
p
*
i1
i
i
v i i s ii 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 i1 i1
n i 1 i1
R i
i
p
*
i i1
f i1
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
i1 z 0 si el e s la b ó n i1 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
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 i1
R i 1
i1
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
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
Articulación i di ai i
1 1 0 0 -90
2 0 d2 0 0
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.
%
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
pol.manuf = 'UDB';
Paso 4. Ejecutar la función rne() de la caja de herramientas de robótica:
>> polar
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
>> 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)');
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 44 y la tercera dimensión es el tiempo.
Por ejemplo, el primer punto es:
>> T(:,:,1)
>> 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
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)');
>> plot(p560, q)
Fundamentos de Robótica, Guía 6 15
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)
Análisis de Resultados
Investigación Complementaria
[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
EVALUACION
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';