Vous êtes sur la page 1sur 23

UNIVERSIDAD DE LAS

FUERZAS ARMADAS - ESPE


DEPARTAMENTO DE CIENCIA DE LA
ENERGA Y MECNICA

Robtica Industrial
Explicacin de comandos para el uso del
Robotic Toolbox
Carolina Arcentales
Cristian Changoluisa
David Del Castillo
Lenin Gonzalez
Juan Pablo Granda
Dayana Santacruz
28/07/2015

DEFINIR ROBOT ANTROPOMORFICO EN MATLAB


Definimos variables de cada eslabn y articulacin el robot con Denavit
Hatemberg con la tabla que se muestra en la figura 2.

Figura 1. Robot Antropomrfico a usar

Tabla 1. Valores de constantes aplicando Denavit Hatemberg.

Con la funcin link aadimos valores que se muestran en la Tabla 1 para


posterior procesamiento de datos en Matlab como se muestra a continuacin:
L1 = Link('revolute', 'd', 0.171, 'a', 0.055, 'alpha', pi/2);
L2 = Link('revolute', 'd', 0, 'a', 0.150, 'alpha', 0);
L3 = Link('revolute', 'd', 0, 'a', 0.188, 'alpha', 0);
El siguiente paso es generar el robot al unir cada uno de los links formados, lo
que dar como resultado un brazo robtico de 3 GL esto se lo har con la
funcin SerialLink:
antro=SerialLink([L1 L2 L3],'name','antro1');
Procedemos a graficar el robot en un espacio tridimensional con la sub-funcin
de la clase SerialLink llamada plot pero para ello necesitamos un vector qz
que representa la variable de cada articulacin en este caso son 3 ngulos.
qz=[0 pi/2 -pi/2];
antro.plot(qz);
1

Podemos visualizar las propiedades mecnicas como cinemticas ingresando


el nombre del robot en la lnea de comandos.
>>antro
antro =
antro1 (3 axis, RRR, stdDH, fastRNE)
+---+-----------+-----------+-----------+-----------+-----------+
|j|

theta |

d|

a|

alpha | offset |

+---+-----------+-----------+-----------+-----------+-----------+
| 1|

q1|

0.171|

0.055|

1.571|

0|

| 2|

q2|

0|

0.15|

0|

0|

| 3|

q3|

0|

0.188|

0|

0|

+---+-----------+-----------+-----------+-----------+-----------+
grav = 0 base = 1 0 0 0 tool = 1 0 0 0
0

0 1 0 0

9.81

0 0 1 0
0 0 0 1

0 1 0 0
0 0 1 0
0 0 0 1

Aplicamos los siguientes comandos con su utilidad:


antro.teach(); Podemos manejar el robot usando la unidad de programacin
virtual.
a=antro.getpos();Obtenemos la posicin en la que se encuentra el robot virtual.
Comandos (Funciones y Clases) Usados como sub-funciones de la clase
robot:
Clases:

Link()
SerialLink()

Funciones:
Plot()
Getpos()
Propiedades:
links
gravity
base

vector de los links usados.


direccin de la gravedad [gx gy gz].
pose of robots base (4 x 4 homog).

name
grfica.
manuf

Devuelve el nombre del robot usado para la representacin


anotacin, el nombre del fabricante.

comment

anotacin, comentario general.

plotopt

opciones para plot () mtodo (conjunto de clulas).

CINEMTICA DIRECTA
Inicialmente se define un objeto robot, que para el caso de este informe se
utiliz las dimensiones del robot presentado como proyecto en los parciales
anteriores.

Figura 2. Dimensiones robot antropomrfico.

Una vez definidas las dimensiones del robot, se realiza el estudio de cinemtica
directa:
rtbdemo:

Figura 3. Herramienta robotTool

L1=Link('revolute', 'd', 171, 'a', 55, 'alpha', pi/2);


L2=Link('revolute', 'd', 0, 'a', 150, 'alpha', 0);
L3=Link('revolute', 'd', 0, 'a', 188, 'alpha', 0);
3

