Sunteți pe pagina 1din 24

ROBOT SCARA En la siguiente figura se muestra un robot SCARA RRRP, en donde las tres primeras junturas son revolutas

y el frame de las herramientas es una juntura prismtica. Asignar los frames del mecanismo de eslabones y comprobar la tabla de los parmetros Denavit Hartenberg. En la siguiente figura se muestra los frames de cada articulacin, las cuales son tres revolutas y una prismtica.

Figura 01 Asignacin de Frames en la Mecnica del Robot. En el planteamiento del problema se nos indica que el ROBOT SCARA tiene cuatro parmetros Denavit Hartenberg con 4 DOF, observar que el ltimo parmetro tiene dos articulaciones, en esta solucin se considerara cinco parmetros Denavit Hartenberg con sus 4 DOF. Esta consideracin se ha dado por un tema de orden en su solucin y el cual no altera su propsito. El primer parmetro Denavit Hartenberg se puede considerar como un parmetro fantasma ya que no aporta ninguna articulacin.

Comprobacin de los parmetros Denavit-Hartenbert. i = 1 theta1 d1 a1 alpha1 i =2 theta2 d2 a2 alpha2 i = 3 theta3 d3 a3 alpha3 i = 4 theta4 d4 a4 alpha4 i = 5 theta5 d5 a5 alpha5

Angulo de x0 a x1 medido alrededor de z1 Distancia de x0 a x1 medida a lo largo de z1 Distancia de z0 a z1 medida a lo largo de x1 Angulo de z0 a z1 medido alrededor de x1 Angulo de x1 a x2 medido alrededor de z2 Distancia de x1 a x2 medida a lo largo de z2 Distancia de z1 a z2 medida a lo largo de x2 Angulo de z1 a z2 medido alrededor de x2 Angulo de x2 a x3 medido alrededor de z3 Distancia de x2 a x3 medida a lo largo de z3 Distancia de z2 a z3 medida a lo largo de x3 Angulo de z2 a z3 medido alrededor de x3 Angulo de x3 a x4 medido alrededor de z4 Distancia de x3 a x4 medida a lo largo de z4 Distancia de z3 a z4 medida a lo largo de x4 Angulo de z3 a z4 medido alrededor de x4 Angulo de x4 a x5 medido alrededor de z5 Distancia de x4 a x5 medida a lo largo de z5 Distancia de z4 a z5 medida a lo largo de x5 Angulo de z4 a z5 medido alrededor de x5

1=0 d1=2 a1=0 1=0 2=q1 d2=0 a2=3 2=0 3=q2 d3=0 a3=2 3=0 4=0 d4=2 a4=0 4=0 5=q3 d5=q4 a5=0 5=0

Tabla 01 Clculo de los parmetros Denavit Hartenberg.

Como se dijo anteriormente existen cinco parmetros Denavit Hartenberg, pero si comparamos los cuatro ltimos parmetros Denavit Hartenberg con la solucin planteada observaremos que la solucin se comprueba. Es muy importante seguir el orden en el que se hallan los parmetros Denavit Hartenberg. i 1 2 3 4 5 i 0 q1 q2 0 q3 di d1 0 0 -d4 q4 ai 0 a2 a3 0 0 i 0 0 0 0 0

Tabla 02 Parmetros Denavit Hartenberg

Programacin en software MATLAB Cinemtica Directa El objetivo es hallar la Cinemtica Directa del Robot Scara, esto quiere decir que a partir de las articulaciones q1, q2, q3 y q4 del robot debemos obtener la posicin y orientacin del efector final. Para ello utilizamos el Algoritmo Denavit Hartenberg y codificamos el mismo en una funcin en MATLAB con el nombre denavit.

Como es sabido el Algoritmo Denavit Hartenberg est conformado por una rotacin en el eje Z, una translacin en el eje Z, una translacin en el eje X y una rotacin en el eje X. Todos estas rotaciones y translaciones se dan con respecto al eje mvil, por ende sus matrices se debern pos multiplicar sobre las matrices de transformaciones previas tal y como se muestra a continuacin.

