05/07/2011
Toolbox de Robótica para Matlab María Gabriela Cabrera
Contenido Introducción Peter Corke Instalación Definición de un Nuevo Robot Matrices de Rotación Cuaternios Transformaciones Homogéneas Generación de Trayectorias y Cinemática Dinámica Modelos Predefinidos de Manipuladores Toolbox de robótica y simulink Conclusiones
1
05/07/2011
Introducción Robots Industriales Desarrollado por Peter Corke. Versión 8 (2008). Incluye funciones de cinemática, dinámica, y generación de trayectorias. trayectorias
Peter Corke Titulo de pregrado y maestría en Ingeniería Eléctrica (Universidad de Melbourne). Titulo PhD en Ingeniería Mecánica y de Manufactura (Universidad de Melbourne). Presidente‐Editor de la revista IEEE Robotics & Automation. Fundador y editor asociado del Journal of Field Robotics. Fundador u dado de del Autonomous uto o ous Syste Systemss laboratory. abo ato y Ganador de los premios Qantas/Rolls‐Royce y Australian Engineering Excellence. Profesor de control y robótica en la Universidad de Tecnología de Queensland.
2
05/07/2011
Instalación 1.
Descargar paquete en http://www.petercorke.com/RTB/signin.php
2.
Llenar información requerida.
3.
Extraer paquete ‘robot’ en C:\Program Files\MATLAB\R2009a\Toolbox
4 4.
Abrir Abrir MATLAB MATLAB
5.
Agregar el directorio ‘robot’ al MATLABPATH file>>set path>>add folder>>robot>>ok>>save
Definición de un Nuevo Robot Definición en MATLAB: Li=link([αi a i θ i d i σi ]) αi ángulo entre el eje Z á l t l j Zi‐1 y ZZi, sobre el plano b l l perpendicular a Xi. El signo lo da la regla de la mano derecha ai distancia entre los ejes Zi‐1 y Zi, a lo largo de Xi. El signo lo define el sentido de Xi. θi: ángulo que forman los ejes Xi‐1 y Xi, sobre el plano perpendicular a Zi. El signo lo da la regla de la mano derecha. derecha di: distancia a lo largo del eje Zi‐1 desde el origen del sistema Si‐1 hasta la intersección del eje Zi, con el eje Xi. En el caso de articulaciones prismáticas será la variable de desplazamiento. σi : 0 (rotación) ó 1 (prismática)
3
05/07/2011
Definición de un Nuevo Robot Ejemplo:
Figura 1 Robot SRX‐611
Definición de un Nuevo Robot Definir los parámetros de Denavit‐Hartenberg.
{1}
{2}
a2 b2 b1
Figura 2 Parámetros de Denavit‐ Hartenberg del SRX‐611
{0}
a1
4
05/07/2011
Definición de un Nuevo Robot Definir los parámetros de Denavit‐Hartenberg. Eslabón 1: a1 = 350 mm 350 mm d1= 460.5 mm α1 = 0 θ1 = θ1 {variable, rotación}
Eslabón 2: a2 = 250 mm d2= ‐85.5 mm α2= 0 θ2 = θ2 {variable, rotación}
Eslabón 3: a3 = 0 mm d3= d3 {variable, prismática} α3 = 0 θ3 = 0
Definición de un Nuevo Robot Definición en MATLAB:
Z
L1=link([0, 0.350, 0, 0.4605,0]); L2=link([0, 0.250, 0, ‐0.0855,0]); L3=link([0, 0, 0, 0,1]); srx=robot({L1 L2 L3}); srx.name='SRX‐611'; 1 srx.manuf='Sony'; 0.5 plot(srx,[0 0 0]);
yz x
0 SRX-611 -0.5 -1 1 0.5
1 0.5
0 0
-0.5 Y
-1
-0.5 -1 X
Figura 3 Representación grafica del SRX‐611
5
05/07/2011
Matrices de Rotación • Rotación alrededor del eje X
Rx
MATLAB:
Rx=rotx(α)
• Rotación alrededor del eje Y
MATLAB:
Ry
Ry=roty(Ԅ)
Matrices de Rotación • Rotación alrededor del eje Z:
MATLAB: Rz=rotz(θ)
Rz
• Matriz de rotación a matriz de TH:
MATLAB: T=r2t(R)
6
05/07/2011
Matrices de Rotación Función
Descripción
angevecr
forma angular/vectorial a matriz de rotación (MR) angular/vectorial a matriz de rotación (MR)
eul2r
ángulo de Euler a MR
rotx
MR para rotación alrededor del eje X
roty
MR para rotación alrededor del eje Y
rotz
MR para rotación alrededor del eje Z
rpy2r
ángulos roll/pitch/yaw a MR
r2tt
MR a TH
Cuaternios Definidos por Hamilton para trabajar con giros y orientaciones. Un cuaternio Q está constituido por cuatro componentes {q0, q1, q2, q3} que representan al cuaternio base {e, i ,j, k}. Para la utilización de los cuaternios como metodología de representación de orientación, se realiza una asociación arbitraria del giro de un ángulo θ sobre un vector k al cuaternio definido por: p
7
05/07/2011
Cuaternios Ejemplo: q p Obtener el cuaternio que representa una rotación de 90° sobre el eje k( 3, ‐2, 1).
Matlab: Q=quaternion(k,θ’) Q=quaternion([3 ‐2 1],(pi/2))
Cuaternios Función
Descripción
+
adición
‐
substracción
/
dividir cuaternio entre un cuaternio o un escalar
*
multiplicar cuaternio por un cuaternio o un vector
inv
invertir un cuaternio
norm
magnitud de un cuaternio
plot
mostrar cuaternio como rotación 3D
q2tr
cuaternio a TH
quaternion
construir cuaternio
qinterp
interpolar cuaternio
unit
cuaternio unitario
8
05/07/2011
Transformaciones Homogéneas
Transformaciones Homogéneas • Matriz de traslación
MATLAB:
T=transl(px, py, pz)
• Rotación alrededor del eje X
MATLAB:
T=trotx(α)
9
05/07/2011
Transformaciones Homogéneas • Rotación alrededor del eje Y
MATLAB:
T=troty(Ԅ)
• Rotación alrededor del eje z
MATLAB:
T=trotz(θ)
Transformaciones Homogéneas • Rotación sobre el eje X seguido p por una traslación:
MATLAB:
T=trotx(α)*transl(px, py, pz)
• Rotación sobre el eje Y seguido por una traslación:
MATLAB:
T=troty(Ԅ)*transl(px, py, pz)
10
05/07/2011
Transformaciones Homogéneas Ejemplo: tr = trotx(.2)*troty(.3)*transl(1,2,3) trplot(tr) 4 Z
Z
3.5 Y 3 X 2.5 3 2.4 2.2
2.5 2 1.8
1.6 1.4
2
Y
X
Figura 4 Combinación de varias operaciones
Transformaciones Homogéneas Función
Descripción
angevec2tr
forma angular/vectorial a transformación homogénea (TH)
eul2tr
ángulo de Euler a TH
oa2tr rpy2tr
ángulos roll/pitch/yaw a TH
tr2angvec
TH o matriz de rotación a forma angular/vectorial
tr2eul
TH o matriz de rotación en ángulos de Euler
t2r
TH a sub‐matriz de rotación
tr2rpy
TH o matriz de rotación a ángulos roll/pitch/yaw
trotx
TH para rotación alrededor del eje X
troty
TH para rotación alrededor del eje Y
trotz
TH para rotación alrededor del eje Z
transl
fijar o extraer el componente de traslación de una TH
tnorm
normalizar una TH
trplot
graficar el sistema de coordenadas de una TH
11
05/07/2011
Generación de Trayectorias Ejemplo:
Posición de las articulaciones
100 50 0
%ángulos iníciales start=[15 45 30 20 60 30] %ángulos finales stop=[75 0 120 25 30 0] t=[0:0.5:3]
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
50
0 200 100 0 25
20 60
[pos vel]=jtraj(start,stop,t)
40 20 40
subplot(6,1,1);plot(t,pos(:,1)) subplot(6,1,2);plot(t,pos(:,2)) subplot(6,1,3);plot(t,pos(:,3)) subplot(6,1,4);plot(t,pos(:,4)) subplot(6,1,5);plot(t,pos(:,5)) subplot(6,1,6);plot(t,pos(:,6)) figure %velocidad de cada articulación subplot(6,1,1);plot(t,vel(:,1)) subplot(6,1,2);plot(t,vel(:,2)) subplot(6,1,3);plot(t,vel(:,3)) subplot(6,1,4);plot(t,vel(:,4)) subplot(6,1,5);plot(t,vel(:,5)) subplot(6,1,6);plot(t,vel(:,6))
20 0
Velocidad de las articulaciones 40 20 0 0 -20 -40 100 50 0 4 2 0 0 -10 -20 0 -10 -20
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
Generación de Trayectorias Función
Descripción
ctraj
trayectoria cartesiana trayectoria cartesiana
jtraj
trayectoria de una articulación
trinterp
interpolar TH
12
05/07/2011
Cinemática Cinemática Directa Consiste en determinar cuál es la posición y orientación del extremo final del robot, robot con respecto a un sistema de coordenadas que se toma como referencia, conocidos los valores de las articulaciones y los parámetros geométricos de los componentes del robot. Cinemática Inversa En este caso el problema consiste en resolver la configuración que debe d b adoptar d t ell robot b t para una posición i ió y orientación i t ió del d l extremo conocida.
Cinemática MATLAB: Cinemática Directa T = fkine(robot, fki ( b q)) fkine calcula la cinemática directa para un vector ‘q‘ que representa las coordenadas de la articulación. Devuelve una matriz de transformación homogénea que describe el efector final. Cinemática Inversa q = ikine(robot, T) ikine devuelve las coordenadas de la articulación para el manipulador descrito por el objeto robot. T es una matriz de transformación homogénea que describe el efector final.
13
05/07/2011
Cinemática Ejemplo:
Articulación
θ
d
a
l1
α
1
q1
0
0
2
90
d2
0
90
3
0
d3
0
0
4
q4
l4
0
0
Cinemática 4
2 xy z Z
Ejemplo: L1 = link([0 0 0 1 0]); D2 = link([pi/2 0 pi/2 1 1]); D2 = link([pi/2 0 pi/2 1 1]); D3 = link([0 0 0 1 1]); L4 = link([0 0 0 1 0]); rob = robot({L1 D2 D3 L4}) rob.name=‘robot2'; plot(rob, [0 0 0 0]);
0 robot2 -2
-4 4 2
4 2
0
0
-2 Y
-2 -4
-4
X
Para un desplazamiento de las articulaciones prismáticas de 1 P d l i t d l ti l i i áti d 1 unidad tenemos: T=fkine(rob,[0 1 1 0])
14
05/07/2011
Cinemática Ejemplo: Para las coordenadas de las articulaciones q = [‐pi/4 0.5 0.5 pi/3] se obtiene la siguiente matriz de transformación: pi/3] se obtiene la siguiente matriz de transformación: T = fkine(rob,[‐pi/4 0.5 0.5 pi/3])
Calculo de la cinemática inversa: qi = ikine(rob,T,[0 0 0 0],[1 1 1 1 0 0])
Cinemática Función
Descripción
diff2tr
vector de movimiento diferencial a TH
fkine
calcular cinemática directa calcular cinemática directa
ftrans
transformar fuerza/movimiento
ikine
calcular cinemática inversa
ikine560
calcular cinemática inversa para un brazo tipo Puma 560
jacob0
calcular Jacobiano en sistema de coordenadas base
jacobn
calcular Jacobiano en el sistema de coordenadas del efector final
tr2diff
TH a vector de movimiento diferencial
tr2jac
TH a Jacobiano
15
05/07/2011
Dinámica Función
Descripción
accel
calcular dinámica directa
cinertia
calcular matriz de inercia de un manipulador matriz de inercia de un manipulador cartesiano
coriolis
calcular torque de la articulación debido a efectos de fuerza centrípeta/coriolis
fdyn
dinámica directa
friction
fricción de la articulación
gravload
calcular torque de la articulación debido a la gravedad
inertia
calcular matriz de inercia del manipulador
itorque
calcular torque de la articulación debido a la inercia
rne
dinámica inversa
Modelos Predefinidos de Manipuladores 2
Z
1
0 Fanuc AM120iB/10L yz x
-1
-2 2 1
2 1
0
0
-1
-1 -2
Y
-2
X
Figura Robot Fanuc ArcMate 120iB/10L
1.5 1
Z
0.5 0 Motoman HP6 x zy
-0.5 -1 -1.5 1
1
0
0 -1
Y
-1 X
Figura Robot Motoman HP6
16
05/07/2011
Modelos Predefinidos de Manipuladores 1
0.5
yz x
Z
0 Puma 560 -0.5
-1 1 0.5
1 0.5
0
0
-0.5
-0.5 -1
Y
-1
X
Figura Robot Puma 560 4
2
Z
0 y x 2.8 S4 ABB z -2
-4 4 2
4 2
0
0
-2 Y
Figura Robot ABB S4 2.8
-2 -4
-4
X
Modelos Predefinidos de Manipuladores Función
Descripción
Fanuc10L
Fanuc ArcMate 120iB/10L (DH, cinemática)
MotomanHP6
Motoman HP6 (DH, cinemática)
puma560
Puma 560 (DH, cinemática, dinámica)
puma560akb
Puma 560 (MDH, cinemática, dinámica)
S4ABB2p8
ABB S4 2.8 (DH, cinemática)
stanford
Brazo Stanford (MDH, cinemática, dinámica)
twlink
ejemplo simple de 2 articulaciones (DH, cinemática)
17
05/07/2011
Toolbox de robótica y simulink Para utilizar esta característica : p addpath ROBOTDIR/simulink Para observar los bloques: roblocks
Toolbox de robótica y simulink Demos:
18
05/07/2011
Toolbox de robótica y simulink Demos:
Conclusiones
19
05/07/2011
Referencias Corke, P. (2011, Mayo 8). Robotics Toolbox for MATLAB. Recuperado de www.petercorke.com Dapena, E. (2011, Mayo 20). ISPIRO: Introducción a la robótica. Recuperado de http://webdelprofesor.ula.ve/ingenieria/eladio/ISPIRO.htm // / / / Sourceforge. (s.f.). Recuperado el 27 de Junio de 2011, de http://sourceforge.net/projects/scirt/ SpaceLib. (s.f.). Recuperado el 28 de junio de 2011, de http://spacelib.ing.unibs.it/ The Orocos Proyect. (s.f.). Recuperado el 27 de Junio de 2011, de http://www.orocos.org/ Torres, F., Pomares, J., Gil, P., Puente, S., & Aracil, R. (2002). Robots y Sistemas Sensoriales . Madrid: Pearson Educación . Universidad Don Bosco. (s.f.). Recuperado el 30 de Mayo de 2011, de http://www udb edu sv/Academia/Laboratorios/electronica/FRobotica/guia5 http://www.udb.edu.sv/Academia/Laboratorios/electronica/FRobotica/guia5 FRO.pdf Wane, S. (2011, Mayo 4). Staffordshire University. Recuperado de www.fcet.staffs.ac.uk/sow1/robotmaterial/MasteringRoboticsToolbox.pdf
Toolbox de Robótica María Gabriela Cabrera
20
Toolbox de Robótica
María Gabriela Cabrera Laboratorio de Sistemas Discretos, Automatización e Integración LaSDAI‐ULA Julio, 2011 Resumen—El Toolbox de Robótica para Matlab, desarrollado por el profesor Peter Corke, permite modelar robots tipo manipulador con diferentes números de articulaciones. Es posible describir la posición y orientación del extremo del robot a través de diferentes herramientas matemáticas. Además permite realizar cálculos de cinemática y dinámica. Su principal aplicación es en el área de la robótica industrial. Palabras clave— MATLAB, Peter Corke, robótica industrial, toolbox.
INTRODUCCIÓN La robótica industrial ha jugado un rol clave en la automatización de actividades como ensamblaje y manufactura, en una gran diversidad de industrias alrededor del mundo. Industrias como la automovilística y la de fundición han sido importantes precedentes en la introducción de robots industriales a las líneas de producción. “Se considera como un robot industrial a un manipulador multifuncional dotado de un conjunto de grados de libertad con capacidad de reprogramación, utilizado en tareas de de automatización industrial” [7]. Los robots industriales presentan grandes beneficios en las líneas de producción ya que pueden realizar tareas de manera rápida y eficiente, algunos poseen una capacidad de carga importante, además de que pueden ser utilizados en ambientes hostiles donde un humano difícilmente podría desenvolverse. En las diferentes industrias realizan actividades como soldadura,
ensamblaje y manipulación de materiales. Debido a la importancia anteriormente descrita de los robots industriales, es imperativo contar con herramientas que permitan simular, analizar y experimentar con los robots sin necesidad de ser manipularlos directamente de manera física. Un ejemplo de dichas herramientas es el Toolbox de Robótica para MATLAB [1], el cual fue desarrollado como “hobby” por Peter Corke, Profesor de control y robótica en la Universidad de Tecnología de Queensland en Australia. El Toolbox ha sido elaborado y mejorado por casi una década. Su última publicación es la versión 8, la cual fue expuesta en diciembre de 2008. Dicha versión posee funciones de cinemática, dinámica y generación de trayectorias. Permite la representación de la posición y orientación del extremo del robot a través de vectores, matrices de rotación, transformaciones homogéneas, y cuaternios. Proporciona ejemplos de modelos de robots conocidos como el Puma560. Incluye un set de bloques que pueden ser utilizados con Simulink. Conjuntamente, facilita una variedad de demos creados en Simulink utilizando diferentes bloques del Toolbox. El código fuente está disponible, por lo que puede ser entendido y utilizado para enseñanza.
ESTADO DEL ARTE Existen otras herramientas de dominio público disponibles que permiten simular y
1
analizar manipuladores. Algunos de estos son SpaceLib, JRoboOp, Toolbox de Robótica para Scilab y Orocos. SpaceLib es una librería desarrollada para ser utilizada con MATLAB en el caso de aplicaciones numéricas y con Maple para aplicaciones simbólicas. SpaceLib [5] posee funciones para cinemática y dinámica. Otra herramienta disponible pero que no fue creada para MATLAB es JRoboOp [3]. Dicha herramienta es un paquete de Java que permite simular y visualizar en 3D el modelo de un robot. Proporciona funciones de cinemática, dinámica y generación de trayectorias. A diferencia del Toolbox de Robótica para Matlab, incluye una mejor visualización 3D del robot. Otra herramienta que posee la ventaja de funcionar con software libre es el Toolbox de Robótica para Scilab [4]. Dicho Toolbox, posee funciones de cinemática, dinámica y generación de trayectorias bastante similares a las del Toolbox de Robótica de MATLAB, sin embargo no es tan completo. Adicionalmente, existe la herramienta conocida como Orocos (Open Robot Control Software) [6] también de software libre, la cual es quizás la más completa de las anteriormente descritas. Consta de una librería para cinemática y dinámica, una librería para filtrado Bayesiano, y un conjunto de herramientas para crear aplicaciones con robots en tiempo real.
DEFINICIÓN DE UN NUEVO ROBOT Una forma de definir un nuevo robot utilizando el Toolbox de Robótica, es realizando primero una descripción de cada articulación o eslabón del robot. La función que se utiliza es la siguiente: Li=link([αi ai θi di σi ])
Los primeros cuatro parámetros de la función anterior son calculados de acuerdo a los lineamientos de Denavit‐Hartenberg y el ultimo parámetro define el tipo de articulación, de rotación o prismática. A continuación, se explica brevemente como realizar el cálculo de cada parámetro [7]. αi: ángulo entre el eje Zi‐1 y Zi, sobre el plano perpendicular a Xi. El signo lo da la regla de la mano derecha ai: distancia entre los ejes Zi‐1 y Zi, a lo largo de Xi. El signo lo define el sentido de Xi. θi: ángulo que forman los ejes Xi‐1 y Xi, sobre el plano perpendicular a Zi. El signo lo da la regla de la mano derecha. di: distancia a lo largo del eje Zi‐1 desde el origen del sistema Si‐1 hasta la intersección del eje Zi, con el eje Xi. En el caso de articulaciones prismáticas será la variable de desplazamiento. σi : 0 (rotación) ó 1 (prismática) Una vez definida cada articulación el siguiente paso es crear un objeto del tipo robot. Para esto se utiliza la siguiente función, cuyo parámetro es un arreglo con la descripción de cada eslabón: variable_robot=robot({L1 L2…Li}) Para obtener una representación grafica simplemente se utiliza plot(varable_robot,q) donde q es un vector con los ángulos para cada articulación. Las funciones anteriormente descritas son utilizadas en el siguiente ejemplo, donde se realiza la definición de un robot SRX‐ 611. Dicho robot es del tipo “pick and place”, es fabricado por la Sony, y posee tres articulaciones. Dos de las articulaciones son de rotación y la tercera es prismática. Es utilizado en industrias de
2
manufactura de electrónicos, farmacéutica, entre otros. Ejemplo: En la figura 1 se aprecia una fotografía de un robot SRX‐611.
Figura 1 Robot SRX‐611
En la figura 2 se observa una representación grafica del robot SRX‐611 donde se señalan algunos de los parámetros de Denavit‐Hartenberg.
Figura 2 Parámetros de Denavit‐Hartenberg del SRX‐611
Como se dijo anteriormente, primero es necesario definir los parámetros de Denavit‐Hartenberg para cada articulación. Eslabón 1: a1 = 350 mm d1= 460.5 mm α1 = 0 θ1 = θ1 {variable, rotación} Eslabón 2: a2 = 250 mm
d2= ‐85.5 mm α2= 0 θ2 = θ2 {variable, rotación} Eslabón 3: a3 = 0 mm d3= d3 {variable, prismática} α3 = 0 θ3 = 0 Una vez establecidos los valores de cada parámetro es posible escribir el código en MATLAB para la definición completa del robot SRX‐611: %Ejemplo 1: Definición de un nuevo robot %Definir cada articulación de acuerdo a los parámetros de Denavit‐Hartenberg L1=link([0, 0.350, 0, 0.4605,0]); L2=link([0, 0.250, 0, ‐0.0855,0]); L3=link([0, 0, 0, 0,1]); %Crear un objeto del tipo robot srx=robot({L1 L2 L3}); %Si se desea asignar nombre al robot srx.name='SRX‐611'; %Si se desea especificar fabricante srx.manuf='Sony'; %Mostrar representación gráfica del robot plot(srx,[0 0 0]);
3
Rotación alrededor del eje X: 1
Z
MATLAB: rotx(α) Rotación alrededor del eje Y:
yz x
0.5 0
SRX-611 -0.5 -1 1 0.5
1 0.5
0 0
-0.5 Y
-0.5 -1
-1 X
Figura 3 Representación grafica del SRX‐611
En la figura 3 se aprecia la grafica obtenida al ejecutar la función plot. Donde, evidentemente se observa una representación grafica sencilla del robot SRX‐611. Es importante destacar que con las funciones descritas anteriormente simplemente es posible realizar una descripción básica del robot, resta analizar qué funciones pueden ser utilizadas como herramientas matemáticas para representar el movimiento espacial del extremo del robot.
MATLAB: T=roty( ) Rotación alrededor del eje Z:
MATLAB: T=rotz(θ) En la tabla 1 se presentan las funciones del Toolbox de Robótica relacionadas con las matrices de rotación y una breve descripción de las mismas.
MATRICES DE ROTACIÓN
Tabla 1 Funciones para matrices de rotación
Una forma de representar la orientación de un sistema de coordenadas respecto a otro fijo es mediante las matrices de rotación [2]. A través de las matrices de rotación es posible analizar la orientación del efector final del robot respecto a su base. Es posible que se presenten rotaciones alrededor del eje X, Y, Z o combinaciones de éstas. A continuación, se presentan algunas matrices de rotación y su función correspondiente en MATLAB. Es importante destacar que los ángulos deben ser definidos en radianes.
Función
Descripción
angevecr
forma angular/vectorial a matriz de rotación (MR)
eul2r
ángulo de Euler a MR
rotx
MR para rotación alrededor del eje X
roty
MR para rotación alrededor del eje Y
rotz
MR para rotación alrededor del eje Z
rpy2r
ángulos roll/pitch/yaw a MR
r2t
MR a Transformación homogénea
Existen herramientas matemáticas alternativas que al igual que las matrices de rotación representan la orientación de un objeto. Algunas de éstas incluyen los
4
angulos roll, pitch, yaw de Euler y los cuaternios.
*
multiplicar cuaternio por un cuaternio o un vector
CUATERNIOS
inv
invertir un cuaternio
Los cuaternios fueron definidos por Hamilton para definir giros y orientaciones. Poseen la ventaja de que son más compactos y sencillos de calcular computacionalmente que las matrices de rotación. Representan un giro de θ grados alrededor de un vector k [2]. Generalmente, posee una parte escalar y una parte vectorial. Puede representarse como:
norm
magnitud de un cuaternio
plot
mostrar cuaternio como rotación 3D
q2tr
cuaternio a TH
quaternion
construir cuaternio
qinterp
interpolar cuaternio
unit
cuaternio unitario
Con las matrices de rotación y los cuaternios es posible representar la orientación del extremo del robot, sin embargo, también es importante tener conocimiento sobre la posición del mismo. Una herramienta que permite representar tanto la orientación como la posición son las matrices de transformación homogénea.
En MATLAB la definición puede realizarse de la siguiente forma: Ejemplo: Obtener el cuaternio que representa una rotación de 90° sobre el eje k( 3, ‐2, 1). % Nota: el ángulo debe estar expresado en radianes Q=quaternion([3 ‐2 1],(pi/2))
TRANSFORMACIONES HOMOGÉNEAS
En la tabla 2 se muestran las funciones disponibles en el Toolbox de Robótica para manejar cuaternios y una breve descripción de cada una. Tabla 2 Funciones para cuaternios
Función
Descripción
+
adición
‐
substracción
/
dividir cuaternio entre un cuaternio o un escalar
En robótica resulta de gran utilidad poseer un mecanismo que permita localizar un objeto de acuerdo a su posición y orientación respecto a un sistema de referencia. Para describir la posición y orientación de un objeto es posible utilizar la matriz de transformación homogénea definida por Forest [7]:
Esta matriz 4x4 está compuesta por cuatro submatrices, de las cuales solo los componentes de rotación y traslación resultan de interés para la robótica.
5
En robótica es posible tener transformaciones que representan solo traslación, solo rotación, o combinaciones de ambas. Seguidamente, se presentan las matrices para varias transformaciones homogéneas y su función correspondiente en MATLAB. Es importante destacar que los ángulos deben ser definidos en radianes. Matriz de Traslación:
MATLAB: T=transl(px, py, pz) Rotación alrededor del eje X:
MATLAB: T=trotx(α) Rotación alrededor del eje Y:
MATLAB: T=troty( ) Rotación alrededor del eje z
MATLAB: T=trotz(θ)
Rotación sobre el eje X, seguido por una traslación:
MATLAB: T=trotx(α)*transl(px, py, pz) Rotación sobre el eje Y, seguido por una traslación:
MATLAB: T=troty( )*transl(px, py, pz) En el siguiente ejemplo se muestra el código escrito en MATLAB, donde se llevan a cabo diferentes transformaciones homogéneas. Adicionalmente, se utiliza la función trplot(T), a través de la cual es posible visualizar cómo la coordenadas originales son cambiadas debido a una transformación T. Ejemplo: %Ejemplo 2 Transformaciones Homogéneas %Matriz de traslación T=transl(1,1,1); trplot(T) %Matriz para una rotación alrededor del eje X Tx=trotx(0.2); figure trplot(Tx)
6
1.2 1 0.8 Z
0.6
Z
0.4 0.2 0
Y
-0.2 -0.4 X -0.6 1 0.5 0
1
0.5
0
Y
X
Figura 6 Rotación alrededor del eje Y
1 0.8 Z 0.6 Z
%Matriz para una rotación alrededor del eje Y Ty=troty(0.2); figure trplot(Ty) %Matriz para una rotación alrededor del eje Z Tz=trotz(0.2); figure trplot(Tz) %Composición de varias transformaciones tr = trotx(.2)*troty(.3)*transl(1,2,3) figure trplot(tr)
0.4 0.2 X 0
2
Y
1
0.8
Z
0.5
0.6
1.8
0.4 0.2
1.6
0 0
X
Z
Y
1.4
Figura 7 Rotación alrededor del eje Z
1.2
X
1 2 1
1.5 1
1.5
Y
4
2 Y
X
Z
3.5 Z
Figura 4 Traslación
Y 3
1
X
2.5 Z
0.8
2.4 2.2
Z
0.6
0.4
Y
2 1.8 1.6 1.4
3 2.5 2 X
Y 0.2
Figura 8 Combinación de varias operaciones
0 X
0 0.5 1 X
0
0.4
0.2
0.6
0.8
Y
Figura 5 Rotación alrededor del eje X
En las figuras 4, 5, 6, 7 y 8 se aprecia cómo las coordenadas originales cambian debido a una transformación homogénea. Las nuevas coordenadas son las de color azul mientras
7
que en negro se observan las coordenadas originales. Con las transformaciones homogéneas es posible representar la posición y orientación del extremo del robot. Sin embargo, para entender más a fondo las capacidades del robot es necesario estudiar las funciones del Toolbox que representan las trayectorias y movimientos de cada articulación.
GENERACIÓN DE TRAYECTORIAS En ciertas aplicaciones puede ser necesario programar un robot para que su extremo describa una trayectoria específica, o conocer qué trayectoria se generará al moverse de un punto a otro. Para esto el Toolbox cuenta con las funciones jtraj y ctraj. La función jtraj devuelve una trayectoria generada al mover las articulaciones desde un conjunto de coordenadas original hacia otro conjunto de coordenadas. Opcionalmente, puede devolver la velocidad y aceleración de cada articulación. La función ctraj devuelve una trayectoria cartesiana (línea recta) desde un punto a otro, ambos representados por una transformación homogénea. Es necesario especificar el número de puntos que se trazarán. En el siguiente ejemplo [9], se muestra el uso de la función jtraj para un manipulador con 6 articulaciones. Las articulaciones recorrerán una trayectoria para moverse desde el conjunto de coordenadas iníciales descritas por el vector ‘start’ hasta las coordenadas finales descritas por el vector ‘stop’. El tiempo para realizar la trayectoria se especifica con el vector ‘t’.
%Ejemplo 2 Generación de Trayectorias clc %ángulos iníciales start=[15 45 30 20 60 30]; %ángulos finales stop=[75 0 120 25 30 0]; %vector de tiempo t=[0:0.5:3]; [pos vel]=jtraj(start,stop,t); %posición de cada articulación subplot(6,1,1);plot(t,pos(:,1)) subplot(6,1,2);plot(t,pos(:,2)) subplot(6,1,3);plot(t,pos(:,3)) subplot(6,1,4);plot(t,pos(:,4)) subplot(6,1,5);plot(t,pos(:,5)) subplot(6,1,6);plot(t,pos(:,6)) figure %velocidad de cada articulación subplot(6,1,1);plot(t,vel(:,1)) subplot(6,1,2);plot(t,vel(:,2)) subplot(6,1,3);plot(t,vel(:,3)) subplot(6,1,4);plot(t,vel(:,4)) subplot(6,1,5);plot(t,vel(:,5)) subplot(6,1,6);plot(t,vel(:,6))
8
Tabla 3 Funciones para trayectorias
Posición de las articulaciones 100 50 0
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
50
0 200 100 0
0
0.5
1
1.5
2
2.5
3
25
20
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
40
40 20 0
Figura 9 Posición de cada articulación Velocidad de las articulaciones 40 20 0 0 -20 -40 100 50 0 4 2 0 0 -10 -20 0 -10 -20
Descripción
ctraj
trayectoria cartesiana
jtraj
trayectoria de una articulación
trinterp
interpolar TH
CINEMÁTICA
60
20
Función
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
0
0.5
1
1.5
2
2.5
3
Figura 10 Velocidad de cada articulación
En las figuras 9 y 10, puede observarse respectivamente la posición y velocidad de cada articulación. En la siguiente tabla se incluyen las funciones relacionadas con generación de trayectorias y una breve descripción.
La cinemática se encarga de estudiar el movimiento del robot, sin tomar en cuenta las leyes físicas que lo generan, se limita a estudiar trayectorias en función del tiempo. La cinemática puede ser abordada desde dos puntos de vista: la cinemática directa y la cinemática inversa. La cinemática directa calcula la posición y orientación del extremo del robot a partir del valor de las coordenadas de las articulaciones del robot [2]. En MATLAB la definición puede realizarse de la siguiente manera: T = fkine(robot, q) fkine calcula la cinemática directa para un vector ‘q‘ que representa las coordenadas de la articulación y devuelve una matriz de transformación homogénea que describe el efector final. La cinemática inversa calcula el valor de las coordenadas de las articulaciones a partir de la posición y orientación del extremo del robot [2]. En MATLAB la definición puede realizarse de la siguiente manera: q = ikine(robot, T) ikine devuelve las coordenadas de la articulación para el manipulador descrito por el objeto robot. T es una matriz de
9
transformación homogénea que describe el efector final. En el ejemplo que se muestra seguidamente se realiza la definición de un robot cilíndrico y, posteriormente, el cálculo de la cinemática directa e inversa para el mismo. Ejemplo [8]: Como se explicó anteriormente, primero es necesario definir los parámetros de Denavit‐ Hartenberg.
Figura 11 Robot cilíndrico Tabla 4 Parámetros de Denavit‐Hartenberg para el robot cilíndrico
θ
d
a
α
1
q1
l1
0
0
2
90
d2
0
90
3
0
d3
0
0
4
q4
l4
0
0
4
2 xy z Z
Articulación
%Definir cada articulación de acuerdo a los parámetros de Denavit‐Hartenberg L1 = link([0 0 0 1 0]); D2 = link([pi/2 0 pi/2 1 1]); D3 = link([0 0 0 1 1]); L4 = link([0 0 0 1 0]); %Crear un objeto del tipo robot rob = robot({L1 D2 D3 L4}); rob.name='robot2'; %Mostrar representación gráfica del robot plot(rob, [0 0 0 0]); %Para un desplazamiento de las articulaciones prismáticas de 1 unidad tenemos: T1fkine(rob,[0 1 1 0]) %Para las coordenadas de las articulaciones q = [‐pi/4 0.5 0.5 pi/3] se obtiene la siguiente matriz de transformación: T 2= fkine(rob,[‐pi/4 0.5 0.5 pi/3]) %Cálculo de la cinemática inversa: qi = ikine(rob,T,[0 0 0 0],[1 1 1 1 0 0])
0 robot2
En la tabla 4 se muestra el valor de cada uno de los parámetros necesarios para definir el robot. El código escrito en MATLAB para el ejemplo es el siguiente: %Ejemplo 3: Cinemática directa e inversa
-2
-4 4 2
4 2
0
0
-2 Y
-2 -4
-4
X
Figura 12 Representación grafica del robot cilíndrico
10
DINÁMICA La dinámica de un robot tiene por objeto conocer la relación entre el movimiento del robot y las fuerzas implicadas en el mismo[7]. A continuación, se presenta una tabla donde se describen las funciones disponibles relacionadas con dinámica. Tabla 6 Funciones para dinámica
En la figura 12 se muestra la representación grafica del robot cilíndrico descrito en la tabla 4. Luego, se muestran las matrices correspondientes a la cinemática directa para obtener primero un conjunto de coordenadas q=[0 1 1 0] y luego q=[‐pi/4 0.5 0.5 pi/3]. Posteriormente se realiza el cálculo de la cinámica inversa usando T2. Como se esperaba, se obtienen las mismas coordenadas que fueron utilizadas para calcular T2. Tabla 5 Funciones para cinemática
Función
Descripción
diff2tr
vector de movimiento diferencial a TH
fkine
calcular cinemática directa
ftrans
transformar fuerza/movimiento
ikine
calcular cinemática inversa
ikine560
calcular cinemática inversa para un brazo tipo Puma 560
jacob0
calcular Jacobiano en sistema de coordenadas base
jacobn
calcular Jacobiano en el sistema de coordenadas del efector final
tr2diff
TH a vector de movimiento diferencial
tr2jac
TH a Jacobiano
Función
Descripción
accel
calcular dinámica directa
cinertia
calcular matriz de inercia de un manipulador cartesiano
coriolis
calcular torque de la articulación debido a efectos de fuerza centrípeta/coriolis
fdyn
dinámica directa
friction
fricción de la articulación
gravload
calcular torque de la articulación debido a la gravedad
inertia
calcular matriz de inercia del manipulador
itorque
calcular torque de la articulación debido a la inercia
rne
dinámica inversa
MODELOS PREDEFINIDOS MANIPULADORES
DE
El Toolbox de Matlab cuenta con la definición de varios manipuladores industriales de gran utilidad para el aprendizaje del uso de las funciones del Toolbox. Los robots predefinidos incluyen: Fanuc ArcMate 120iB/10L, Motoman HP6, Puma 560, ABB S4 2.8, y Brazo Stanford. En la tabla 7 se presentan las funciones para utilizar cada uno de los modelos 11
predefinidos y una breve descripción de cada una. 2
Tabla 7 Funciones para modelos predefinidos
Fanuc10L
Descripción
Z
1
Función
0 Fanuc AM120iB/10L yz x
-1
Fanuc ArcMate 120iB/10L (DH, cinemática)
-2 2 1
MotomanHP6
Motoman HP6 (DH, cinemática)
puma560
Puma 560 (DH, cinemática, dinámica)
puma560akb
Puma 560 (MDH, cinemática, dinámica)
S4ABB2p8
ABB S4 2.8 (DH, cinemática)
stanford
Brazo Stanford (MDH, cinemática, dinámica)
twlink
ejemplo simple de 2 articulaciones (DH, cinemática)
2 1
0
0
-1
-1 -2
Y
-2
X
Figura 14 Representación grafica de Fanuc ArcMate 120iB/10L
El robot Motoman HP6 es un robot multi‐ aplicación con seis grados de libertad que puede realizar actividades como empaquetar, distribuir o realizar soldaduras por arco. En las figuras 15 y 16 se observa el robot Motoman HP6 y su representación grafica respectivamente.
El robot Fanuc ArcMate 120iB/10L es utilizado para diferentes aplicaciones donde se requiere realizar distintos tipos de soldadura por arco o por chorro de plasma, entre otros. Posee seis articulaciones. En la figugura 13 se observa una fotografía del Fanuc ArcMate 120iB/10L y en la figura 14 la representación grafica correspondiente en MATLAB.
Figura 15 Robot Motoman HP6
1.5 1
Z
0.5 0 Motoman HP6 x zy
-0.5 -1 -1.5 1
1
0
Figura 13 Robot Fanuc ArcMate 120iB/10L
0 -1
Y
-1 X
Figura 16 Representación grafica de Motoman HP6
12
TOOLBOX DE ROBÓTICA Y SIMULINK El Toolbox de Robótica incluye un set de bloques con la mayoría de las funciones del Toolbox, las cuales pueden ser utilizados en Simulink. Para utilizar esta característica es necesario agregar los bloques a Simulink, para esto, es necesario escribir la siguiente línea en el workspace de MATLAB: addpath ROBOTDIR/simulink Para observar los bloques: roblocks Al ejecutar roblocks debe observarse la siguiente ventana.
Simulink también tiene aplicaciones en el área de control y automatización.
CONCLUSIONES El toolbox de Robótica para MATLAB, desarrollado por el profesor Peter Corke, permite simular y analizar manipuladores, que generalmente representan robots industriales. Posee funciones para el estudio de transformaciones homogéneas, cuaternios, matrices de rotación, generación de trayectorias, cinemática y dinámica. El código puede ser obtenido de manera gratuita, sin embargo funciona con el software MATLAB para el cual es necesario poseer una licencia para poder utilizarlo. El Toolbox posee herramientas matemáticas poderosas y puede ser utilizado en conjunto con Simulink para crear una gran variedad de aplicaciones, sin embargo, carece de una buena herramienta para visualización 3D.
BIBLIOGRAFÍA Figura 17 Bloques de Robótica para Simulink
El Toolbox incluye 6 demos con diferentes ejemplos de aplicaciones usando Simulink. Para acceder a cada uno de estos demos simplemente se debe escribir demo y el numero del demo que se desea visualizar. Es decir, si se desea observar el primer demo, simplemente es necesario escribir demo1 en el workspace de MATLAB.
APLICACIONES El Toolbox de Robótica tiene aplicaciones principalmente en la robótica industrial. Permite modelar manipuladores con diferentes números de articulaciones. Es posible describir la posición y orientación del extremo a través de diferentes herramientas matemáticas, además permite realizar cálculos de cinemática y dinámica. Utilizado en conjunto con
[1] Corke, P. (2011, Mayo 8). Robotics Toolbox for MATLAB. Recuperado de www.petercorke.com [2] Dapena, E. (2011, Mayo 20). ISPIRO: Introducción a la Robótica. Recuperado de http://webdelprofesor.ula.ve/ingenieria/eladio/ ISPIRO.htm [3] Jroboop. (s.f.). Recuperado el 28 de Junio de 2011, de http://digilander.libero.it/carmine.lia/jroboop/i ndex.html [4] Sourceforge. (s.f.). Recuperado el 27 de 2011, de Junio de http://sourceforge.net/projects/scirt/ SpaceLib. (s.f.). Recuperado el 28 de junio [5] de 2011, de http://spacelib.ing.unibs.it/ [6] The Orocos Proyect. (s.f.). Recuperado el 27 de Junio de 2011, de http://www.orocos.org/ [7] Torres, F., Pomares, J., Gil, P., Puente, S., & Aracil, R. (2002). Robots y Sistemas Sensoriales . Madrid: Pearson Educación.
13
[8] Universidad Don Bosco. (s.f.). Recuperado el 30 de Mayo de 2011, de http://www.udb.edu.sv/Academia/Laboratorios /electronica/FRobotica/guia5FRO.pdf [9] Wane, S. (2011, Mayo 4). Staffordshire University. Recuperado de www.fcet.staffs.ac.uk/sow1/robotmaterial/Mas teringRoboticsToolbox.pdf
BIOGRAFÍA M. G. Cabrera actualmente cursa el último semestre de Ingeniería de Sistemas, Departamento de Control, Universidad de los Andes, Mérida, Venezuela (e‐mail:
[email protected]).
14
Nombre de archivo: paper_toolbox_de_robotica01 Directorio: C:\Documents and Settings\Eladio\Mis documentos\Dropbox\CLASES\ISPIRO\SEMINARIOS\GABRIELACABR ERA Plantilla: C:\Documents and Settings\Eladio\Datos de programa\Microsoft\Plantillas\Normal.dotm Título: Asunto: Autor: Angelical V4 Palabras clave: Comentarios: Fecha de creación: 05/07/2011 18:11:00 Cambio número: 2 Guardado el: 05/07/2011 18:11:00 Guardado por: Eladio Tiempo de edición: 0 minutos Impreso el: 05/07/2011 18:11:00 Última impresión completa Número de páginas: 14 Número de palabras: 3.874 (aprox.) Número de caracteres: 21.310 (aprox.)