Está en la página 1de 6

PRACTICA 1: INTRODUCCION A MATLAB.

ANALISIS CINEMATICO DEL MANIPULADOR RR

1. Introduccion a MatLab
MatLab es un lenguaje de programacion interpretado en el que las variables son matrices y, por tanto, las operaciones basicas aritmeticas y logicas son operaciones matriciales. Esto hace que MatLab sea una herramienta muy adecuada para calculo matricial y, en concreto, para simu lacion de robots. Se utilizara la version de MatLab situada en i:\elect\mtlb42\bin\matlab.exe. A continuacion se muestran algunos ejemplos de operaciones con MatLab: Asignacion de valores a vectores y matrices:
A=[1 2 3; 4 3 2; 3 2 1] x=[2; 1; 3]

Para las columnas se utiliza el espacio en blanco como separador y el punto y coma para las las. Productos matriciales y escalares:
y=A*x z=x*y w=x.*y

El primer producto representa la operacion de transformar el vector x con la matriz A. El segundo es el producto escalar de x por y, donde x representa el vector x traspuesto. El tercer producto tiene como resultado un vector w en el que cada componente se obtiene multiplicando las componentes las componentes correspondientes de x e y. Pueden extraerse submatrices o elementos de una matriz:
A(3,3) A(2:3,1:3) A(2:3,:) A(:,1)

La primera lnea extrae el elemento de matriz (3,3). Las lneas segunda y tercera obtienen una submatriz que incluye las dos primeras las (todas las columnas). El ultimo comando extrae la primera columna. Funciones y gracas: las funciones tambien se manejan vectorialmente. Por ejemplo, para generar y dibujar la funcion sin(t), podemos ejecutar:
t=0:0.01:2*pi; y=sin(t); plot(t,y)

La primera instruccion genera un vector con los valores de la variable independiente t desde 0 a 2 con incrementos de 0,01. El segundo comando genera el vector correspondiente con los valores de la funcion, y el tercero dibuja la graca de y en funcion de t. Los ;evitan que el resultado de cada instruccion sea mostrado por pantalla (solo util en comandos que produzcan resultados numericos).

1.1. Problema Cinematico Directo


Como ya se ha indicado, MatLab es una herramienta apropiada para el an alisis y simulacion de problemas roboticos. Por ejemplo, para dibujar 21 puntos de la trayectoria que recorre el EF de un manipulador RR (con enlaces de longitud L1 = L2 = 1) cuando las dos variables rotacionales 1 y 2 varan uniformemente de 0 a /2, habra que ejecutar los siguientes comandos:
Y
(x,y)

L2

L1 J1 1

J2

L1=1 L2=1 th1=0:(pi/2)/20:pi/2 th2=0:(pi/2)/20:pi/2 px=L1*cos(th1)+L2*cos(th1+th2) py=L1*sin(th1)+L2*sin(th1+th2) plot(px,py)

Las dos primeras instrucciones asignan a las longitudes L1 y L2 de los enlaces. Las dos siguientes instrucciones generan dos vectores, th1 y th2, que contienen todos los valores de los /2 angulos 1 y 2 entre 0 y /2, a intervalos regulares de 20 , por lo que se han tomado un total de 21 puntos de la trayectoria. Posteriormente, se ha hecho uso de las ecuaciones cinem aticas del manipulador para obtener las 21 posiciones cartesianas (x, y) consecutivas. Las variables px y py son dos vectores que contienen los 21 valores de las coordenandas X e Y , respectivamente. El comando plot dibuja el vector de valores de la variable dependiente py en funcion del vector de valores de la variable independiente px. Las instrucciones anteriores pueden ser incluidas en un chero de texto con extensi .m, por on ejemplo, practica1.m, y ejecutadas en la lnea de comando de MatLab con el comando practica1 (sin extension). Las distintas partes de la practica pueden separarse mediante comandos pause que detienen la ejecucion (hasta que se pulse una tecla). MatLab incorpora comandos operativos como dir, cd y path, que tienen el mismo signicado que sus correspondientes en MS-DOS. Para obtener informacion sobre los comandos y funciones basicas de MatLab existe un manual .on accesible con el comando help. line.

