Está en la página 1de 30

Fundamentos de Robótica: 2020-I

- Tema 4 -
Cinemática Directa de Robots
Manipuladores (I)
Prof. Oscar E. Ramos, Ph.D.

- 29 de abril del 2020 -


Temas

1. Introducción

2. Método de Análisis Geométrico

3. Ejemplo: Robot SCARA

2
Cinemática de Robots Manipuladores

{n}

qi+1

Relación entre articulaciones (qi)


y la posición/orientación de algún
punto (ejemplo: sistema {n})
qi
{0}

3
Cinemática de Robots Manipuladores

• Formulaciones: directa e inversa

x  f (q)

Cinemática
Espacio directa Espacio
articular Cartesiano
q  (q1 , , qn ) x  ( x, y , z ,  ,  ,  )
Cinemática
inversa

q  f 1 (x)
- Cinemática directa
Dada una configuración articular, determina la posición/orientación de alguna
parte del robot (ejm. efector final)
- Cinemática inversa
Determina la configuración articular necesaria para alcanzar una posición /
orientación de alguna parte del robot
4
Cinemática de Robots Manipuladores

• Formulaciones: directa e inversa

p,R = ?

¿Qué valores debe tener q


Dado q, ¿dónde está el
para la posición/orientación
efector final?
mostrada del efector final?

Cinemática directa Cinemática inversa


5
Cinemática Directa
Ejemplo
Robot de 6 grados de libertad (gdl)

Cinemática directa: posición y orientación


del efector final

De: Springer Handbook of Robotics, 2nd Ed. (2016) 6


Cinemática Directa
Ejemplo (robot manipulador R-R): dado q1, q2 , ¿dónde está el efector final?

ŷ ye {e} xe - Posición del efector final


y 
x  l1 cos(q1 )  l2 cos(q1  q2 )
l2
y  l1 sin(q1 )  l2 sin(q1  q2 )
l1 q2
- Orientación del efector final
{0} q1   q1  q2
x x̂
 x l1 cos(q1 )  l2 cos(q1  q2 ) 
 
Posición y orientación: x   y  x   l1 sin(q1 )  l2 sin(q1  q2 ) 
alrededor    
del eje z  
q1  q2

cos(q1  q2 )  sin(q1  q2 ) 0 l1 cos(q1 )  l2 cos(q1  q2 ) 


Como matriz de  sin(q  q ) cos(q  q ) 0 l1 sin(q1 )  l2 sin(q1  q2 ) 
0  1 2 1 2
transformación Te   0 0 1 0 
homogénea:  
 0 0 0 1 
Nota: el sistema de referencia del efector final fue asignado arbitrariamente 7
Cinemática Directa
Ejemplo (robot manipulador R-R): dado q1, q2 , ¿dónde está el efector final?

ŷ ye {e} xe - Posición del efector final


y 
x  l1 cos(q1 )  l2 cos(q1  q2 )
l2
y  l1 sin(q1 )  l2 sin(q1  q2 )
l1 q2
- Orientación del efector final
{0} q1   q1  q2
x x̂
 x l1 cos(q1 )  l2 cos(q1  q2 ) 
Posición y orientación: x   y  x   l1 sin(q1 )  l2 sin(q1  q2 ) 
   q1  q2 

 q1 
Vector articular: q    x  f (q)
 q2 

8
Cinemática Directa
• De manera genérica: configuración de cada articulación

x  f (q)

Posición/orientación de algún punto operacional (ej. efector final)

• Punto operacional x
- Se suele representar con respecto a la base
x3
• Función f (de cinemática directa)
- Es diferente para diferentes x
- Es (casi siempre) una función altamente
no lineal
- Usualmente se expresa usando una
transformación homogénea (posición y x1 x2
orientación)
Robot Baxter
9
Cinemática Directa
Para una Cadena Cinemática Abierta

1 {2}
{1}
T2
{n  1}
0
T1 n 1
Tn
{0}

Base Efector
final {n}

• Transformación homogénea de cada sistema respecto del anterior:


Sistema anterior i 1 cada T depende (generalmente) de
Ti Sistema actual una sola articulación (variable)

• Cinemática directa: sistema {n} con respecto al sistema {0}


Posición/orientación del efector
0
Tn   0 T1  1T2  ...  n  2 Tn 1  n 1Tn  final con respecto a la base

10
Cinemática Directa
Sistema de Referencia del Efector Final

• (casi) Por convención:


o
[y] n {e}: sistema de referencia
[x] del efector final
{e} o a veces es llamado s
(sliding plane of jaws)
a [z]

- a: vector de approach (alineado con el eje de roll y apunta hacia afuera)


- o: vector orientación (alineado con el eje de abrir/cerrar la garra)
- n: vector normal (ortogonal al plano definido por o y a)
• Matriz de transformación homogénea:
 nx ox ax px 
