Guía
La Caja de Herramientas de Robótica (versión 7.0) Para MATLAB parte I.
4
Facultad: Ingeniería. Escuela: Electrónica Asignatura: Fundamentos de Robótica
Objetivos específicos • • • • •
Utilizar la caja de herramientas de Robótica para MatLab en la creación de manipuladores simulados. Realizar las operaciones básicas de traslación y rotación de marcos de referencia. Realizar la solución al problema de la cinemática directa. Realizar la solución al problema de la cinemática inversa y saber explicar sus problemas y limitaciones. Utilización del Jacobiano para la cinemática directa e inversa.
Introducción Teórica Convenciones sobre cinemática Mucha gente no sabe que hay dos formas diferentes de la representación Denavit-
Hartenberg para eslabones en serie en la cinemática de los manipuladores:
1. La clásica como aparece en el artículo original de 1955 de Denavit and Hartenberg y usado en libros de texto como el de Paul[1] , Fu etal[2], o Spong y Vidyasagar[3]. 2. La forma modificada introducida por Craig[4] en su libro de texto.
1
Guía
4
Los robots típicos son manipuladores con eslabones en serie serie comprendiendo un conjunto 1 de cuerpos llamados eslabones, eslabones, en una cadena, conectados por articulaciones , cada unión tiene un grado de libertad, si es traslacional o rotativa. Para un manipulador con n articulaciones numeradas desde 1 hasta n, hay n + 1 eslabones numerados desde 0 hasta n. El eslabón 0 es la base del manipulador, generalmente fijo, y el eslabón n lleva el elemento terminal. La articulación i conecta el eslabón i con el i – 1. Un eslabón puede considerarse como un cuerpo rígido definiendo la relación entre dos ejes de acción vecinos. Un eslabón puede especificarse por dos números, la longitud del eslabón y el giro el giro del eslabón, eslabón, los cuales definen el lugar relativo de los dos ejes en el espacio. Los parámetros de los eslabones para el primero y el último no tienen importancia, pero se escogen arbitrariamente que sean cero. Las articulaciones pueden describirse por dos parámetros. El desplazamiento del eslabón es eslabón es la distancia desde un eslabón al siguiente a lo largo del eje de la articulación. El ángulo de la articulación es articulación es la rotación de un enlace con respecto al siguiente sobre el eje de articulación. Para facilitar la descripción del lugar de cada eslabón se une un marco de coordenadas a él – el marco i está unido al eslabón i. Denavit-Hartenberg propusieron un método matricial de asignación sistemática de sistemas de coordenadas a cada eslabón de una cadena articulada. El eje de revolución de la articulación i está alineado con z i-1. El eje xi-1 está dirigido a lo largo de la normal desde z desde z i-1 hasta z hasta z i y para los ejes de intercepción es paralelo paralelo a z i-1 × z i .Los parámetros de eslabones y articulaciones pueden resumirse como: longitud del eslabón giro del eslabón desplazamiento
αi
la distancia de desplazamiento entre los ejes z ejes z i-1 y z i a lo largo del eje x eje xi; el ángulo desde el eje z eje z i-1 al eje z eje z i sobre el eje x eje xi;
d
la distancia desde el origen del
ai
i –1 al eje a lo largo del
2
Guía
Y fuerzas generalizadas para una articulación rotativa para una articulación prismática
Figura 4.1.a. Forma estándar
Qi
=
τ i f i
4
3
Guía
cos θ i sin θ i i −1 Ai = 0 0
− sin θ i
cos α i
cosθ i cos α i
sin θ i cos α − cosθ i
sin α i
4
a i cosθ i a i sin θ i
sin α i
cos α i
d i
0
0
1
(4.1)
representando cada marco de coordenadas del eslabón con respecto al previo sistema de coordenadas del eslabón; esto es: 0
i −1
T i = 0 T i −1 Ai
Donde
0
(4.2)
T i es la transformación homogénea que describe la posición del marco de
coordenadas con respecto al sistema de coordenadas global 0. Dos metodologías diferentes se han establecido para asignar marcos de coordenadas, cada uno de los cuales permite alguna libertad en la unión del marco de coordenadas actual: 1. El marco i tiene su origen a lo largo del eje de la articulación i + 1, como se describe en Paul[1] y Lee[2,7]. 2. El marco i tiene su origen a lo largo del eje de la articulación i, y es frecuentemente referido como la forma modificada de Denavit-Hartenberg (MDH) [8]. Esta forma es comúnmente usada en de literatura que trata con dinámica de manipulador. La matriz de transformación del eslabón para esta forma es diferente.
La figura 4.1 muestra las diferencias de notación entre las dos formas. Note que a i siempre es la longitud del eslabón i, pero es el desplazamiento entre los orígenes del
4
Guía
4
Cartesiano, 3 en traslación y 3 en rotación, así los manipuladores robóticos tienen 6 articulaciones o grados de libertad para permitir una postura arbitraria del elemento 0 terminal. La trasformación del manipulador T n se escribe frecuentemente como T n o T 6 para un robot de 6 ejes. La solución cinemática directa puede calcularse para cualquier manipulador, no respectiva del numero de articulaciones o estructura cinemática. De mayor uso en la planificación de rutas del manipulador es la solución cinemática inversa. q = K − (T ) 1
(4.5)
la cual da los ángulos de las articulaciones necesarios para alcanzar la posición del elemento terminal. En general esta solución no es única, y para algunas clases de manipuladores no existe una solución de forma cerrada. Si el manipulador tiene mas de 6 articulaciones se dice que es redundante y que la solución para los ángulos de las articulaciones están sub-determinadas. Si no pueden determinarse soluciones para una postura particular del manipulador esa configuración se dice que es singular . La singularidad puede deberse a un alineamiento de ejes reduciendo los grados de libertad efectivos, o el punto T estando fuera de alcance. La matriz Jacobiana del manipulador, J 0 , transforma velocidades en el espacio de articulaciones a velocidades del elemento terminal en el espacio Cartesiano. Para un manipulador de n-ejes la velocidad Cartesiana del elemento terminal es: 0
•
•
x
0
n
= J θ
q
(4.6)
5
Guía
4
donde el Jacobiano está dada por Paul[10] como
[n o a ]T [ p × n p × o p × a]T J A = f ( T A ) = 0 [n o a]T
B
B
(4.10)
A continuación se presentan las funciones existentes en la caja de herramientas de Robótica.
6
Guía
4
7
Guía
4
Procedimiento PARTE I. Herramientas matemáticas.
Según la figura 4.2 el sistema O’UVW está trasladado un vector p(6,-3,8) con respecto del sistema OXYZ. Calcular las coordenadas (r x, r y, r z) del vector r cuyas coordenadas con respecto al sistema O’UVW son rUVW(-2,7,3).
Figura 4.2 Solución:
>> r = transl([6,-3,8])*[-2,7,3,1]'
r x = _____, r y = _____, r z = _____
8
Guía
4
r1 = transl([6,-3,8])*[4,4,11,1]'
r 1x = _____, r 1y = _____, r 1z = _____ 2. Según la figura 4.4 el sistema OUVW se encuentra girado –90° alrededor del eje OZ con respecto al sistema OXYZ. Calcular las coordenadas del vector rXYZ si rUVW = T [4,8,12] .
Figura 4.4 Solución: >> r = rotz(-pi/2)*[4,8,12,1]'
9
Guía
4
Solución: >> r = transl(8,-4,12)*rotx(pi/2)*[-3,4,-11,1]'
r x = _____, r y = _____, r z = _____ 3. Un sistema OUVW ha sido trasladado un vector p(8,-4,12) con respecto al sistema OXYZ y girado 90° alrededor del eje OX (figura 4.6). Calcular las coordenadas (r x, r y, r z) del vector r con coordenadas rUVW(-3,4,-11).
Figura 4.6 Solución:
10
Guía
4
Solución: T = T( p)T(u,-90°)T(v,90°) >> T = transl([-3,10,10]) * rotx(-pi/2) * roty(pi/2)
6. Obtener el cuaternio que representa una rotación de 90° sobre el eje k (3,-2,1). Rot(k ,90°) Solución: >> Q = quaternion([3 -2 1],pi/2)
7. Obtener el vector r’ resultante de aplicar la misma rotación del numeral 8. Rot(k ,90°) donde k (3,-2,1), sobre el vector r(5,2,-6). Solución: * Q (0,r) Q o
o
>> Qconj = quaternion(-[3 -2 1],pi/2); >> r1 = Q * quaternion([0,5,2,-6]) * Qconj
r 1x = _____, r 1y = _____, r 1z = _____ PARTE II. Creación de una nueva definición de robot.
1. Vamos a tomar un ejemplo simple de un manipulador planar de dos eslabones de Spong & Vidyasagar[3] (Figura 3-6, p73) el cual tiene los siguientes parámetros (estándar) de eslabones de Denavit-Hartenberg.
11
Guía
4
noname (2 axis, RR) grav = [0.00 0.00 9.81] alpha A 0.000000 1.000000 0.000000 1.000000
theta 0.000000 0.000000
standard D&H parameters D 0.000000 0.000000
R/P R R
(std) (std)
>>
2. Las primeras líneas crean los objetos de eslabones, uno por cada eslabón del robot. Note el segundo argumento de link el cual especifica que la convención estándar de D&H será usada (ésta es por defecto). Los argumentos del objeto de eslabones pueden encontrarse de >> help link . . LINK([alpha A theta D sigma]) . .
La cual muestra el orden en que los parámetros de link deben suministrarse (el cual es diferente al orden de las columnas de la tabla de arriba). El quinto argumento, sigma, es una bandera que indica si la unión es rotativa (sigma es cero) o prismática (sigma diferente de cero). Los objetos de link se pasan como un arreglo a la función robot() la cual crea un objeto robot el cual se pasa a muchas de las otras funciones de la caja de herramientas. Note que la presentación de los datos del eslabón inclu yen la convención cinemática entre paréntesis a la derecha, (std) para la forma estándar, y (mod) para la forma modificada.
12
Guía
4
Figura 4.7 PARTE III. El problema cinemático directo. 1. Encuentre la solución completa del problema cinemático directo para un robot cilíndrico.
13
Guía
4
Solución: En primer lugar se localizan los sistemas de referencia de cada una de las articulaciones del robot figura 4.8. Posteriormente se determinan los parámetros de DenavitHartenberg del robot, con los que se construye la tabla 4.1. θ
d
a
α
Articulación 1 q1 l1 0 0 2 90 d2 0 90 3 0 d3 0 0 4 q4 l4 0 0 Tabla 4.1. Parámetros D-H para el robot cilíndrico de la figura 4.9. Solución: >> >> >> >>
L1 D2 D3 L4
= = = =
link([0 0 0 1 0]); link([pi/2 0 pi/2 1 1]); link([0 0 0 1 1]); link([0 0 0 1 0]);
>> rob = robot({L1 D2 D3 L4}) >> plot(rob, [0 0 0 0])
Una vez creado el robot se realiza la solución completa al problema cinemático directo con la función fkine: Para unas coordenadas de las articulaciones de cero, tenemos:
14
Guía
4
Ejemplo: Usando el robot creado en el numeral anterior obtenemos la solución: Para las coordenadas de las articulaciones q = [-pi/4 0.5 0.5 pi/3] se obtiene la siguiente matriz de transformación: >> T = fkine(rob,[-pi/4 0.5 0.5 pi/3]) >> qi = ikine(rob,T,[0 0 0 0],[1 1 1 1 0 0])
Note que coinciden con las coordenadas de las articulaciones originales. Una solución no siempre es posible, por ejemplo si la transformación describe un punto fuera del alcance del manipulador. También la solución no es necesariamente única y hay singularidades en las cuales el manipulador pierde grados de libertad y las coordenadas de las articulaciones llegan a ser linealmente dependientes. PARTE V. El Jacobiano.
1. Un movimiento diferencial puede representarse por un vector de 6 elementos con los elementos [dx dy dz drx dry drz] Donde los primeros 3 elementos son una traslación diferencial y las últimas 3 son una rotación diferencial. Cuando se trata con rotaciones infinitesimales, el orden no tiene
15
Guía
4
>> DT = tr2jac(T) * D; >> DT'
tr2jac() ha calculado una matriz Jacobiana 6×6 la cual transforma los cambios
diferenciales desde el primer marco al siguiente. La matriz Jacobiana del manipulador relaciona el movimiento diferencial de coordenadas de las articulaciones al movimiento Cartesiano diferencial; dX = J(q) dQ
para un manipulador de n articulaciones el Jacobiano del manipulador es una matriz de 6×n y es muy usado en muchos esquemas de control del manipulador. Para un manipulador de 6 ejes, como el Puma 560 el Jacobiano es cuadrado. Dos Jacobianos se usan frecuentemente, los cuales expresan la velocidad Cartesiana en el marco de coordenadas globales, >> puma560 >> q = [0.1 0.75 -2.25 0 .75 0];
>> J = jacob0(p560, q)
o el marco de coordenadas T6 >> J = jacobn(p560, q)
Note que el bloque superior izquierdo es cero. Esto indica, correctamente, que el movimiento de las articulaciones 4-6 no causa movimiento de traslación del elemento terminal.
16
Guía
4
>> qvel = Ji * vel; >> qvel'
Esta es una estrategia alternativa para calcular una trayectoria cartesiana y resolver la cinemática inversa. Sin embargo como en el otro caso, esta estrategia también tiene dificultades de singularidad del manipulador en donde el Jacobiano es singular. 3. El Jacobiano relaciona la velocidad de la articulación con la velocidad del elemento terminal expresada en el marco de referencia del elemento terminal. Si deseamos, en lugar de ello, expresar la velocidad en términos del marco global, esto es d0X, podemos escribir: d6X = Jac(T6) d0X >> T6 = fkine(p560, q); % Calcula la transformación del elemento terminal >> d6X = tr2jac(T6) * vel; % traslada la velociad del marco global al marco T6 >> qvel = Ji * d6X; % calcula la velocidad de la articulación requerida, como antes >> qvel'
Note que este valor de la velocidad de la articulación es muy diferente al calculado antes, lo cual es por el movimiento en la dirección del eje X de T6. Singularidades
4. En una singularidad del manipulador o degeneración el Jacobiano llega a ser singular. En la posición ‘ready’ del robot Puma por ejemplo, dos de las articulaciones de la muñeca están alineadas ocasionando la pérdida de un grado de libertad. Esto se revela por el rango del Jacobiano.
17
Guía
4
>> maniplty(p560, q, 'a')
ambas medidas indican que esta posición en particular no está bien condicionada. Una clase interesante de manipuladores son aquellos que son redundantes, es decir, que tienen más de 6 grados de libertad. El cálculo del movimiento de las articulaciones para tales manipuladores no es robusto. Mejoras se han sugerido basadas en la seudo inversa del Jacobiano (la cual no es cuadrada) o la descomposición de valores singulares del Jacobiano.
Análisis de resultados •
Cree el modelo cinemático del manipulador presente en el laboratorio de Automatización.
Investigación complementaria • •
Investigue como realizar los ejemplos de la guía usando simulink. Investigue sobre el robot Puma 560.
Bibliografía •
Barrientos, Antonio; Peñín, Luis Felipe; Balaguer, Carlos; Aracil, Rafael. Fundamentos de Robótica, primera edición en español, Mc Graw Hill, 1998. Corke, Peter I. Manual de toolbox de robótica, Abril de 2002
18
Guía
5
La caja de Herramientas de Robótica (versión Facultad: Ingeniería. 7.0) Escuela: Electrónica Para MATLAB Parte II. Asignatura: Fundamentos de Robótica 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).
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.
Introducción Teórica 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 5.1, y
1
5
Guía
2
C describe los efectos de Coriolis y centrípeto – Las torcas centrípetas son proporcionales •
•
a q i q 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 es el vector de fuerzas generalizas asociados con las coordenadas generalizadas q . 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 4 [15] usando el enfoque de Lagrange. Debido al enorme coste computacional O(n ), 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. Método
Multiplicaciones
Adiciones Para N = 6
De Lagrange [22]
32 12 n
4
+ 171 14
5 + 86 12
n2
− 128
NE Recursivo[22]
150n − 48
n
3
+ 53 13 n
25n
4
+ 66 13 n
+ 129 12
n2
96 131n − 48
+
3
Multiplicaciones Sumas 66,271 51,548
42 13 n 852
738
Guía
5
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 5.1.
5.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 1 base . La Figura 5.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.
3
Guía
5
4
Recursividad hacia delante, 1 ≤ i ≤ n , Si el eje i +1 es rotativo • i ω i +1 = Ri ω i + z 0 q i +1 i +1 • •• • i • i i +1 ω i +1 = Ri ω i + z 0 q i +1 + ω i × z 0 q i +1
i +1
i +1 i +1
i +1
v i +1 =
i +1
ω i +1 ×
i +1
•
v i +1 =
•
ω i +1 ×
i +1
*
i +1
*
p p
i +1 +
i +1
i
i +1 +
i +1
i +1
(5.2) (5.3)
R i i +1 v i ω i +1
(5.4)
{
×
i +1
ω i +1
i +1
×
i +1
p
* i +1
}+
i
•
i +1
Ri v i
(5.5)
Si el eje i +1 es prismático i +1 i +1
ω i +1 =
i +1
Ri
i
ω i
i
•
ω i +1 =
i +1
Ri
(5.6)
•
(5.7)
ω i
i • i +1ω × i +1 * p i +1 i +1 i +1 • i • • •• i +1 • i +1 * i +1 i +1 i +1 v i +1 = Ri z 0 q i +1 + v i + ω i +1 × p i +1 + 2 ω i +1 × R i z 0 q i +1 + i +1
i +1
v i +1 = Ri z 0 q i +1 + v i +
i +1 •
i
i
•
ω i +1 × i
(
v i = ω i × s i + ω i × •
i +1
ω i +1 ×
i +1
p
* i +1
{ ω × s }+ v i
i
i
i
i
(5.8)
(5.9)
) (5.10)
Guía
5
es la velocidad angular del eslabón i
ω i •
es la aceleración angular del eslabón i es la velocidad lineal del marco i
ω i
vi •
vi vi
es la aceleración lineal del marco i es la velocidad lineal del CDM del eslabón i
•
vi ni f i
es la aceleración lineal del CDM del eslabón i es el momento ejercido sobre el eslabón i por el eslabón i -1 es la fuerza ejercida sobre el eslabón i por el eslabón i -1
N i F i Qi
es el momento total en el CDM del eslabón i es la fuerza total en el CDM del eslabón i es la fuerza o torca ejercida por el actuador en la articulación i
i −1
Ri
es la matriz ortogonal de rotación que define la orientación del marco i con respecto al marco i –1. Es la porción 3×3 superior de la matriz de transformación de eslabones dada por:
cosθ i i −1 Ri = sin θ i 0 i
Ri −1
i
*
p i
− cos α i
sin α i sin θ i
sin θ i
cos α i sin θ i
− sin α i
sin α i =
(
Ri )
i −1
−1
sin θ i
cos α i =
(
Ri )
i −1
T
(5.16)
(5.17)
es el desplazamiento desde el origen del marco i –1 hasta el marco i con respecto al
5
Guía
5
Donde g 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
(5.20)
ω 0 =
0
(5.21)
0
(5.22)
•
ω 0 =
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 (5.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 3 1’ es O(n ) para un manipulador de n-ejes. Sus otros métodos son incrementalmente más 3 sofisticados pero reducen el costo computacional, aunque se mantienen en O(n ). 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.
6
Guía
5
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 (5.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 propietario y no está disponible para los investigadores.
Materiales y equipos No. Cantidad Descripción 1 1 Sistema operativo Windows 2 1 Programa MATLAB 3 1 Caja de herramientas de Robótica
Procedimiento
7
Guía
5
Figura 5.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 5.2. Los correspondientes parámetros de D-H se muestran en la Tabla 5.2.
Articulación
θi
d i
ai
αi
1
θ1
0
0
-90
2
0
d 2
0
0
Tabla 5.2. Parámetros D-H del robot polar del numeral 1.
8
Guía
1
S 1 = [0,0, L1]
2
5
S 2 = [0,0, 0]
Matriz de inercia del eslabón i respecto de su centro de masas:
0 0 0 1 I 1 = 0 0 0 0 0 0
0 0 0 2 I 2 = 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.
9
Guía
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 ];
% Vector que representa la matriz de inercia (esta variable es I en el libro) L{1}.I = [
0
0
L{2}.I = [
0
00
0
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;
%
10
Guía
5
El ejemplo anterior calcula el par y la fuerza en las articulaciones cuando el manipulador está en la posición θ1 = 0 rad d 2 = 1 m se mueve con una velocidad de las articulaciones de 2 5 rad/s y una aceleración de 1 rad/s . 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 5.3, manteniéndose la definición de los sistemas de referencia de la Figura 5.2, lo único que cambiará es el vector de gravedad expresado en el marco de referencia de la base sería:
Figura 5.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:
11
Guía
5
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))
12
Guía
5
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);
13
Guía
5
>> subplot(2,1,1) >> plot(t,qdd(:,2)) >> title('Aceleración') >> xlabel('Tiempo (s)'); >> 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():
14
Guía
5
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,:))) >> 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,:)));
15
Guía
5
>> 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
16
Guía
5
>> 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)')
17
Guía
5
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
18
Guía
5
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
19
Guía
5
[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, CarnegieMellon 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},
20