Você está na página 1de 6

PRÁCTICA 1: INTRODUCCIÓN A MATLAB.

ANÁLISIS CINEMÁTICO DEL MANIPULADOR RR

1. Introducción a MatLab
MatLab es un lenguaje de programación interpretado en el que las variables son matrices y,
por tanto, las operaciones básicas aritméticas y lógicas son operaciones matriciales. Esto hace
que MatLab sea una herramienta muy adecuada para cálculo matricial y, en concreto, para simu-
lación de robots. Se utilizará la versión de MatLab situada en i:\elect\mtlb42\bin\matlab.exe.
A continuación se muestran algunos ejemplos de operaciones con MatLab:
Asignación 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 operación 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 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 último comando
extrae la primera columna.
Funciones y gráficas: las funciones también se manejan vectorialmente. Por ejemplo, para
generar y dibujar la función sin(t), podemos ejecutar:

t=0:0.01:2*pi;
y=sin(t);
plot(t,y)

1
La primera instrucción 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 función, y el tercero dibuja la gráfica de y en función de t. Los ”;”evitan
que el resultado de cada instrucción sea mostrado por pantalla (sólo útil en comandos que
produzcan resultados numéricos).

1.1. Problema Cinemático Directo


Como ya se ha indicado, MatLab es una herramienta apropiada para el análisis y simulación
de problemas robóticos. 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 varı́an uniformemente de 0 a π /2, habrı́a que ejecutar los siguientes comandos:
Y
(x,y) L1=1
L2=1
L2 θ2 th1=0:(pi/2)/20:pi/2
th2=0:(pi/2)/20:pi/2
px=L1*cos(th1)+L2*cos(th1+th2)
L1 J2 py=L1*sin(th1)+L2*sin(th1+th2)
plot(px,py)
J1
θ1
X

Las dos primeras instrucciones asignan a las longitudes L1 y L2 de los enlaces. Las dos si-
guientes instrucciones generan dos vectores, th1 y th2, que contienen todos los valores de los
ángulos θ1 y θ2 entre 0 y π /2, a intervalos regulares de π20
/2
, por lo que se han tomado un total de
21 puntos de la trayectoria. Posteriormente, se ha hecho uso de las ecuaciones cinemáticas 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 función del vector de
valores de la variable independiente px.
Las instrucciones anteriores pueden ser incluidas en un fichero de texto con extensión .m, por
ejemplo, practica1.m, y ejecutadas en la lı́nea de comando de MatLab con el comando practica1
(sin extensión). Las distintas partes de la práctica pueden separarse mediante comandos pause
que detienen la ejecución (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 información sobre los comandos y funciones básicas de MatLab existe un manual .on
line.accesible 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 función que las contenga. Ası́, podemos escribir una función que resuelva de forma genérica
el problema cinemático 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 función seguido de los argu-
mentos (entre paréntesis). La variable p contiene en la primera fila la secuencia de coordenadas
X, y en la segunda las Y. La función debe escribirse en un fichero de texto separado cuyo nombre
debe ser el de la función seguido de la extensión .m (pcd.m, en este caso).
Haciendo uso de la función 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 función de la primera.

1.3. Gráfica de la configuración espacial del robot


En los ejemplos anteriores se ha dibujado exclusivamente la trayectoria descrita por el EF, pero
no el robot. Dada una configuración espacial (por ejemplo, θ1 = 300 θ2 = 600 ), puede obtenerse un
gráfico 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 función que dibuja el robot en pantalla. Para desarrollar esta función, 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 último punto y la posición del EF p = (px , py ).
Para trazar el robot, bastará 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 implementación de la función 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áfica.
En la figura 1 puede observarse el aspecto del robot resultante (remarcado en negrita). En este
caso, la función no retorna ningún valor (sólo traza el robot).

3
1.4. Trazado de la trayectoria
En este apartado, se desarrollará un programa .m que simule el movimiento del robot y trace
la trayectoria correspondiente del EF cuando las variables de articulación θ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-
ción 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 posición actual y la trayectoria desarrollada hasta
ese momento (a modo de rastro”). Para dibujar la trayectoria pueden ir acumulándose en una
matriz de dos filas los puntos ya recorridos de la trayectoria:
µ ¶
px (1) px (2) · · · px (n)
pxy =
py (1) py (2) · · · py (n)

En cada punto de la trayectoria hay que actualizar esta matriz, añadiéndole una nueva co-
lumna con el nuevo punto de la trayectoria. Esto puede hacerse con una instrucción 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 realización, 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). Además, para simular el
movimiento pueden usarse los comandos pause (detiene la ejecución hasta que se pulsa una
tecla), clf (borra el contenido de un gráfico sin eliminar la ventana correspondiente), y hold on
y hold off, que permiten añadir una curva en un gráfico ya creado anteriormente (esto permite
superponer la gráfica de la trayectoria a la del robot). Al final de la trayectoria, la ventana de
simulación deberı́a presentar el gráfico indicado en la figura 1.
Para hacer una simulación más realista, puede proporcionarse al comando pause un argu-
mento T . De esta forma, la ejecución continua automáticamente tras un retardo de T segundos.
Si se desprecia el tiempo de ejecución 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 Cinemático Inverso


Normalmente las trayectorias se expresan en coordenadas cartesianas que deben ser tradu-
cidas a variables de articulación. Esto es lo que se conoce como problema cinemático inverso.

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

x2 + y2 − L12 − L22
cos θ2 =
2L1 L2
y(L1 + L2 cos θ2 ) − xL2 sin θ2
tan θ1 = (1)
x(L1 + L2 cos θ2 ) + yL2 sin θ2

Por ejemplo, una trayectoria rectilı́nea entre dos puntos cualesquiera (x1 , y1 ) y (x2 , y2 ) puede
expresarse en forma paramétrica mediante:
x2 − x1 y2 − y1
x = x1 + n y = y1 + n
N N
donde n = 0, 1, . . . , N. El parámetro n representa el número 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 rectilı́neo entre dos puntos cualesquiera.
Para ello, se utilizará la función robot de los apartados anteriores y se construirá una nueva
función 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 probarán las siguientes trayectorias:

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

2. (x1 , y1 ) = (1, 1), (x2 , y2 ) = (−1, 0). Diagnosticar los posibles problemas de continuidad y corre-
gir la función pci para solventarlos. Para ello, debe tenerse en cuenta que la función atan no
determina correctamente el cuadrante del ángulo solución, por lo que debe sustituirse por
la función atan2.

3. (x1 , y1 ) = (1, 0), (x2 , y2 ) = (−1, 0). Diagnosticar los posibles problemas de continuidad y co-
rregir la función pci para solventarlos. Para ello, debe tenerse en cuenta que la función acos
tiene, en realidad, dos soluciones para θ2 : el ángulo positivo que devuelve MatLab, y el

5
mismo valor, pero negativo. Para escoger una solución u otra, puede tomarse el siguiente
criterio: dado que θ1 se obtiene a partir de θ2 , es lógico seleccionar la solución 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 dibujarán las funciones temporales de las variables de articulación θ1 = θ1 (t) y


θ2 = θ2 (t) (t = 0, T, 2T, . . . , NT ) para las tres trayectorias anteriores. Comentar las curvas resultan-
tes.

Você também pode gostar