View
89
Download
3
Category
Preview:
Citation preview
05/07/2011
1
Toolbox de Robótica para Matlab
María Gabriela Cabrera
Matlab
ContenidoIntroducción Peter CorkeInstalación Definición de un Nuevo Robot Matrices de Rotación Cuaternios Transformaciones Homogéneas Generación de Trayectorias yCinemática Dinámica Modelos Predefinidos de ManipuladoresToolbox de robótica y simulinkConclusiones
05/07/2011
2
Introducción Robots Industriales
Desarrollado por Peter Corke.
Versión 8 (2008).
Incluye funciones de cinemática, dinámica, y generación de trayectoriastrayectorias.
Peter CorkeTitulo 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 del Autonomous Systems laboratory.u dado de uto o ous Syste s abo ato y
Ganador de los premios Qantas/Rolls‐Royce y AustralianEngineering Excellence.
Profesor de control y robótica en la Universidad de Tecnologíade Queensland.
05/07/2011
3
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 Abrir MATLAB4. Abrir MATLAB
5. Agregar el directorio ‘robot’ al MATLABPATH
file>>set path>>add folder>>robot>>ok>>save
Definición de un Nuevo RobotDefinición en MATLAB:
Li=link([αi a i θ i d i σi ])
á l t l j Z Z b l lα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 derechaderecha.
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)
05/07/2011
4
Definición de un Nuevo RobotEjemplo:
Figura 1 Robot SRX‐611
Definición de un Nuevo RobotDefinir los parámetros de Denavit‐Hartenberg.
a2
b2
{1}
{2}
a1
b1 {0}
Figura 2 Parámetros de Denavit‐Hartenberg del SRX‐611
05/07/2011
5
Definición de un Nuevo RobotDefinir los parámetros de Denavit‐Hartenberg.
Eslabón 1: a 350 mma1 = 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 RobotDefinición en MATLAB:
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';
srx.manuf='Sony';
plot(srx,[0 0 0]); 0
0.5
1
Z
xy z
-1-0.5
00.5
1
-1-0.5
00.5
1
-1
-0.5
0
XY
Z
SRX-611
Figura 3 Representación grafica del SRX‐611
05/07/2011
6
Matrices de Rotación• Rotación alrededor del eje X MATLAB:
Rx=rotx(α)
• Rotación alrededor del eje Y MATLAB:
Rx
Ry=roty( )Ry
Matrices de Rotación• Rotación alrededor del eje Z: MATLAB:
Rz=rotz(θ)Rz=rotz(θ)
• Matriz de rotación a matriz de TH: MATLAB:
Rz
T=r2t(R)
05/07/2011
7
Matrices de RotaciónFunción Descripción
angevecr forma angular/vectorial a matriz de rotación (MR)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 THt
CuaterniosDefinidos 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
05/07/2011
8
CuaterniosEjemplo:
Obtener el cuaternio que representa una rotación de 90° sobre q pel eje k( 3, ‐2, 1).
Matlab:
Q=quaternion(k,θ’)
Q=quaternion([3 ‐2 1],(pi/2))
CuaterniosFunción Descripción
+ adición
substracció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 THq2tr
quaternion construir cuaternio
qinterp interpolar cuaternio
unit cuaternio unitario
05/07/2011
9
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(α)
05/07/2011
10
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 MATLAB:
por una traslación: p
T=trotx(α)*transl(px, py, pz)
• Rotación sobre el eje Y seguido MATLAB:
por una traslación:
T=troty( )*transl(px, py, pz)
05/07/2011
11
Transformaciones HomogéneasEjemplo:
tr = trotx(.2)*troty(.3)*transl(1,2,3)
trplot(tr)
3.5
4
Z
YZ2
2.53
1.41.61.822.22.4
2.5
3
X
X
Y
YZ
Figura 4 Combinación de varias operaciones
Transformaciones HomogéneasFunción Descripción
angevec2tr forma angular/vectorial a transformación homogénea(TH)
eul2tr ángulo de Euler a THeul2tr
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
05/07/2011
12
Generación de Trayectorias Ejemplo:
%ángulos iníciales start=[15 45 30 20 60 30]%ángulos finales
0 0.5 1 1.5 2 2.5 30
50
100Posición de las articulaciones
0 0.5 1 1.5 2 2.5 30
50
100
200
stop=[75 0 120 25 30 0]t=[0:0.5:3]
[pos vel]=jtraj(start,stop,t)
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))
0 0.5 1 1.5 2 2.5 30
0 0.5 1 1.5 2 2.5 320
25
0 0.5 1 1.5 2 2.5 320
40
60
0 0.5 1 1.5 2 2.5 30
20
40
0 0.5 1 1.5 2 2.5 30
2040
Velocidad de las articulaciones
0subplot(6,1,6);plot(t,pos(:,6))figure
%velocidad de cada articulaciónsubplot(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))
0 0.5 1 1.5 2 2.5 3-40-20
0
0 0.5 1 1.5 2 2.5 30
50100
0 0.5 1 1.5 2 2.5 3024
0 0.5 1 1.5 2 2.5 3-20-10
0
0 0.5 1 1.5 2 2.5 3-20-10
0
Generación de Trayectorias Función Descripción
ctraj trayectoria cartesianactraj trayectoria cartesiana
jtraj trayectoria de una articulación
trinterp interpolar TH
05/07/2011
13
Cinemática Cinemática Directa
Consiste en determinar cuál es la posición y orientación delextremo final del robot con respecto a un sistema deextremo final del robot, con respecto a un sistema decoordenadas que se toma como referencia, conocidos losvalores de las articulaciones y los parámetros geométricos delos componentes del robot.
Cinemática Inversa
En este caso el problema consiste en resolver la configuraciónd b d t l b t i ió i t ió d lque debe adoptar el robot para una posición y orientación del
extremo conocida.
Cinemática MATLAB:
Cinemática Directa
T fki ( b )T = fkine(robot, q)
fkine calcula la cinemática directa para un vector ‘q‘ querepresenta las coordenadas de la articulación. Devuelve unamatriz de transformación homogénea que describe el efectorfinal.
Cinemática Inversa
q = ikine(robot, T)
ikine devuelve las coordenadas de la articulación para elmanipulador descrito por el objeto robot. T es una matriz detransformación homogénea que describe el efector final.
05/07/2011
14
Cinemática Ejemplo:
Articulación θ d a α1 q1 l1 0 0
2 90 d2 0 90
3 0 d3 0 0
4 q4 l4 0 0
Cinemática Ejemplo:L1 = link([0 0 0 1 0]);D2 = link([pi/2 0 pi/2 1 1]); 2
4
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]);
P d l i t d l ti l i i áti d 1-4
-20
24
-4-2
0
24
-4
-2
0
2
XY
Z
robot2
x y z
Para un desplazamiento de las articulaciones prismáticas de 1 unidad tenemos:
T=fkine(rob,[0 1 1 0])
05/07/2011
15
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 directafkine 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
05/07/2011
16
DinámicaFunción Descripción
accel calcular dinámica directa
cinertia calcular matriz de inercia de un manipuladorcinertia 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 de Manipuladores
1
2
-2-1
01
2
-2-1
01
2-2
-1
0
XY
Z
Fanuc AM120iB/10L
xy z
Figura Robot Fanuc ArcMate 120iB/10L
-10
1
-1
0
1
-1.5
-1
-0.5
0
0.5
1
1.5
XY
Z
Motoman HP6xyz
Figura Robot Motoman HP6
05/07/2011
17
Modelos Predefinidos de Manipuladores
0.5
1
xy z
-1-0.5
00.5
1
-1-0.5
00.5
1-1
-0.5
0
XY
Z
Puma 560
Figura Robot Puma 560
-4-2
02
4
-4-2
02
4-4
-2
0
2
4
XY
Z S4 ABB 2.8xy
z
Figura Robot ABB S4 2.8
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)
05/07/2011
18
Toolbox de robótica y simulinkPara utilizar esta característica :
addpath ROBOTDIR/simulinkp
Para observar los bloques:
roblocks
Toolbox de robótica y simulinkDemos:
05/07/2011
19
Toolbox de robótica y simulinkDemos:
Conclusiones
05/07/2011
20
Referencias Corke, P. (2011, Mayo 8). Robotics Toolbox for MATLAB. Recuperado de www.petercorke.comDapena, E. (2011, Mayo 20). ISPIRO: Introducción a la robótica. Recuperado
// / / /de http://webdelprofesor.ula.ve/ingenieria/eladio/ISPIRO.htmSourceforge. (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/guia5http://www.udb.edu.sv/Academia/Laboratorios/electronica/FRobotica/guia5FRO.pdfWane, S. (2011, Mayo 4). Staffordshire University. Recuperado de www.fcet.staffs.ac.uk/sow1/robotmaterial/MasteringRoboticsToolbox.pdf
Toolbox de RobóticaMaría Gabriela Cabrera
1
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
Toolbox de Robótica
María Gabriela Cabrera Laboratorio de Sistemas Discretos, Automatización e Integración
LaSDAI‐ULA Julio, 2011
2
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
3
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]);
4
-1-0.5
00.5
1
-1-0.5
00.5
1
-1
-0.5
0
0.5
1
XY
Z
SRX-611
xy z
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.
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.
Rotación alrededor del eje X:
MATLAB: rotx(α)
Rotación alrededor del eje Y:
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. Tabla 1 Funciones para matrices de rotación
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
5
angulos roll, pitch, yaw de Euler y los cuaternios.
CUATERNIOS 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:
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))
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
* 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
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.
TRANSFORMACIONES HOMOGÉNEAS 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.
6
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)
7
%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)
1
1.5
21
1.5
2
1
1.2
1.4
1.6
1.8
2
Z
Y
X
Y
X
Z
Figura 4 Traslación
00.5
1 0 0.2 0.4 0.6 0.8
0
0.2
0.4
0.6
0.8
1
Y
Y
X
X
Z
Z
Figura 5 Rotación alrededor del eje X
0 0.5 100.51
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
1.2
X
X
Z
Y
Z
Y Figura 6 Rotación alrededor del eje Y
0
0.5
1
00.2
0.40.6
0.8
0
0.2
0.4
0.6
0.8
1
X
X
Z
Y
Y
Z
Figura 7 Rotación alrededor del eje Z
22.5
3
1.41.61.822.22.4
2.5
3
3.5
4
X
X
Z
Y
Y
Z
Figura 8 Combinación de varias operaciones
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
8
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))
9
0 0.5 1 1.5 2 2.5 30
50
100Posición de las articulaciones
0 0.5 1 1.5 2 2.5 30
50
0 0.5 1 1.5 2 2.5 30
100
200
0 0.5 1 1.5 2 2.5 320
25
0 0.5 1 1.5 2 2.5 320
40
60
0 0.5 1 1.5 2 2.5 30
20
40
Figura 9 Posición de cada articulación
0 0.5 1 1.5 2 2.5 30
2040
Velocidad de las articulaciones
0 0.5 1 1.5 2 2.5 3-40-20
0
0 0.5 1 1.5 2 2.5 30
50100
0 0.5 1 1.5 2 2.5 3024
0 0.5 1 1.5 2 2.5 3-20-10
0
0 0.5 1 1.5 2 2.5 3-20-10
0
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.
Tabla 3 Funciones para trayectorias
Función Descripción
ctraj trayectoria cartesiana
jtraj trayectoria de una articulación
trinterp interpolar TH
CINEMÁTICA 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
10
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
Articulación θ d a α
1 q1 l1 0 0
2 90 d2 0 90
3 0 d3 0 0
4 q4 l4 0 0
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
%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])
-4-2
02
4
-4-2
0
24
-4
-2
0
2
4
XY
Z
robot2
x y z
Figura 12 Representación grafica del robot cilíndrico
11
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
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
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 DE
MANIPULADORES 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
12
predefinidos y una breve descripción de cada una.
Tabla 7 Funciones para modelos predefinidos
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)
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 13 Robot Fanuc ArcMate 120iB/10L
-2-1
01
2
-2-1
01
2-2
-1
0
1
2
XY
Z
Fanuc AM120iB/10L
xy z
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.
Figura 15 Robot Motoman HP6
-10
1
-1
0
1
-1.5
-1
-0.5
0
0.5
1
1.5
XY
Z
Motoman HP6xyz
Figura 16 Representación grafica de Motoman HP6
13
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.
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
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 [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/index.html
[4] Sourceforge. (s.f.). Recuperado el 27 de Junio de 2011, de http://sourceforge.net/projects/scirt/
[5] SpaceLib. (s.f.). Recuperado el 28 de junio 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.
14
[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/MasteringRoboticsToolbox.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: mariacabrera@ula.ve).
Nombre de archivo: paper_toolbox_de_robotica01 Directorio: C:\Documents and Settings\Eladio\Mis
documentos\Dropbox\CLASES\ISPIRO\SEMINARIOS\GABRIELACABRERA
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.)
Recommended