You are on page 1of 11

Universidad Nacional de San Agustn

Facultad de Ingeniera de Produccin y Servicios

Escuela Profesional de Ingeniera Electrnica

Curso: Robtica
Laboratorio N 4:
CINEMTICA INVERSA DE ROBOTS

Integrantes:
Butrn Llamoca, Juan Antonio

20113523

_______________

LABORATORIO 4: CINEMTICA INVERSA DE ROBOTS

I.Para el robot puma, obtenga la animacin para la trayectoria de su


efector final en un plano horizontal de:
a) Una circunferencia de radio 0.2
b) Un cuadrado de 0.4 de lado
c) Repetir los apartados a) y b) para el caso de la trayectoria descrita por el
efector final en un plano genrico 3D.
Definimos un script para poder realizar las tareas encomendadas
Para el crculo:
t=0:0.5:16.5;
w=6*pi/50;
puma560;
x=input('Ingrese coordenada x:
y=input('Ingrese coordenada y:
z=input('Ingrese coordenada z:
po=[x y z];
r=input('Ingrese el radio: ')
px=po(1)+r*sin(w*t);
py=po(2)+r*cos(w*t);
pz=po(3)*ones(1,length(t));
Tcar=[px' py' pz'];
id= eye(3);
for i=1:length(t)
Tc(:,:,i)=[id Tcar(i,:)';0
end
qc3=ikine(p560,Tc);
figure(1)
plot(px,py,'*')
figure(2)
plot(px,py,'*')
plot(p560,qc3,'loop')

')
')
')

0 0 1];

Ingresamos los datos segn los parmetros pedidos:


Lab4_infP1c
Ingrese coordenada x: 0.1
x=
0.1000
Ingrese coordenada y: 0.5
y=
0.5000
Ingrese coordenada z: 0.2
z=
0.2000
Ingrese el radio: 0.2
r=
0.2000

LABORATORIO 4: CINEMTICA INVERSA DE ROBOTS

Obtenemos la trayectoria en el plano horizontal:

En el plano 3-D:

LABORATORIO 4: CINEMTICA INVERSA DE ROBOTS

Visto desde otra posicin

Observamos que la trayectoria definida es ejecutada por el robot puma560.


Para el cuadrado tenemos el script:
clc
clear
puma560;
step=0.01;
x=input('Ingrese coordenada x: ')
y=input('Ingrese coordenada y: ')
z=input('Ingrese coordenada z: ')
lado=input('Ingrese tamao del lado: ')
px1=x:step:x+lado;
py1=ones(1,length(px1))*y;
px2=ones(1,length(px1))*(x+lado);
py2=y:step:y+lado;
px3=fliplr(px1);
py3=ones(1,length(px3))*(y+lado);
px4=ones(1,length(px1))*(x);
py4=fliplr(py2);
px=[px1 px2 px3 px4];
py=[py1 py2 py3 py4];
pz=z*ones(1,length(px));
Tcar=[px' py' pz'];
id= eye(3);
for i=1:length(px)
Tc(:,:,i)=[id Tcar(i,:)';0 0 0 1];
end
qc3=ikine(p560,Tc);
figure(1)
plot(px,py,'*')
figure(2)
plot(px,py,'*')
plot(p560,qc3,'loop')

LABORATORIO 4: CINEMTICA INVERSA DE ROBOTS


Ingrese coordenada
x =
0.1000
Ingrese coordenada
y =
0.3000
Ingrese coordenada
z =
0.2000
Ingrese tamao del
lado =
0.4000

x: 0.1
y: 0.3
z: 0.2
lado: 0.4

El resultado obtenemos:
Error using ikine (line 124)
Solution wouldn't converge
Error in Lab4_infP2 (line 29)
qc3=ikine(p560,Tc);

Vemos que con los datos ingresados el script nos arroja error, debido probablemente a
que hacemos referencia a un punto singular de nuestro robot.
Intentaremos hacer el cuadrado de lado de 0.3:
Ingrese coordenada
x =
0.1000
Ingrese coordenada
y =
0.3000
Ingrese coordenada
z =
0.2000
Ingrese tamao del
lado =
0.3000

x: 0.1
y: 0.3
z: 0.2
lado: 0.3

LABORATORIO 4: CINEMTICA INVERSA DE ROBOTS

Tenemos as en el plano horizontal

En el grfico 3-D

LABORATORIO 4: CINEMTICA INVERSA DE ROBOTS

Vindolo desde otra posicin:

En este caso la realizacin es posible debido a que al hacer un cuadrado de menos


extensin no llegamos al punto singular del robot, es decir un punto donde se alcanza
el lmite de alcance de nuestro robot.

LABORATORIO 4: CINEMTICA INVERSA DE ROBOTS

Para la mueca esfrica de 3 GDL mostrado en la Figura 2


a) Realizar los mismos pasos de acuerdo al apartado 3 o 2
Verificar la cinemtica inversa para algunos casos
De acuerdo a la figura, hacemos nuestra tabla D-H:
Link
1
2
3

-90
90
0

A
0
0
0

d
0
0
d3

90 + 1
90 + 2
90 + 3

P/R
0
0
0

Tabla 1: Parmetros de cinemtica directa del robot dado.


De acuerdo a la tabla definimos los eslabones del robot:
L1=link([-pi/2 0 0 0 0 -pi/2])
L2=link([pi/2 0 0 0 0 -pi/2])
L3=link([0 0 0 10 0 pi/2])
Asumimos para d3 = 10
L1 =
-1.570796
L2 =
1.570796
L3 =
0.000000

0.000000

0.000000

0.000000

(std)

0.000000

0.000000

0.000000

(std)

0.000000

0.000000

10.000000

(std)

Ahora definimos el robot:


r=robot({L1 L2 L3})
r.name='robot1'
r=
robot1 (3 axis, RRR)
grav = [0.00 0.00 9.81]
alpha
A
theta
-1.570796
0.000000
0.000000
1.570796
0.000000
0.000000
0.000000
0.000000
0.000000

standard D&H parameters


D
R/P
0.000000
R
(std)
0.000000
R
(std)
10.000000
R
(std)

LABORATORIO 4: CINEMTICA INVERSA DE ROBOTS


Ahora definimos algunos casos para analizar la cinemtica inversa:
T1=fkine(r,[0 pi/2 0])
T1cin=ikine(r,T1)
T2=fkine(r,[pi/2 0 0])
T2cin=ikine(r,T2)
T3=fkine(r,[0 0 pi/2])
T3cin=ikine(r,T3)

Obtenemos:
T1 =
1
0
0
0

0
0
0
1
0
0
0
1
10
0
0
1
For a manipulator with fewer than 6DOF a mask matrix argument should be
specified
T1cin =
-0.0000
1.5708
0.0000
T2 =
0.0000
-0.0000
-1.0000 -10.0000
1.0000
0.0000
0.0000
0.0000
0.0000
-1.0000
0.0000
0.0000
0
0
0
1.0000
For a manipulator with fewer than 6DOF a mask matrix argument should be
specified
T2cin =
1.5708
0.0000
-0.0000
T3 =
0.0000
-1.0000
0
0
0.0000
0.0000
1.0000
10.0000
-1.0000
-0.0000
0.0000
0.0000
0
0
0
1.0000
For a manipulator with fewer than 6DOF a mask matrix argument should be
specified
T3cin =
0.0000
0.0000
1.5708

Observamos que los parmetros de la cinemtica inversa coinciden con los ingresados en el
comando fkine.

LABORATORIO 4: CINEMTICA INVERSA DE ROBOTS


b) Indicar si existen posiciones singulares:
J1=jacob0(r,[0 pi/2 0])
J2=jacob0(r,[pi/2 0 0])
J3=jacob0(r,[pi/2 -pi/2 -pi/2])
J1 =
-0.0000
0
0
0
0
1.0000

0.0000
-10.0000
0
1.0000
0.0000
0.0000

0
0
0
0
0
1.0000

J2 =
-0.0000
-10.0000
0
0.0000
0.0000
1.0000

0.0000
-0.0000
10.0000
0
1.0000
0.0000

0
0
0
-1.0000
0.0000
0.0000

J3 =
-0.0000
-0.0000
0
0
0
1.0000

-10.0000
-0.0000
0.0000
0
1.0000
0.0000

0
0
0
-0.0000
0.0000
-1.0000

c) Indicar si existen posiciones singulares:


rank(J1(1:3,1:3))
det(J1(1:3,1:3))
rank(J2(1:3,1:3))
det(J2(1:3,1:3))
rank(J3(1:3,1:3))
det(J3(1:3,1:3))

Resultados:

10

LABORATORIO 4: CINEMTICA INVERSA DE ROBOTS

ans =
1
ans =
0
ans =
2
ans =
0
ans =
1
ans =
0
Obtenemos 0 en todas las determinantes, quiere decir que las posiciones elegidas son puntos
singulares (Se pierden grados de libertad)

Conclusiones:

Los comandos fkine e ikine nos ayudan a conseguir la cinemtica inversa y/o directa de
nuestro robot.
De esta manera podemos identificar los parmetros un movimiento conociendo su
posicin final.
La jacobiana es una representacin til del movimiento del reloj
Nos permite identificar las llamadas posiciones singulares.

11