Esto nos dar una matriz de transformacin homognea MTH, como tenemos cuatro parmetros Denavit Hartenberg y un parmetro fantasma obtendremos cinco MTHS. Es muy importante respetar el orden en el que se da funcin denavit, ya que de esto depende nuestra Cinemtica Directa. Demostracin del Algorimo Denavit Hartenberg en MATLAB.
clear all; close all; clc %-----------------------------------------------------------------------% DEMOSTRACION DEL ALGORITMO DENAVIT HARTENBERG %-----------------------------------------------------------------------% simbolizacin de las variables. %-----------------------------------------------------------------------syms theta d a alpha % MTH con rotacion alrededor del eje Z rotz = [cos(theta) -sin(theta) 0 0 sin(theta) cos(theta) 0 0 0 0 1 0 0 0 0 1]; % MTH con translacion a lo largo del eje Z pz = [1 0 0 0 0 1 0 0 0 0 1 d 0 0 0 1]; % MTH con translacion a lo largo del eje X px = [1 0 0 a 0 1 0 0 0 0 1 0 0 0 0 1]; % MTH con rotacion alrededor del eje X rotx = [1 0 0 0 0 cos(alpha) -sin(alpha) 0 0 sin(alpha) cos(alpha) 0 0 0 0 1]; % Pos multiplicacion de MTHS denavit=rotz*pz*px*rotx; % denavit = % % [ cos(theta), -cos(alpha)*sin(theta), sin(alpha)*sin(theta), a*cos(theta)] % [ sin(theta), cos(alpha)*cos(theta), -sin(alpha)*cos(theta), a*sin(theta)] % [ 0, sin(alpha), cos(alpha), d] % [ 0, 0, 0, 1]

Ahora haremos de este algoritmo una funcin en MATLAB como se menciono anteriormente.

%-------------------------------------------------------------------------% FUNCION DENAVIT HARTENBERG %-------------------------------------------------------------------------function dh = denavit(theta,d,a,alpha) dh = [cos(theta) -cos(alpha)*sin(theta) sin(alpha)*sin(theta) a*cos(theta) sin(theta) cos(alpha)*cos(theta) -sin(alpha)*cos(theta) a*sin(theta) 0 sin(alpha) cos(alpha) d 0 0 0 1];

Esta funcin ser llamada para obtener los MTHS relativas a cada eslabn de nuestro Robot Scara, como tenemos cinco parmetros Denavit Hartenber entonces tendremos 5 MTHS. Para realizar nuestros plots en MATLAB o como en cualquier otro software de clculo matemtico es necesario que cada coordenada en el espacio deba estar referenciado al eje fijo, por lo tanto debemos obtener MTHS con respecto al Frame Fijo y no respecto al Frame Moviles (referenciados a cada eslabn). Del problema tenemos los siguiente MTHS

Figura 02 MTHS respecto a los MTHS Mviles.

Como podemos apreciar en la figura 02 las flechas de amarillo nos hace referencia que el MTH posterior esta referenciado al anterior (relativo a cada eslabn). No est de ms decir que estos cinco MTHS son el resultado de haber llamado cinco veces a la funcin denavit. Ahora multiplicando continuamente uno a uno los MTHS obtendremos:

Donde: Los MTHS obtenidos son los que se utilizaran para plotear los Frames del robot en MATLAB con la Toolbox frame.

Figura 03 MTHS respecto al MTH Fijo. Como podemos apreciar en la figura 03, las flechas de amarillo nos hace referencia que los MTHS esta referenciado al Frame Fijo. Ahora para hallar las coordenadas de cada punto del extremo de los eslabones relativos al Frame Fijo, se hallara de la siguiente manera.

Sabemos que el MTH aportan la siguiente informacin:

Figura 04 Informacin del MTH. Entonces extraeremos la eslabn (Frame Mvil) columna cuatro de cada MTH relativa a cada

Figura 05 Coordenadas de cada punto del extremo de los eslabones del robot con respecto a las Coordenadas Mviles.

Nuestro objetivo es hallar los puntos de las Coordenadas mviles, , pero con respecto al Frame Fijo, , ahora para poder encontrarlas multiplicaremos los siguientes MTHS y sus respectivas coordenadas de cada punto del extremo del robot:

