Comandos Robotic Toolbox

download Comandos Robotic Toolbox

of 24

description

Comandos necesarios para controlar un robot casero con robotic Toolbox de Matlab

Transcript of Comandos Robotic Toolbox

UNIVERSIDAD DE LAS FUERZAS ARMADAS - ESPE

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 ArcentalesCristian ChangoluisaDavid Del CastilloLenin GonzalezJuan Pablo GrandaDayana Santacruz

28/07/2015

DEFINIR ROBOT ANTROPOMORFICO EN MATLABDefinimos 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); Podemos visualizar las propiedades mecnicas como cinemticas ingresando el nombre del robot en la lnea de comandos.>>antroantro = 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 0 1 0 0 9.81 0 0 1 0 0 0 1 0 0 0 0 1 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 vector de los links usados.gravity direccin de la gravedad [gx gy gz].base pose of robots base (4 x 4 homog).name Devuelve el nombre del robot usado para la representacin grfica.manuf anotacin, el nombre del fabricante.comment anotacin, comentario general.plotopt opciones para plot () mtodo (conjunto de clulas).

CINEMTICA DIRECTAInicialmente 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 robotToolL1=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);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 robotqz: 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 tT=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:

rtbdemoMuestra una serie de ejemplos para diferentes tipos de estudios y anlisis matemticos.LinkPermite ingresar los parmetros de la matriz de DH en un vector para declararlo como robot.SerialLinkConvierte a objetos declarados como Link en un robot con la configuracin especificada dependiendo los grados de libertad.KinematicsProporciona 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.revolutoDefine un objeto List como parte de una cadena cinemtica de un robot antropomrfico.SqueezeExtrae 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 InversaLa 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 >> rtbdemoAparece 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 0 1.0000y 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

DINAMICADIRECTAEn 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 cinemticaantro=SerialLink([L1 L2 L3],'name','antro1') Comando accelEste 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 fdynEl 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))xlabel('Time (s)');>>ylabel('Joint 3 (rad)')

Se obtiene la siguiete grafica.

Figura 7. Posicin de los eslabones vs el tiempo.INVERSAAl contrario del tema anterior, lo que se busca es analizar los torques inmersos, en el movimiento del robot. Comando rneEste 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 rneA 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];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 gravedadLa 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)');

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

Comandos UtilizadosLinkGenera eslabonesSerialLinkGenera cadena cinemticaantro.accelAnlisis de aceleracin antro.nofriction()Friccin nula en juntasantro.fdynProyeccin de la Dinmica del sistemaantro.rne Dinmica Inversaantro.gravloadAgregado de la gravedadGeneracin de trayectoriasSe 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 y el punto al que queremos que llegue el TCP ser , por lo que tendremos puntos de inicio y de fin en los 3 ejes a trabajar.

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

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.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.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.

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.

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.

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

tpolyGenera 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.translGenera una matriz interpolada.ctrajGenera una trayectoria cartesiana entre dos puntos de manera tridimensionaltranimateDibuja la simulacin en 3D del movimiento generado.

REPRESENTACIN GRFICA Y MOVIMIENTO EN 3DDE 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 tiempoq = 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.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. 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()

Figura 31. Representacin grfica de un robot antropomrfico con la funcin Teach activada.

Comandos usadosFunciones:Jtraj(qz,qr,t) Genera una trayectoriaView(az,el)Cambia el ngulo de visin del grafico tridimensionalMetodos: Name.plot()Muestra una grfica tridimensional Name.teach()muestra sliders para la manipulacin del robot

22