Posición/orientación del efector
n oy ay p y  (px, py, pz): posición de {e}
final con respecto a la base
0
Te   y
 nz oz az pz  con respecto a la base
 
0 0 0 1
11
Cinemática Directa
Métodos

• En general:
- Asignan sistemas de referencia a los eslabones (no necesariamente a cada uno)
- Relacionan el sistema {i} con respecto al sistema {i-1}
- Aplican composición de transformaciones para obtener el sistema del efector
final con respecto a la base

12
Cinemática Directa
Métodos

• Métodos Geométricos
- Asignan sistemas de referencia arbitrarios (por inspección)
- Las relaciones entre sistemas de referencia son diferentes (arbitrarias) : no hay
una matriz de transformación homogénea general
- Ejemplos:
• Métodos de análisis geométrico
• Producto de exponenciales (PoE)

• Métodos Sistemáticos
- Asignan sistemas de referencia usando ciertas reglas
- Las relaciones entre sistemas se describen con parámetros (basados en reglas)
- Se obtiene transformaciones genéricas (similares) entre sistemas de referencia
- Ejemplos:
• Denavit-Hartenberg (DH)
• Hayati-Roberts
• Khalil-Kleinfinger, etc.
13
Temas

1. Introducción

2. Método de Análisis Geométrico

3. Ejemplo: Robot SCARA

14
Método de Análisis Geométrico
Introducción

• Característica principal: asignación arbitraria de sistemas de referencia

• Procedimiento
1. Asignar sistemas de referencia arbitrarios a cada eslabón (que se muevan
junto con el eslabón) → El movimiento suele ser alrededor del eje z o en el eje z

2. Describir cada sistema con respecto al anterior (usando matrices de


transformación homogénea)

3. Multiplicar las descripciones parciales (de la cadena cinemática) para obtener


el efector final con respecto del sistema de base

• Notas
- Al final se puede añadir un sistema de referencia “estándar” al efector final
- Los pasos 1 y 2 se pueden realizar eslabón por eslabón (primero para eslabón
1, luego para eslabón 2, …)

15
Método de Análisis Geométrico
Ejemplo 2D: Robot R-R

ŷ {e}
Procedimiento:
l2 1. Asignar sistemas de referencia
(que se muevan con cada eslabón)
{1} q2
l1 2. Relacionar un sistema con el
q1 anterior (0T1 y 1Te)
{0}

• 0T1: sistema {1} con respecto a {0} = “llevar” {0} a {1}


- Girar q1 alrededor de z: Rotz(q1) 0
T1  Trot z (q1 )Traslx (l1 )
- Trasladar l1 en el eje x resultante (sist. actual): Trx(l1)

cos(q1 )  sin(q1 ) 0 0  1 0 0 l1  cos(q1 )  sin(q1 ) 0 l1 cos(q1 ) 


 sin(q ) cos(q ) 0 0  0 1 0 0   sin(q1 ) cos(q1 ) 0 l1 sin(q1 ) 
0
T1   1 1

 0 0 1 0  0 0 1 0  0 0 1 0 
    
 0 0 0 1  0 0 0 1  0 0 0 1 
16
Método de Análisis Geométrico
Ejemplo 2D: Robot R-R

ŷ {e}
Procedimiento:
l2 1. Asignar sistemas de referencia
(que se muevan con cada eslabón)
{1} q2
l1 2. Relacionar un sistema con el
q1 anterior (0T1 y 1Te)
{0}

• 1Te: sistema {e} con respecto a {1} = “llevar” {1} a {e}


- Girar q2 alrededor de z: Rotz(q2) 1
Te  Trot z (q2 )Traslx (l2 )
- Trasladar l2 en el eje x resultante (sist. actual): Trx(l2)

cos(q2 )  sin(q2 ) 0 0  1 0 0 l2  cos( q2 )  sin(q2 ) 0 l2 cos(q2 ) 


 sin(q ) cos(q ) 0 0  0 1 0 0   sin(q2 ) cos(q2 ) 0 l2 sin(q2 ) 
1
Te   2 2

 0 0 1 0 0 0 1 0  0 0 1 0 
    
 0 0 0 1  0 0 0 1  0 0 0 1 
17
Método de Análisis Geométrico
Ejemplo 2D: Robot R-R

Procedimiento:
3. Multiplicar para obtener la matriz de transformación final 0Te
0
Te   0 T1  1Te 
cos(q1 )  sin(q1 ) 0 l1 cos(q1 )  cos(q2 )  sin(q2 ) 0 l2 cos(q2 ) 
 sin(q ) cos(q ) 0 l1 sin(q1 )   sin(q2 ) cos(q2 ) 0 l2 sin(q2 ) 