antro=SerialLink([L1 L2 L3],'name','antro')
qz=[0 pi/2 -pi/2];
antro.fkine(qz)

Esta funcin devuelve la transformada homognea correspondiente al ltimo


punto en el que estuvo el robot.

Posteriormente se define un punto al que se va a desplazar el robot


qz: punto inicial del movimiento.
qr: punto final del movimiento .
t: vector tiempo de desplazamiento

q=jtraj(qz,qr,t) % se mueve de qz a qr en un tiempo t


T=antro.fkine(q)

T es una matriz tridimensional, representa el tiempo, y los desplazamientos


realizados en cada lapso de 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)');

La funcin squeeze regresa los valores de posicin respecto de tiempo de cada


movimiento.

Figura 4. Graficas de desplazamiento en funcin del tiempo para cada eje coordenado.

Por ultimo graficamos la velocidad para cada eje en el plano xz.

Figura 5. Graficas de desplazamiento en el plano xz.

Por ltimo, se realiza una simulacin en tiempo real con la sentencia teach,
permite simular en una ventana la variacin de los distintos grados de libertad.

Figura 6. Herramienta de simulacin para cada grado de libertad.

Comandos utilizados:

rtbdemo

Muestra una serie de ejemplos para diferentes tipos de


estudios y anlisis matemticos.

Link

Permite ingresar los parmetros de la matriz de DH en un


vector para declararlo como robot.

SerialLink

Convierte a objetos declarados como Link en un robot con


la configuracin especificada dependiendo los grados de
libertad.

Kinematics

Proporciona un ejemplo de cmo utilizar la herramienta de


robotics toolbox para los clculos de cinemtica.

Fkine

Retorna la transformada homognea correspondiente al


ltimo valor de posicin del robot.

Jtarj

Calcula las coordenadas para la generacin de trayectoria.

Antro.fkine(q)

Matriz tridimensional de velocidades para cada articulacin.

revoluto

Define un objeto List como parte de una cadena cinemtica


de un robot antropomrfico.

Squeeze

Extrae las componentes seleccionadas de la matriz T,


correspondientes al arreglo tridimensional del movimiento.

antro.teach()

Devuelve una nueva ventana en la cual esta dibujado el


robot Antro y nos da la opcin de variar en tiempo real
cada grado de libertad.

Cinemtica Inversa
La cinemtica inversa es el problema de encontrar las coordenadas de ejes del
robot, dado una matriz de transformacin homognea. Es muy til cuando la
trayectoria est prevista en el espacio cartesiano, por ejemplo un camino en
lnea recta.
Despus de haber definido el robot, se inicia nuevamente las opciones de la
librera con el comando
>> rtbdemo
Aparece la ventana de la figura 2 con las herramientas de la librera,
seleccionamos Arm: Inverse kinematics.
Por medio de la herramienta se genera el proceso de Cinemtica Inversa para
el robot puma pero se puede realizar con el comando ikine los siguientes
comandos para el robot antropomrfico definido anteriormente.

En primer lugar generar la transformada correspondiente a una articulacin en


particular.
>> q=[pi/4 pi/4 -pi/4]
q=
0.7854 0.7854 -0.7854
>> T = fkine(antro, q)
T=
0.7071

0 0.7071 246.8269

0.7071 0.0000 -0.7071 246.8269


0 1.0000 0.0000 277.0660
0

0 1.0000

y luego encontrar los ngulos de las articulaciones correspondientes utilizando


ikine ()
>> qi = ikine(antro, T,qo,[0 0 0 0 0 0])
qi =
27.7168 38.7168 49.7168

DINAMICA
DIRECTA
En este caso se declara al robot con parmetros cinemticos y dinmicos para
el anlisis en RTB de Matlab, de la siguiente forma.

