Professional Documents
Culture Documents
Facultad: Ingeniería
Escuela: Electrónica
Asignatura: Fundamentos de Robótica
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
2 Fundamentos de Robótica, Guía 6
un movimiento dado para determinar las fuerzas generalizadas, se extenderá en la sección 6.1, y
• 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
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
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
(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.
[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].
4 Fundamentos de Robótica, Guía 6
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.
Recursividad hacia delante, 1 ≤ i ≤ n ,
Si el eje i +1 es rotativo
i+ 1 i •
ω i+ 1 = i + 1Ri ω i + z 0 q i + 1
(6.2)
i+ 1 •
i+ 1 i• ••
i •
ω i+ 1 = Ri ω i + z 0 q i+ 1 + ω i × z 0 q 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 i+ 1 i+ 1 * i+ 1
v i+ 1 = ω i+ 1 × p i+ 1 + ω i+ 1 × ω i+ 1 × p i+ 1 Ri v i (6.5)
Si el eje i +1 es prismático
i+ 1
= i + 1Ri ω
i
ω i+ 1 i
(6.6)
i+ 1 • i •
ω i+ 1 = i + 1Ri ω i
(6.7)
i+ 1 • i i+ 1 *
v i + 1 = i + 1Ri z 0 q i + 1 + v i + i+ 1
ω i+ 1 × p i+ 1
(6.8)
i+ 1 •
•• i •
i+ 1 •
i+ 1 i+ 1 i+ 1
•
Ri z 0 q i + 1 + v i +
i+ 1 *
v i+ 1 = ω i+ 1 × p i+ 1 +2 ω i+ 1 × R i z 0 q i+ 1 +
(6.9)
Fundamentos de Robótica, Guía 6 5
i+ 1
ω i+ 1 × ( i+ 1
ω i+ 1 ×
i+ 1
p
*
i+ 1 )
{ω }
• i •
i i i
vi = ω i × si + ω i × i × s i + i vi (6.10)
•
i i
F i = mi v i (6.11)
i •
i• i •
i
N i = J i ω i + ω i × J i ω i
(6.12)
i
Ri − 1 = ( i− 1
Ri ) −1
= ( i− 1
Ri ) T
(6.17)
i *
pi
es el desplazamiento desde el origen del marco i –1 hasta el marco i con respecto al marco i.
ai
p = d i sin α i
i *
i (6.18)
d i cos α i
ω0= 0 (6.21)
•
ω 0 = 0 (6.22)
Fundamentos de Robótica, Guía 6 7
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:
• tres primeros momentos, los cuales pueden expresarse como el lugar del CDM, s i , con respecto
a algún dato en el eslabón o como un momento S i = mi s 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 XX J XY J XZ
J = J XY J YY J YZ (6.23)
J XZ 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
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
8 Fundamentos de Robótica, Guía 6
Procedimiento
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:
Fundamentos de Robótica, Guía 6 9
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');
10 Fundamentos de Robótica, Guía 6
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.
Fundamentos de Robótica, Guía 6 11
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:
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
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
>> plot(p560, q)
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);
>> 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)')
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)
>> T(:,:,10)
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
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)');
Fundamentos de Robótica, Guía 6 15
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)');
16 Fundamentos de Robótica, Guía 6
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)')
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
Bibliografía
[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.
[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,
18 Fundamentos de Robótica, Guía 6
Hoja de cotejo: 6
E VA L UA CIO N
Not
% 1-4 5-7 8-1 0
a
TO TA L 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';