0
Te   1 1

 0 0 1 0  0 0 1 0 
  
 0 0 0 1  0 0 0 1 

cos( q1  q2 )  sin(q1  q2 ) 0 l1 cos( q1 )  l2 cos(q1  q2 ) 


 sin(q  q ) cos(q  q ) 0 l1 sin(q1 )  l2 sin(q1  q2 ) 
0
Te   1 2 1 2

 0 0 1 0 
 
 0 0 0 1 

Posición y orientación del efector final


con respecto al sistema de la base
Nota: ver la implementación en
Python en la página del curso 18
Temas

1. Introducción

2. Método de Análisis Geométrico

3. Ejemplo: Robot SCARA

19
Método Geométrico: Robot SCARA

• SCARA:
- Selective Compliant Assembly (Articulated) Robot Arm
- Es un “tipo” de robot: varios fabricantes

Robot SCARA de Adept (cobra s800) Robot SCARA de ABB (IRB910SC)

https://youtu.be/IRDJnwFDq88 https://youtu.be/97KX-j8Onu0

20
Método Geométrico: Robot SCARA

Robot SCARA de Adept Modelo esquemático de un robot SCARA

21
Método Geométrico: Robot SCARA

1. Llevar {0} a {1}


- Desplazar {0} una distancia l1 a lo largo del
q1 l3
eje z0. l2
- Luego girar un ángulo de 180°+q1 alrededor
del eje z0 llegando a {1} z1
y1 x1
0
T1  Traslz (l1 ) Trot z (180  q1 )

1 0 0 0  c1 s1 0 0
l4
0
 1 0 0  s
 1 c1 0 0  l1
0 0 1 l1   0 0 1 0 z0
   
0 0 0 1  0 0 0 1
y0
 c1 s1 0 0  x0
s c1 0 0 
0
T1   1
 0 0 1 l1 
  Asignación arbitraria de
 0 0 0 1
sistemas de referencia
Dado que la traslación y la rotación es con respecto al
mismo eje, se tiene: Traslz (l1 )Trot z ( q1 )  Trot z (q1 )Trasl z (l1 )
22
Método Geométrico: Robot SCARA

2. Llevar {1} a {2}


q2
- Desplazar {1} una distancia l2 a lo largo del
q1 l3
eje x1 l2 z2 y2
- Luego girar un ángulo -90°+q2 alrededor del
nuevo eje z llegando a {2} z1
y1 x1 x2
1
T2  Traslx (l2 )Trot z (90  q2 )

l4
1 0 0 l2   s2 c2 0 0
0 1 0 0   c s2 0 0 
l1
  2 z0
0 0 1 0  0 0 1 0
   
0 0 0 1  0 0 0 1
y0
x0
 s2 c2 0 l2 
 c s2 0 0 
1
T2   2
 0 0 1 0 Asignación arbitraria de
 
 0 0 0 1 sistemas de referencia

En este caso (como, en general) el producto no conmuta


23
Método Geométrico: Robot SCARA

3. Llevar {2} a {3}


q2 q3
Desplazar {2} una distancia l3 a lo largo del
q1 l3 q4
eje x2 para llegar a {3} l2 z2 y2
1 0 0 l3 
0 z1 z3 y3
2 1 0 0  y1 x1 x2
T3  Traslx (l3 ) 
0 0 1 0 x3
 
0 0 0 1

z4 x4 l4
4. Llevar {3} a {4} y4
l1
z0
- Desplazar {3} una distancia -l4+q3 a lo largo
del eje z3
y0
- Luego, girar un ángulo 90°+q4 alrededor de z x0
llegando a {4}
  s4 c4 0 0 
Asignación arbitraria de
c  s4 0 0 
3 sistemas de referencia
T4  Traslz (l4  q3 )Trot z (90  q4 )   4
0 0 1 q3  l4 
 
 0 0 0 1 

24
Método Geométrico: Robot SCARA

5. Multiplicar: llevar {0} a {4}


q2 q3
Expresar el efector final {4} en términos de la
q1 l3 q4
base {0} → multiplicar la cadena cinemática l2 z2 y2

0
T4   0 T1  1T2  2 T3  3 T4  y1
z1
x1 x2
z3 y3

x3

 c1 s1 0 0   s2 c2 0 l2   1 0 0 l3    s4 c4 0 0 
s c1 0 0   c2 0 0  0 1 0 0   c4 0  z4 x4
0
T4   1
s2  s4 0 l4
 0 0 1 l1   0 0 1 0  0 0 1 0  0 0 1 q3  l4  y4
     l1
 0 0 0 1  0 0 0 1  0 0 0 1  0 0 0 1  z0

 c124 s124 0 l3 s12  l2 c1 