>> L1 = Link('revolute', 'd', 0.171, 'a', 0.055, 'alpha', pi/2, 'm',0.9, 'r',
[0.025;0.013;0.03], 'I',[ 0.025 0 0;0 0.013 0;0 0 0.03]);
>> L2 = Link('revolute', 'd', 0, 'a', 0.150, 'alpha', 0, 'm',0.7, 'r', [0.075;0.04;0.04],
'I',[ 0.075 0 0;0 0.04 0;0 0 0.04]);
>> L3 = Link('revolute', 'd', 0, 'a', 0.188, 'alpha', 0, 'm',0.4, 'r', [0.095;0.07;0.08],
'I',[ 0.095 0 0;0 0.07 0;0 0 0.08]);

Donde:
m= Masa del eslabn.
r= Centro de gravedad de dimensin 3x1.
I= Matriz de Inercia 3x3.

Creamos la cadena cinemtica


antro=SerialLink([L1 L2 L3],'name','antro1')

Comando accel

Este comando nos ayuda a encontrar la Aceleracin de cada eslabn sometido


a un determinado torque o fuerza.
Declaramos un qz que corresponde a la posicin de anlisis.
>> qz=[0 pi/2 -pi/2];
y a continuacin ejecutamos el comando correspondiente.
Posicin de anlisis
Velocidad inicial
Torque Inicial

>> antro.accel(qz, zeros(1,3), zeros(1,3))

Obteniendo:

Figura 1. Resultado Comando accel.

Comando nofriction y fdyn

El comando nofriction como su nombre lo indica establece como cero las


fricciones en las juntas, esto permite el anlisis en estado ideal.
Por otro lado el comando fdyn integra y predice una serie de estados dinmicos
basados en todos los parmetros cinemticos y dinmicos impuestos.
Tiempo de anlisis
Funcin Torque
Posicin Inicial

>> [t q qd] = antro.nofriction().fdyn(10, [], qz);


Donde:
t= Vector tiempo.
q= Posicin de la junta.
qd= Velocidad de la junta.
El ejemplo generado corresponde al comportamiento del robot cuando se lo
suelta libremente en condiciones ideales de la posicin qz.
Generados estos vectores se los podr graficar con respecto al tiempo, de la
siguiente manera.
>> subplot(3,1,1)
plot(t,q(:,1))
xlabel('Time (s)');
ylabel('Joint 1 (rad)')
subplot(3,1,2)
plot(t,q(:,2))
xlabel('Time (s)');
ylabel('Joint 2 (rad)')
subplot(3,1,3)
plot(t,q(:,3))
10

xlabel('Time (s)');
>>ylabel('Joint 3 (rad)')

Se obtiene la siguiete grafica.

Figura 7. Posicin de los eslabones vs el tiempo.

INVERSA
Al contrario del tema anterior, lo que se busca es analizar los torques inmersos,
en el movimiento del robot.

Comando rne

Este comando nos genera la dinmica inversa, sea el torque necesario para
realizar el estado deseado teniendo como datos la velocidad y aceleracin de
cada eslabn, teniendo:
Posicin de anlisis

Vector Velocidad
Vector Aceleracin

>> tau = antro.rne(qz, 5*ones(1,3), ones(1,3))

Figura 8. Resultado comando rne

A continuacin generaremos la dinmica inversa dentro de una trayectoria. Lo


primero que deberemos hacer es un vector tiempo de anlisis.
>> t = [0:.056:2];
Consiguientemente la posicin final del robot.
>> qr=[0 0 0];
11

Finalmente con la ayuda del comando jtraj visto anteriormente, generamos la


trayectoria entre el punto inicial qz y el final qr.
>> [q,qd,qdd] = jtraj(qz, qr, t)
Graficamos el resultado dinmico durante la trayectoria de la siguiente manera
haciendo el nuevamente del comando rne.
>> tau = antro.rne(q, qd, qdd);
>> plot(t, tau(:,1:3)); xlabel('Time (s)'); ylabel('Joint torque (Nm)')

Figura 9.Grafica Torque de cada eslabn sin efecto de la gravedad