Figura 06 Coordenadas de cada punto del extremo de los eslabones con respecto a las Frame Fijo. Gracias a los MTHS con respecto al Frame Fijo y a los puntos de las coordenadas de los extremos de cada eslabn de nuestro robot, tambin con respecto al Frame Fijo, podremos realizar su ploteo tanto de los Frame Mviles como de las coordenadas de cada extremo del robot en MATLAB.

Con lo descrito anteriormente estamos listos para realizar la cinemtica directa en MATLAB tal como sigue:
clear all; close all; clc; %-------------------------------------------------------------------------% PARAMETROS DEL ROBOT SCARA RRRP %-------------------------------------------------------------------------d=[2 0 0 2 0]; de los eslabones a lo largo del eje Z a=[0 3 2 0 0]; % distancias de los eslabones a lo largo del eje X %-------------------------------------------------------------------------% ARTICULACIONES %-------------------------------------------------------------------------% R R R P q=[pi/4 pi/6 -pi/2 -2]; % home position %-------------------------------------------------------------------------% PARAMETROS DENAVIT-HARTENBERT %-------------------------------------------------------------------------% theta d a alpha T=[ 0 d(1) 0 0 q(1) 0 a(2) 0 q(2) 0 a(3) 0 0 -d(4) 0 0 q(3) q(4) 0 0]; %-------------------------------------------------------------------------% CALCULO DE LOS MTH CON RESPECTO AL FRAME MOVIL (relativo a los eslabones) %-------------------------------------------------------------------------% theta d a alpha T01=denavit(T(1,1),T(1,2),T(1,3),T(1,4)); T12=denavit(T(2,1),T(2,2),T(2,3),T(2,4)); T23=denavit(T(3,1),T(3,2),T(3,3),T(3,4)); T34=denavit(T(4,1),T(4,2),T(4,3),T(4,4)); T45=denavit(T(5,1),T(5,2),T(5,3),T(5,4)); %-------------------------------------------------------------------------% MTH MOVIL RELATIVO AL FRAME FIJO %-------------------------------------------------------------------------T00=eye(4); T01=T00*T01; % extremo "1" referenciado al eje fijo XYZ (coincidente) T02=T01*T12; % extremo "2" referenciado al eje fijo XYZ T03=T02*T23; % extremo "3" referenciado al eje fijo XYZ T04=T03*T34; % extremo "4" referenciado al eje fijo XYZ T05=T04*T45; % extremo "5" referenciado al eje fijo XYZ %-------------------------------------------------------------------------% VECTOR DE TRANSLACION RELATIVO AL FRAME FIJO %-------------------------------------------------------------------------P1=T00*T01(:,4); P2=T01*T12(:,4); P3=T02*T23(:,4); P4=T03*T34(:,4); P5=T04*T45(:,4); %-------------------------------------------------------------------------% PLOT'S DEL ROBOT SCARA CON SUS RESPECTIVO FRAMES %-------------------------------------------------------------------------figure title('ROBOT SCARA') frame(T00,'k',.5) hold on plot3([0 P1(1)],[0 P1(2)],[0 P1(3)],'r','linewidth',3)

frame(T01,'b',.5) hold on plot3([P1(1) P2(1)],[P1(2) P2(2)],[P1(3) P2(3)],'r','linewidth',3) frame(T02,'b',.5) hold on plot3([P2(1) P3(1)],[P2(2) P3(2)],[P2(3) P3(3)],'r','linewidth',3) frame(T03,'m',.5) hold on plot3([P3(1) P4(1)],[P3(2) P4(2)],[P3(3) P4(3)],'r','linewidth',3) frame(T04,'b',.5) hold on plot3([P4(1) P5(1)],[P4(2) P5(2)],[P4(3) P5(3)],'r','linewidth',3) frame(T05,'g',.5) axis([-1 5 -1 5 -3 3]) grid view(121,44) rotate3d

Los MTHS relativos al Frame Fijo son:


T00 = 1 0 0 0 T01 = 1 0 0 0 T02 = 0.7071 0.7071 0 0 -0.7071 0.7071 0 0 0 0 1.0000 0 2.1213 2.1213 2.0000 1.0000 0 1 0 0 0 0 1 0 0 0 2 1 T05 = 0.9659 -0.2588 0 0 0.2588 0.9659 0 0 0 0 1.0000 0 2.6390 4.0532 -2.0000 1.0000 0 1 0 0 0 0 1 0 0 0 0 1 T04 = 0.2588 0.9659 0 0 -0.9659 0.2588 0 0 0 0 1.0000 0 2.6390 4.0532 0 1.0000 T03 = 0.2588 0.9659 0 0 -0.9659 0.2588 0 0 0 0 1.0000 0 2.6390 4.0532 2.0000 1.0000

