Está en la página 1de 6

´

´

PR ACTICA 1: INTRODUCCI ON A MATLAB.

´

´

AN ALISIS CINEM ATICO 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´se muestran algunos ejemplos de operaciones con MatLab: de valores a vectores y matrices: A=[1 2

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

Productos matriciales y escalares:en blanco como separador y el punto y coma para las filas. y=A*x z=x’*y w=x.*y El

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:componentes las componentes correspondientes de x e y . A(3,3) A(2:3,1:3) A(2:3,:) A(:,1) La primera l´ınea

A(3,3)

A(2:3,1:3)

A(2:3,:)

A(:,1)

La primera l´ınea extrae el elemento de matriz (3,3). Las l´ıneas segunda y tercera obtienen una submatriz que incluye las dos primeras filas (todas las columnas). El ultimo´ comando extrae la primera columna.

se manejan vectorialmente. Por ejemplo, para

generar y dibujar la funcion´

Funciones y graficas:´Por ejemplo, para generar y dibujar la funcion´ las funciones tambien´ sin ( t ) ,

las funciones tambien´

sin(t), podemos ejecutar:

t=0:0.01:2*pi;

y=sin(t);

plot(t,y)

1

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 grafica´ 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 analisis´ 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 L 1 = L 2 = 1) cuando las dos variables rotacionales 1 y 2 var´ıan uniformemente de 0 a /2, habr´ıa que ejecutar los siguientes comandos:

Y (x,y) L 2 2 L 1 J 2 J 1 1 X
Y
(x,y)
L
2
2
L 1
J 2
J 1
1
X

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 L 1 y L 2 de los enlaces. Las dos si- guientes instrucciones generan dos vectores, th1 y th2, que contienen todos los valores de los

angulos´ 1 y 2 entre 0 y /2, a intervalos regulares de /2 , por lo que se han tomado un total de

20

21 puntos de la trayectoria. Posteriormente, se ha hecho uso de las ecuaciones cinematicas´ 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 fichero de texto con extension´ .m, por ejemplo, practica1.m, y ejecutadas en la l´ınea 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 significado que sus correspondientes en MS-DOS. Para obtener informacion´ sobre los comandos y funciones basicas´ de MatLab existe un manual . o n line. a ccesible con el comando help.

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)

2

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 la extension´

.m (pcd.m, en este caso).

seguido de los argu-

La variable p contiene en la primera fila la secuencia de coordenadas

debe escribirse en un fichero de texto separado cuyo nombre

mentos (entre parentesis).´

X, y en la segunda las Y. La funcion´

debe ser el de la funcion´

Haciendo uso de la funcion´

anterior, la trayectoria anterior se trazar´ıa mediante:

p=pcd(L1,L2,th1,th2);

plot(p(1,:),p(2,:))

En este caso, el comando plot dibuja la segunda fila de la matriz p en funcion´

de la primera.

1.3. Grafica´

de la configuracion´

espacial del robot

En los ejemplos anteriores se ha dibujado exclusivamente la trayectoria descrita por el EF, pero no el robot. Dada una configuracion´ espacial (por ejemplo, 1 = 30 0 2 = 60 0 ), puede obtenerse un

grafico´

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 = (p x , p y ). Para trazar el robot, bastara´ con realizar un plot en el que las variables independiente y depen- diente 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 grafica.´

En la figura 1 puede observarse el aspecto del robot resultante (remarcado en negrita). En este

caso, la funcion´

no retorna ningun´

valor (solo´

traza el robot).

3

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 articulacion´ 1 y 2 var´ıan unifor- 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

clf

end

(n<Npuntos)

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 acumulandose´ en una matriz de dos filas los puntos ya recorridos de la trayectoria:

p xy = p x (1) p y (1)

p x (2) p y (2)

···

···

p x (n) p y (n)

p x ( n ) p y ( n )

En cada punto de la trayectoria hay que actualizar esta matriz, anadi˜ endole´ una nueva co- lumna con el nuevo punto de la trayectoria. Esto puede hacerse con una instruccion´ del tipo pxy=[pxy pact];, donde pxy contiene los puntos ya recorridos, y pact el punto actual. La varia- ble pxy debe iniciarse como matriz vac´ıa (pxy=[];). Para su realizacion,´ debe tenerse en cuenta que MatLab tiene disponibles instrucciones de control de flujo 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 grafico´ sin eliminar la ventana correspondiente), y hold on y hold off, que permiten anadir˜ una curva en un grafico´ ya creado anteriormente (esto permite superponer la grafica´ de la trayectoria a la del robot). Al final de la trayectoria, la ventana de simulacion´ deber´ıa presentar el grafico´ indicado en la figura 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 ser´ıa 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-

inverso.

cidas a variables de articulacion.´

Esto es lo que se conoce como problema cinematico´

4

2 1 ROBOT RR 0 -1 -2 -2 -1 0 1 2 Figura 1: Robot
2
1
ROBOT RR
0
-1
-2
-2
-1
0 1
2
Figura 1: Robot y trayectoria seguida.

Las ecuaciones correspondiente para el robot RR son:

cos 2 = x 2 +y 2 L 2 L 2L 1 L 2 tan 1 = y(L 1 +L 2 cos 2 ) xL 2 sin 2 x(L 1 +L 2 cos 2 ) + yL 2 sin 2

Por ejemplo, una trayectoria rectil´ınea entre dos puntos cualesquiera (x 1 ,y 1 ) y (x 2 ,y 2 ) puede

(1)

2

2

1

expresarse en forma parametrica´

mediante:

x = x 1 + x 2 x 1 n

N

y = y 1 + y 2 y N 1

n

, 1 puntos. Equivalentemente, podemos decir que tenemos una trayectoria que va pasando por

, Escribir un programa que simule el movimiento del robot y dibuje la trayectoria (similar al realizado en el apartado anterior) para un movimiento rectil´ıneo entre dos puntos cualesquiera. Para ello, se utilizara´ la funcion´ robot de los apartados anteriores y se construira´ una nueva 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:

dichos puntos en los instantes t = 0, T, 2T,

donde n = 0, 1,

n representa el numero´ de punto en una trayectoria de N +

N. El parametro´

NT , siendo T el periodo de muestreo.

1.

2. (x 1 ,y 1 ) = (1,1), (x 2 ,y 2 ) = (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.

3. (x 1 ,y 1 ) = (1,0), (x 2 ,y 2 ) = (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

(x 1 ,y 1 ) = (2,0), (x 2 ,y 2 ) = (0,2).

5

mismo valor, pero negativo. Para escoger una solucion´ criterio: dado que 1 se obtiene a partir de 2 , es logico´

que hace que el incremento en 1 desde el punto anterior de la trayectoria al actual sea el menor posible.

u otra, puede tomarse el siguiente

de acos( 2 )

seleccionar la solucion´

Finalmente, se dibujaran´

,

= 1 (t) y

NT ) para las tres trayectorias anteriores. Comentar las curvas resultan-

las funciones temporales de las variables de articulacion´

1

2 = 2 (t) (t = 0, T, 2T, tes.

6