La grafica no es analizada aplicada la gravedad ya que en el primer eslabn


esta es despreciable.
Para los dos eslabones siguientes realizaremos una comparacin entre el
estado ideal y el otro donde la gravedad afecta al sistema.

>> taug = antro.gravload(q);


>> subplot(2,1,1); plot(t,[tau(:,2) taug(:,2)]); xlabel('Time (s)'); ylabel('Torque on joint 2
(Nm)');
>> subplot(2,1,2); plot(t,[tau(:,3) taug(:,3)]); xlabel('Time (s)'); ylabel('Torque on joint 3
(Nm)');

12

Figura 10. Grafica de los eslabones 2 y 3 comparados con el efecto gravedad

Comandos Utilizados
Link

Genera eslabones

SerialLink

Genera cadena cinemtica

antro.accel

Anlisis de aceleracin

antro.nofriction()

Friccin nula en juntas

antro.fdyn

Proyeccin de la Dinmica del sistema

antro.rne

Dinmica Inversa

antro.gravload

Agregado de la gravedad
Generacin de trayectorias

Se va a partir del robot ya definido en el primer paso, cuyo punto inicial para el
TCP es:

Figura 11. Punto de inicio del TCP en X, Y, Z.

Definiremos este punto como 0 y el punto al que queremos que llegue el TCP
ser 1 = 0.5, 1.78, 1.9, por lo que tendremos puntos de inicio y de fin en los 3
ejes a trabajar.

13

Figura 12. Punto de inicio y final del TCP en X, Y, Z.

Para esto se usar el comando tpoly, que genera una trayectoria polinomial
escalar, es decir tendremos las posiciones, velocidad y aceleraciones del TCP
en cada eje, por lo que ser diferente la velocidad de desplazamiento en el eje
, en el y en el
0 = 0
0 = 1.5708
0 = 1.5708

1 = 0.5
1 = 1.78
1 = 1.9

Figura 13. Polinomios escalares de posicin.

Por lo que ahora se pueden obtener las grficas de posicin del TCP en cada
eje.

Figura 14. Posiciones del TCP en cada eje.

14

Ahora definiremos los polinomios necesarios para poder generar las


velocidades y aceleraciones del TCP en cada uno de los ejes

Figura 15. Polinomios escalares de posicin, aceleracin y velocidad.

Y de igual manera se generan los grficos de velocidades y aceleraciones por


cada eje

Figura 16. Velocidad del TCP en cada eje.

Figura 17. Aceleracin del TCP en cada eje.

15

En este punto es necesario generar segmentos lineales con una combinacin


parablica, esto es debido a que como podemos ver en la velocidad, esta no es
constante, sino que llega a un mximo pico y luego disminuye, esto se elimina
usando el comando lspb.

Figura 18. Polinomios escalares de posicin, aceleracin y velocidad combinados con


lneas parablicas.

Ahora las grficas nos quedarn as

Figura 19. Posiciones del TCP en cada eje.

Figura 20. Velocidad casi constante del TCP en cada eje.

16

Figura 21. Aceleracin casi constante del TCP en cada eje.

De esta manera se logra tener velocidades mas constantes y por ende ms


reales en comparacin al robot con el que se est trabajando.
Ahora para obtener la trayectoria en mltiples ejes entre dos puntos se usar el
comando mtraj, con este comando se puede visualizar la posicin, velocidad, y
aceleracin del TCP en todos los ejes en el mismo grfico como se muestra a
continuacin.

Figura 22. Obtencin de todos los parmetros.

Figura 23. Posicin del TCP en todos los ejes.

17

Figura 24. Velocidad del TCP en todos los ejes.

Figura 25. Aceleracin del TCP en todos los ejes.

Ahora es necesario interpolar las posiciones para obtener un movimiento


completo del TCP, con las mismas posiciones de inicio y fin que usamos al
principio, para esto se usar el comando trans.

Figura 26. Interpolacin del movimiento del TCP en cada eje.

Para poder graficar esta interpolacin se usa el comando ctranj que define una
trayectoria cartesiana entre dos puntos y se la grafica.

Figura 27. Obtencin de la trayectoria cartesiana como matrices de movimiento.

18

Figura 28. Animacin del movimiento del TCP en 3D.

Comandos utilizados
tpoly

Genera una trayectoria escalar a partir de dos puntos en el


mismo eje.

lspb

Genera una trayectoria cartesiana a travs de una mezcla


entre lneas y curvas.

mtraj

Genera trayectorias para mltiples ejes entre dos puntos.

transl

Genera una matriz interpolada.

ctraj

Genera una trayectoria cartesiana entre dos puntos de


manera tridimensional

tranimate

Dibuja la simulacin en 3D del movimiento generado.

REPRESENTACIN GRFICA Y MOVIMIENTO EN 3D


DE UN ROBOT
Una vez definida la cinemtica del robot y las posiciones Home y ready to
work, procedemos a definir el tiempo de ejecucin de los movimientos y la su
trayectoria.
t = [0:.05:2]';
% Genera un vector de tiempo
q = jtraj(qz, qr, t); % Genera una trayectoria de
coordenadas
Donde
qz : es un vector que contiene los ngulos de cada articulacin para la
posicin inicial o
Home.

19

qr : es un vector que contiene los ngulos de cada articulacin para la


posicin ready to work
jtraj(): es una trayectoria espacial donde las coordenadas varan desde
qz hasta qr.
La duracin del movimiento est definida por los elementos del vector de
tiempo t.
Una vez declarada la secuencia de trayectoria del robot procedemos a graficar
el brazo en un espacio tridimensional en el cual se simula y aprecia el
movimiento de las articulaciones.
antro.plot(q); % Grafico en espacio tridimensional
Plot es un Mtodo de la Clase Serial-Link. Siendo su estructura general
nombre del brazo.plot(vector de angulos o funcin de trayectoria)
Cabe mencionar que si se utiliza el vector de ngulos para la graficar el brazo,
por ejemplo qr, el grafico simplemente permanecer esttico en la posicin
dada por qr, sin embargo si se utiliza la funcin de trayectoria, por ejemplo q,
se podr apreciar el movimiento del brazo desde la posicin qz hasta la
posicin qr.

Figura 29. Representacin grafica de un robot antropomrfico en la coordenadas dadas


por los vectores qz y qr respectivamente.

Otra funcin (propia de matlab) que se puede utilizar para la representacin


grfica en 3D es view(az,el)este nos permite ver el grafico desde
diferentes perspectivas, en otras palabras cambia el Angulo de visin del
grafico tridimensional.
Donde
az: azimuth es la rotacin horizontal alrededor del eje Z medida en
grados desde el eje Y negativo. Los valores positivos indican rotacin del
punto de vista en contra de las manecillas del reloj.
el: es la elevacin vertical en grados del punto de vista.
20

Para poder ver este cambio de perspectiva se debe enviar a graficar


nuevamente con el Mtodo de la Clase Serial-Link plot.
view(150,40);
antro.plot(q);
view(150,40);
antro.plot(q);

Figura 30. Representacin grfica de un robot antropomrfico desde diferentes ngulos


de visin

Otro Mtodo de la clase Serial-Link es el Teach(), nos sirve para manipular las
articulaciones del robot por medio de sliders y al mismo tiempo nos muestras
las coordenas en x, y , z del TCP
antro.teach();
Siendo su estructura general nombre del brazo.teach()

21

Figura 31. Representacin grfica de un robot antropomrfico


con la funcin Teach activada.

Comandos usados
Funciones:
Jtraj(qz,qr,t)

Genera una trayectoria

View(az,el)

Cambia el ngulo de visin del grafico tridimensional

Metodos:
Name.plot()

Muestra una grfica tridimensional

Name.teach()

muestra sliders para la manipulacin del robot

22