ROBOT SCARA

Z X Z 3 2 1 X Y Z X Y Z Y X Y X -1 Z X 0 1 2 3 4 5 Eje Y 5 4 Eje X 3 Y 2 1 0 Y

Eje Z

0 -1 -2 -3 -1

Plot 01 Mecanismo de Eslabones del Robot Scara. Los Frame de color azul representan las articulaciones de rotacin y el de color verde representa la articulacin prismtica. Cinemtica Inversa El objetivo es hallar la Cinemtica Inversa del Robot Scara, esto quiere decir que a partir de la posicin y orientacin de cada extremo de nuestro Robot encontremos las articulacin q1, q2, q3 y q4. Esto se realizara a partir de nuestros MTHS ya que estos posee la informacin requerida. Previamente observaremos con ms detenimiento la informacin que posee nuestros MTHS.

Matriz de transformacin Homognea La matriz n o a lleva la informacin de la orientacin de un punto en el espacio XYZ representado por sus respectivos vectores unitarios de cada eje, eje X, eje Y y del eje Z.

10

Ahora extraeremos los tres primeros elementos de la primera columna

Ahora extraeremos los tres primeros elementos de la segunda columna

Ahora extraeremos los tres primeros elementos de la tercera columna

El MTH en funcin del vector n o a quedara representado:

Ahora pasaremos a plotearlo su posicin y orientacin en el espacio XYZ, tal y como sigue:

Figura 07 Representacin del Vector Unitario n o a en el Espacio XYZ. Este vector unitario n o a nos dar la informacin de la orientacin de cada Frame en el espacio, pero este vector unitario n o a tendr que ser extrado exclusivamente de los MTHS relativos al Frame Fijo.

11

Ahora de la Figura 03 y 06 podemos representar los MTHS de cada Frame relativo a Frame Fijo en funcin de sus vectores unitarios n o a , as como tambin de sus posiciones:

[ [ [ [ [

] ] ] ] ]

Como sabemos nuestro Robot Scara est compuesto por un RRRP entonces tendremos que hallar tres articulaciones de rotacin (q1, q2 y q3) y una articulacin prismtica (q4). Obtencin de las articulaciones de rotacin. Articulacin q1

Figura 08 Superposicin de los MTHS M01 y M02. De la figura 08 aplicamos ley de cosenos.

12

Articulacin q2

Figura 09 Superposicin de los MTHS M02 y M03. De la figura 09 aplicamos ley de cosenos.

Articulacin q3

Figura 10 Superposicin de los MTHS M03 y M04. De la figura 10 aplicamos ley de cosenos.

13

Obtencin de la articulacin prismtica. Articulacin q4

Figura 11 Translacin del Frame M04 a M05. De la figura 11 aplicamos una simple resta de vectores.

Con lo descrito anteriormente estamos listos para realizar la cinemtica inversa en MATLAB tal como sigue:
% CINEMATICA INVERSA A PARTIR DE MTH's %-------------------------------------------------------------------------% Articulacion q1 %-------------------------------------------------------------------------sq1 = dot(T02(1:3,1),T01(1:3,2)); cq1 = dot(T02(1:3,2),T01(1:3,2)); q1 = (atan2(sq1,cq1))*180/pi; %-------------------------------------------------------------------------% Articulacion q2 %-------------------------------------------------------------------------sq2 = dot(T03(1:3,1),T02(1:3,2)); cq2 = dot(T03(1:3,2),T02(1:3,2)); q2 = (atan2(sq2,cq2))*180/pi; %-------------------------------------------------------------------------% Articulacion q3 %-------------------------------------------------------------------------sq3 = dot(T05(1:3,1),T04(1:3,2)); cq3 = dot(T05(1:3,1),T04(1:3,1)); q3 = (atan2(sq3,cq3))*180/pi; %-------------------------------------------------------------------------% Articulacion q4 %-------------------------------------------------------------------------q4 = T05(3,4)-T04(3,4); q = [q1 q2 q3 q4];