1.2. Uso de funciones


Cuando se va a hacer uso repetido de un conjunto de instrucciones, es conveniente escribir una funcion que las contenga. As, podemos escribir una funcion que resuelva de forma generica el problema cinematico directo de un robot RR de la siguiente manera:
function p=pcd(L1,L2,th1,th2)

px=L1*cos(th1)+L2*cos(th1+th2); py=L1*sin(th1)+L2*sin(th1+th2); p=[px; py];

donde p es la variable que se retorna, y pcd es el nombre de la funcion seguido de los argu mentos (entre parentesis). La variable p contiene en la primera la la secuencia de coordenadas X, y en la segunda las Y. La funcion debe escribirse en un chero de texto separado cuyo nombre debe ser el de la funcion seguido de la extension .m (pcd.m, en este caso). Haciendo uso de la funcion anterior, la trayectoria anterior se trazara mediante:
p=pcd(L1,L2,th1,th2); plot(p(1,:),p(2,:))

En este caso, el comando plot dibuja la segunda la de la matriz p en funcion de la primera.

1.3. Graca de la conguracion espacial del robot


En los ejemplos anteriores se ha dibujado exclusivamente la trayectoria descrita por el EF, pero no el robot. Dada una conguracion espacial (por ejemplo, 1 = 300 2 = 600 ), puede obtenerse un graco del robot RR mediante:
th1=30*pi/180; th2=60*pi/180; p=pcd(L1,L2,th1,th2); robot(L1,th1,p);

donde robot es la funcion que dibuja el robot en pantalla. Para desarrollar esta funcion, debe tenerse en cuenta que el robot se compone de dos segmentos lineales: el primero entre los pun tos (0, 0) y (cos 1 , sin 1 ), y el segundo entre este ultimo punto y la posicion del EF p = (px , py ). Para trazar el robot, bastara con realizar un plot en el que las variables independiente y dependiente son dos vectores conteniendo las coordenadas X e Y, respectivamente, de los tres puntos mencionados. Una posible implementacion de la funcion es la siguiente:
function robot(L1,th1,p) x=[0 L1*cos(th1) p(1)]; y=[0 L1*sin(th1) p(2)]; plot(x,y) axis([-2 2 -2 2]);

El comando axis asegura que en sucesivos plots se conservan los rangos X e Y de la gr aca. En la gura 1 puede observarse el aspecto del robot resultante (remarcado en negrita). En este caso, la funcion no retorna ningun valor (solo traza el robot).

1.4. Trazado de la trayectoria


En este apartado, se desarrollara un programa .m que simule el movimiento del robot y trace la trayectoria correspondiente del EF cuando las variables de articulaci 1 y 2 varan uniforon memente entre 0 y /2. Para ello, debe calcularse el robot y la posicion del EF en una serie de puntos. Esto puede hacerse con un programa basado en un bucle for, conteniendo la representa cion desarrollada en el apartado anterior, con la siguiente estructura:
Npuntos=10; for n=0:Npuntos th1=(pi/2)*n/Npuntos; th2=(pi/2)*n/Npuntos; ... (a completar) pause if (n<Npuntos) clf end end

En cada punto debe dibujarse el robot en la posicion actual y la trayectoria desarrollada hasta ese momento (a modo de rastro). Para dibujar la trayectoria pueden ir acumul andose en una matriz de dos las los puntos ya recorridos de la trayectoria: pxy = px (1) px (2) px (n) py (1) py (2) py (n)