x0
y0
s c124 0 l3c12  l2 s1 
0
T4   124
 0 0 1 l1  l4  q3 
 
 0 0 0 1 
Cinemática directa usando sistemas
de referencia arbitrarios

25
Método Geométrico: Robot SCARA

Opcionalmente:
q2 q3
Se puede usar la convención del efector final
q1 l3 q4
(ejes n = x, o = y, a = z) para el sistema {e} l2 z2 y2
- Girar {4} 180° alrededor de x4 z1 z3
x1 x2 y3
y1
1 0 0 0  1 0 0 0 x3
 0 cos(180)  sin(180) 0  0 1 0 0 
4
Te   
 0 sin(180) cos(180) 0  0 0 1 0 z4
    x4 l4
0 0 0 1  0 0 0 1 y4
l1
z0
- Cinemática directa:
y0 xe
0
Te   T4  Te 
0 4 x0
ye

ze
 c124  s124 0 l3 s12  l2 c1 
s c124 0 l3c12  l2 s1 
0
Te   124
 0 0 1 l1  l4  q3  Verificar el resultado cuando los
  ángulos son cero
 0 0 0 1 
26
Método Geométrico: Robot SCARA

• Resolución simbólica usando Python (SymPy)

Importar sympy import sympy as sp

def sTrasl(x, y, z):


T = sp.Matrix([[1,0,0,x],
Función para la [0,1,0,y],
traslación [0,0,1,z],
[0,0,0,1]])
return T

def sTrotx(ang):
T = sp.Matrix([[1, 0,0,0],
Función para rotar [0, sp.cos(ang),-sp.sin(ang),0],
alrededor de x [0, sp.sin(ang), sp.cos(ang),0],
[0, 0, 0, 1]])
return T

def sTrotz(ang):
T = sp.Matrix([[sp.cos(ang),-sp.sin(ang),0,0],
Función para rotar [sp.sin(ang), sp.cos(ang),0,0],
alrededor de z [0,0,1,0],
[0,0,0,1]])
return T
27
Método Geométrico: Robot SCARA

• Resolución simbólica usando Python (SymPy)

Importar sympy import sympy as sp

q1, q2, q3, q4 = sp.symbols("q1 q2 q3 q4")


l1, l2, l3, l4 = sp.symbols("l1 l2 l3 l4")

# Transformaciones con respecto al sistema anterior


T01 = sTrasl(0,0,l1)*sTrotz(sp.pi+q1)
Transformaciones
T12 = sTrasl(l2,0,0)*sTrotz(-sp.pi/2+q2)
homogéneas y sus
productos
T23 = sTrasl(l3,0,0)
T34 = sTrasl(0,0,-l4+q3)*sTrotz(sp.pi/2+q4)
# Transformación del eslabón 4 con respecto a la base (0)
T04 = sp.simplify(T1*T2*T3*T4)
T04

T4e = sTrotx(sp.pi)
Convención para el
efector final T0e = sp.simplify(T04*T4e)
T0e

Cuando todas las


T0e.subs([(q1,0),(q2,0),(q3,0),(q4,0)])
articulaciones son cero

Nota: ver la implementación completa en la página del curso 28


Referencias

• O. Ramos, Notas del curso Fundamentos de Robótica: Tema 4,


Cinemática Directa I (disponible en línea)

• B. Siciliano, L. Sciavicco, L. Villani, y G. Oriolo. Robotics: modelling,


planning an-d control. Springer Science & Business Media, 2010
(Secciones 2.8)

• M.W. Spong, S. Hutchinson, y M. Vidyasagar. Robot Modeling and


Control. John Wiley & Sons, 2006 (Secciones 3.1)

29
Método Geométrico: Robot SCARA

• Alternativa: resolución simbólica usando Matlab

Funciones pre- function T = Trasl(x,y,z) % Para traslaciones puras


existentes function T = Trotx(R) % Rot en x usando Tf homogénea

syms q1 q2 q3 q4 l1 l2 l3 pi
% Transformaciones con respecto al sistema anterior
T01 = Trasl(0,0,l1)*Trotz(pi+q1);
Transformaciones T12 = simplify( Trasl(l2,0,0)*Trotz(-pi/2+q2) );
homogéneas y su T23 = trasl(l3,0,0);
producto T34 = simplify( Trasl(0,0,-l4+q3)*Trotz(pi/2+q4) );
% Transformación del eslabón 4 con respecto a la base (0)
T04 = simplify(T01*T12*T23*T34);

T4e = Trotx(pi);
Usando la convención
% Transformación del efector final con respecto a la base (0)
del efector final
T0e = simplify(T04*T4e);

Evaluación cuando q1=0; q2=0; q3=0; q4=0;


ángulos son nulos eval(T0e)

30

También podría gustarte