You are on page 1of 6

ROBTICA

Introduccin a MatLab

MatLab es un lenguaje de programacin interpretado en el que las variables son matrices y, por
tanto, las operaciones bsicas aritmticas y lgicas son operaciones matriciales. Esto hace que
MatLab sea una herramienta muy adecuada para clculo matricial y, en concreto, para simulacin
de robots.

A continuacin se muestran algunos ejemplos de operaciones con MatLab:

Asignacin 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:

y=A*x
z=x*y
w=x.*y

El primer producto representa la operacin 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(0,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 filas (todas las
columnas).
El ltimo comando extrae la primera columna.

Funciones y grficas: las funciones tambin se manejan vectorialmente. Por ejemplo, para
generar y dibujar la funcin sin(t), podemos ejecutar:

t=[0:0.01:2]*pi;
y=sin(t);
plot(t,y)
La primera instruccin genera un vector con los valores de la variable independiente t desde 0
a con incrementos de 0.01. El segundo comando genera el vector correspondiente con los
valores de la funcin, y el tercero dibuja la grfica de y en funcin de t. Los ";" evitan que el
resultado de cada instruccin sea mostrado por pantalla (slo til en comandos que produzcan
resultados numricos).

Problema Cinemtico Directo

Como ya se ha indicado, Matlab es una herramienta apropiada para el anlisis y simulacin de


problemas robticos. Por ejemplo, para dibujar 21 puntos de la trayectoria que recorre el ET de un
manipulador RIR (con enlaces de longitud L1=L2=1) cuando las dos variables

rotacionales q1yq2varan uniformemente de 0 a , habra que ejecutar los siguientes comandos:

Ll=l;
L2=1;
thl=0:(pi/2)/20:pi/2;
th2=0:(pi/2)/20:pi/2;
px=Ll*cos(thl)+L2*cos(thl+th2)
py=Ll*sin(thl)+L2*sin(thl+th2)
plot(pX'PY)

Las dos primeras instrucciones asignan a las longitudes de los enlaces Ll=l y L2=1. Las dos siguientes
instrucciones generan dos vectores, th1 y th2, que contienen todos los valores de los ngulos

entre q1 y q2 que varan uniformemente de 0 a a intervalos regulares de por lo que se han


tomado un total de 21 puntos de la trayectoria.

Posteriormente, se ha hecho uso de las ecuaciones cinemticas 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 funcin del vector de valores de la variable
independiente py.

Las instrucciones anteriores pueden ser incluidas en un fichero de texto con extensin *.m por
ejemplo, practica2.m, y ejecutadas en la lnea de comando de MatLab con el comando practica2
(sin extensin). Las distintas partes de la prctica pueden separarse mediante comandos pause
que detienen la ejecucin (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 informacin sobre los comandos y funciones bsicas de Matlab existe un manual "on line"
accesible con el comando help.
Uso de funciones:

Cuando se va a hacer uso repetido de un conjunto de instrucciones, es conveniente


escribir una funcin que las contenga. As, podemos escribir una funcin que resuelva de
forma genrica el problema cinemtico directo de un robot RR de la siguiente manera:

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

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

donde p es la variable que se retorna, y pcd es el nombre de la funcin seguido de los argumentos
(entre parntesis). La variable p contiene en la primera fila la secuencia de coordenadas X, y en la
segunda las Y. La funcin debe escribirse en un fichero de texto separado cuyo nombre debe ser el
de la funcin seguido de la extensin .m (pcd.m en este caso).

Haciendo uso de la funcin 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 fila de la matriz p en funcin de la primera.

Grfica de la configuracin espacial del robot

En los ejemplos anteriores se ha dibujado exclusivamente la trayectoria descrita por el ET, pero
no el robot. Dada una configuracin espacial (por ejemplo, L1=300 y L2 = 600), puede obtenerse un
grfico del robot RR mediante:

thl=30*Pi/180;
th2=60*pi/180;
th=[th1 th2];
p=pcd(L1,L2,thl,th2);
robot(L1,th1,p);

donde robot es la funcin que dibuja el robot en pantalla. Para desarrollar esta funcin, debe
tenerse en cuenta que el robot se compone de dos segmentos lineales: el primero entre los
puntos (0,0) y (cosq1, sinq1), y el segundo entre este ltimo punto y la posicin del ET p = (px, py).
Para trazar el robot, bastar con realizar un plot en el que la variable independiente y dependiente
son dos vectores conteniendo las coordenadas X e Y, respectivamente, de los tres puntos
mencionados. Una posible implementacin de la funcin es la siguiente:
function robot(L1,th1,p)

x=[0 L1*cos(th1) p(l)];


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

Trazado de la trayectoria:

En este apartado, se desarrollar un programa.m que simule el movimiento del robot y trace la
trayectoria correspondiente del ET cuando las variables de articulacin q 1y q2,varan

uniformemente entre 0 y . Para ello, debe calcularse el robot y la posicion del ET en una serie de
puntos. Esto puede hacerse con un programa basado en un bucle for, conteniendo la
representacin desarrollada en el apartado anterior, con la siguiente estructura:

Npuntos=10;

for n=0 : Npuntos


thl=(Pi/2)*n/Npuntos;
th2=(p/2)*n/Npuntos;

... (a completar)

pause
clf
end

En cada punto debe dibujarse el robot en la posicin actual y la trayectoria desarrollada hasta
ese momento (a modo de "rastro"). Para dibujar la trayectoria pueden ir acumulndose en una
matriz de dos filas los puntos ya recorridos de la trayectoria:

En cada punto de la trayectoria hay que actualizar esta matriz, aadindole una nueva columna
con el nuevo punto de la trayectoria. Esto puede hacerse con una instruccin del tipo pxy=[pxy
pact];donde pxy contiene los puntos ya recorridos, y pact el punto actual.

Para su realizacin, 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). Adems, para simular el
movimiento pueden usarse los comandos pause (detiene la ejecucin hasta que se pulsa una
tecla), cif (borra el contenido de un grfico sin eliminar la ventana correspondiente), y hold on y
hold off, que permiten aadir una curva en un grfico ya creado anteriormente (esto permite
superponer la grfica de la trayectoria a la del robot). Al final de la trayectoria, la ventana de
simulacin debera presentar el grfico indicado en la figura 1

Problema Cinemtico Inverso

Normalmente las trayectorias se expresan en coordenadas cartesianas que deben ser traducidas
a variables de articulacin. Esto es lo que se conoce como problema cinemtico inverso. Las
ecuaciones correspondiente para el robot RR son:

(1)

Por ejemplo, una trayectoria rectilnea entre dos puntos cualesquiera (x1, y1) y (x2, y2) tiene la
siguiente expresin:

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.
Para ello, se utilizar la funcin robot de los apartados anteriores y se construir una nueva
funcin pcique 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 [o, ] y [- , ],
respectivamente.

Con este programa se probarn las siguientes trayectorias:

o (x1, y1)=(2, 0), (x2, y2)=(0, 2).


o (x1, y1)=(1, 1), (x2, y2)=(-1, 0). Diagnosticar los posibles problemas de continuidad y
corregir la funcin pci para solventarlos. Para ello, debe tenerse en cuenta que la
funcin atan no determina correctamente el cuadrante del ngulo solucin, por lo
que debe sustituirse por la funcin atan2.

o (x1, y1)=(1, 0), (x2, y2)=(-1, 0). Diagnosticar los posibles problemas de continuidad y
corregir la funcin pci para solventarlos. Para ello, debe tenerse en cuenta que la
funcin acos tiene, en realidad, dos soluciones para q2: el ngulo positivo que
devuelve MatLab, y el mismo valor, pero negativo. Para escoger una solucin u
otra, puede tomarse el siguiente criterio: dado que q1 se obtiene a partir de q2, es
lgico seleccionar la solucin de acos(q2) que hace que el incremento en q1 desde
el punto anterior de la trayectoria al actual sea el menor posible.

Finalmente, se dibujarn las funciones temporales de las variables de


articulacin q1 =q1(n) y q2=q2(n), donde n representa el instante de muestreo temporal.

You might also like