En cada punto de la trayectoria hay que actualizar esta matriz, anadiendole una nueva columna con el nuevo punto de la trayectoria. Esto puede hacerse con una instrucci del tipo on pxy=[pxy pact];, donde pxy contiene los puntos ya recorridos, y pact el punto actual. La variable pxy debe iniciarse como matriz vaca (pxy=[];). Para su realizacion, debe tenerse en cuenta que MatLab tiene disponibles instrucciones de control de ujo similares a las del lenguaje C (if-else-end y while-end). Ademas, para simular el movimiento pueden usarse los comandos pause (detiene la ejecucion hasta que se pulsa una tecla), clf (borra el contenido de un graco sin eliminar la ventana correspondiente), y hold on y hold off, que permiten anadir una curva en un graco ya creado anteriormente (esto permite superponer la graca de la trayectoria a la del robot). Al nal de la trayectoria, la ventana de simulacion debera presentar el graco indicado en la gura 1. Para hacer una simulacion mas realista, puede proporcionarse al comando pause un argu mento T . De esta forma, la ejecucion continua automaticamente tras un retardo de T segundos. Si se desprecia el tiempo de ejecucion de los comandos, T sera el tiempo requerido por el robot para desplazarse de un punto a otro. Se denomina periodo de muestreo.

2. Problema Cinematico Inverso


Normalmente las trayectorias se expresan en coordenadas cartesianas que deben ser tradu cidas a variables de articulacion. Esto es lo que se conoce como problema cinematico inverso.

ROBOT RR
0

-1

-2

-2

-1

Figura 1: Robot y trayectoria seguida. Las ecuaciones correspondiente para el robot RR son:
2 2 x2 + y2 L1 L2 2L1 L2 y(L1 + L2 cos 2 ) xL2 sin 2 tan 1 = x(L1 + L2 cos 2 ) + yL2 sin 2

cos 2 =

(1)

Por ejemplo, una trayectoria rectilnea entre dos puntos cualesquiera (x1 , y1 ) y (x2 , y2 ) puede expresarse en forma parametrica mediante: x = x1 + x2 x1 n N y = y1 + y2 y1 n N

donde n = 0, 1, . . . , N. El parametro n representa el numero de punto en una trayectoria de N + 1 puntos. Equivalentemente, podemos decir que tenemos una trayectoria que va pasando por dichos puntos en los instantes t = 0, T, 2T, . . . , NT , siendo T el periodo de muestreo. Escribir un programa que simule el movimiento del robot y dibuje la trayectoria (similar al realizado en el apartado anterior) para un movimiento rectilneo entre dos puntos cualesquiera. la funcion robot de los apartados anteriores y se construira una nueva Para ello, se utilizara funcion pci que implemente las ecuaciones (1). Debe tenerse en cuenta que las funciones acos (arco coseno) y atan (arco tangente) de MatLab toman valores en los intervalos [0, ] y [ /2, /2], respectivamente. Con este programa se probaran las siguientes trayectorias: 1. 2. (x1 , y1 ) = (2, 0), (x2 , y2 ) = (0, 2). (x1 , y1 ) = (1, 1), (x2 , y2 ) = (1, 0). Diagnosticar los posibles problemas de continuidad y corre gir la funcion pci para solventarlos. Para ello, debe tenerse en cuenta que la funcion atan no determina correctamente el cuadrante del angulo solucion, por lo que debe sustituirse por la funcion atan2. (x1 , y1 ) = (1, 0), (x2 , y2 ) = (1, 0). Diagnosticar los posibles problemas de continuidad y co rregir la funcion pci para solventarlos. Para ello, debe tenerse en cuenta que la funcion acos tiene, en realidad, dos soluciones para 2 : el angulo positivo que devuelve MatLab, y el 5

3.

mismo valor, pero negativo. Para escoger una solucion u otra, puede tomarse el siguiente criterio: dado que 1 se obtiene a partir de 2 , es logico seleccionar la solucion de acos(2 ) que hace que el incremento en 1 desde el punto anterior de la trayectoria al actual sea el menor posible. Finalmente, se dibujaran las funciones temporales de las variables de articulacion 1 = 1 (t) y 2 = 2 (t) (t = 0, T, 2T, . . . , NT ) para las tres trayectorias anteriores. Comentar las curvas resultantes.

También podría gustarte