Las articulaciones ingresadas en la cinemtica directa son: q = 45.0000 30.0000 -90.0000 -2.0000

14

Programacin en software LABVIEW La programacin en el entorno grafico de LABVIEW va hacer simplemente una traduccin del cdigo hecho en MATLAB, el cual consistir de: CINEMTICA DIRECTA Primeramente para la cinemtica directa es necesario crear una funcin con el Algoritmo Denavit Hartenberg. SUBVIEW DENAVIT HARTENBERG Anlogo a MATLAB se creara un SUBVIEW con el Algoritmo Denavit Hartenberg llamado D-H.vi. Este subview recibe los PARMETROS DENAVIT HARTENBEG en un ARRAY 1D con cuatro elementos y nos devolver una matriz cuadrada de 4x4 que representa la MATRIZ DE TRANSFORMACION HOMOGENEA. Para la creacin de este subview se utilizo las siguientes herramientas, INDEX ARRAY, BUILD ARRAY, CONVERTS ARRAY TO MATRIX, COSINE, SINE y un subview que convierta valores de sexagesimales a radianes con el nombre seg_rad.vi.

Figura 12 Subview Denavit Hartenberg.

15

Ahora con la subview ya creado se puede empezar a construir la cinemtica directa. Comenzaremos creando un WHILE LOOP con su respectivo STOP, para ahorrarle recursos a LABVIEW, y un STACKED SEQUENCE STRUCTURE con cuatro FRAME para tener un orden en la programacin. En el FRAME 0: Aqu ingresaremos los valores de las articulaciones y las dimensiones de cada eslabn que estructura nuestro robot y todas estas, formaran un ARRAY 2D de 4x4 llamado Parmetros Denavit-Hartenberg. Cada uno de estos parmetros ingresara al subview D-H.view y obtendremos los MTHS relativos al Frame Mvil (referenciado a cada eslabn). Para la programacin se utilizo REPLACE ARRAY SUBSET, INDEX ARRAY y D-H.view.

Figura 13 Frame 0 del Stacked Sequence Structure. En el FRAME 1: Aqu obtendremos los MTHS referenciados VARIABLES LOCALES y PRODUCTO DE MATRICES al Frame Fijo. Se utilizo

Figura 14 Frame 1 del Stacked Sequence Structure.

16

En el FRAME 2: Aqu obtendremos las coordenadas de los puntos de los extremos del ROBOT SCARA referenciados al Frame Fijo. Se utilizo VARIABLES LOCALES, GET MATRIX ELEMENTS y PRODUCTO DE MATRICES.

Figura 15 Frame 2 del Stacked Sequence Structure. En el FRAME 3: Aqu se recibir las coordenadas de los puntos de los extremos del ROBOT SCARA referenciados al Frame Fijo y se ordenaran convenientemente las coordenadas para plotearlas. Se utilizo BUILD MATRIX en modo APPEND by columns, TRANSPOSE MATRIX, GET SUBMATRIX, GET MATRIX ELEMENTS, CONVERTS MATRIX TO ARRAY, RESHAPE ARRAY y NI_3DGRAPH.LVLIB: 3D CURVE.VI.

Figura 16 Frame 3 del Stacked Sequence Structure.

17

El ploteo en labview se aprecia seguidamente:

Figura 17 Ploteo del Robot Scara. CINEMTICA INVERSA Se creara un SUBVIEW Cinematica_Inversa. SUBVIEW CINEMATICA INVERSA Este subview recibe las cinco MATRICES DE TRANSFORMACION HOMOGENEA, relativa al Frame Fijo, y nos retorna una ARRAY 1D con cuatro elementos, que representa las ARTICULACIONES q. Para la creacin de este subview se utilizo las siguientes herramientas, ARRAY SUBSET, INDEX ARRAY, MULTIPLICADOR DE MATRICES, ATAN2, BUILD ARRAY y un subview que convierta valores de radianes a sexagesimales con el nombre rad_sex.vi. de cinemtica inversa con el nombre

18

Figura 18 Subview Cinemtica Inversa. Una vez creado el subview Cinemtica_Inversa lo incorporamos en el FRAME 1 tal y como se puede apreciar en la siguiente figura.

Figura 19 Actual Frame 1 del Stacked Sequence Structure. El trabajo realizado por este subview se puede apreciar con la comparacin de las variables articulares ingresadas y con el ARRAY Articulaciones q.

19

Figura 20 Ploteo del Robot Scara con Cinemtica Inversa. Ahora en LABVIEW crearemos un subview para graficar los Frame s de cada extremo del Robot Scara. CREACIN DEL SUBVIEW FRAMES La creacin de frames para cada extremo de nuestro Robot se har mediante la ubicacin de puntos a lo largo de cada eje del vector n o a para su respectivo MTH. Este MTH tiene que ser obligatoriamente con respecto al Frame Fijo, por condiciones de ploteo mencionados en casos anteriores. Entonces respecto al punto de color rojo M01, ubicamos un primer punto de color morado a lo largo del vector y1 a una distancia b, luego ubicamos un segundo punto en la misma direccin a una distancia 2b y finalmente ubicamos un tercer punto en la misma direccin a una distancia 3b. Las posiciones de los puntos de color morado con respecto al Frame Fijo se hallan seguidamente como:

Las posiciones halladas estn referenciadas al Frame Fijo asi que con estos puntos podemos plotear, y como dependen del MTH M01, cuando este vari tambin variaran las posiciones p1, p2 y p3, graficndose como si fuera un frame para la direccin y1.

20

Figura 21 Puntos a lo largo del vector unitario eje y1. Esto mismo podemos generalizarlo para ms punto y para cada uno de los ejes restantes (eje X y eje Z). SUBVIEW GENERACION DE PUNTOS Con las indicaciones anteriormente expuestas creamos un subview con el nombre generacin de puntos, que ingresndole un MTH (referenciado al Frame Fijo), el eje que deseamos plotear (eje x, eje y, eje z), la cantidad de puntos y el paso o la distancia entre punto y punto, nos retorne una matriz de tantos nx ny nz como puntos hallamos ingresado (Matrix de nx3). Para la creacin de este subview se utilizo las siguientes herramientas: FOR LOOP, CASE STRUCTURE, INSERT INTO ARRAY, MULTIPLICADOR DE MATRICES, ARRAY SUBSET y REPLACE ARRAY SUBSET.

Figura 22 Subview Generacin de Puntos.

21

SUBVIEW FRAMES Se crea un subview con el nombre frames al cual se le ingresa el MTH (referenciado al Frame Fijo), los ejes que se van a plotear (eje x, eje y, eje z), unos 10 puntos y un paso de 0.1, para retornarnos tres ARRAY 2D con tantos vectores n o a (nx ny nz ox oy oz ax ay az) como puntos se hayan ingresado. Finalmente obtendremos el ploteo de un frame muy similar al proporcionado por MATLAB (frame). Para la creacin de este subview se utilizo el subview anteriormente creado generacin de puntos.

Figura 23 Subview Frames. SUBVIEW FRAMES TOTALES Se crea un subview con el nombre frames totales al cual se los seis MTHs (referenciado al Frame Fijo), para retornarnos 1D nx, ny y nz, tres ARRAY 1D ox, oy y oz y otros 1D ax, ay y az. Finalmente obtendremos el ploteo de frames del Robot Scara. le ingresa tres ARRAY tres ARRAY todos los

Para la creacin de este subview se utilizo el subview anteriormente creado frames, BUILD ARRAY en modo concatnate inputs e INDEX ARRAY.

22

Figura 24 Subview Frames Totales. Finalmente incorporaremos este ltimo subview en el FRAME 1 del STACKED SEQUENCE STRUCTURE.

Figura 25 Actual Frame 1 del Stacked Sequence Structure.

23

Tambin en el FRAME 3 del STACKED SEQUENCE STRUCTURE agregamos NI_3DGRAPH.LVLIB: 3D CURVE.VI ms para el grafico de cada eje xyz.

tres

Figura 26 Actual Frame 3 del Stacked Sequence Structure. Y el ploteo de nuestro Robot Scara final se muestra:

Figura 26 Ploteo del Robot Scara con sus respectivos frames.

24