Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Departamento de Robótica
Resumen
Este archivo contiene la simulación del robot de 2gdl y del robot tipo scara de 3gdl, las simulaciones fueron realizadas en
simulink. Se muestra la cinemática directa y la cinemática inversa de cada uno de los robots y el diseño de los
controladores para cada uno.
1. Introducción
El conocer previamente el comportamiento de algún robot manipulador es un requisito en cualquier aplicación ya
que de esta manera se pueden predecir fallas que causarían la mala operación de dichos robots.
2. Objetivos
Realizar la simulación del comportamiento del robot de 2gdl y del robot manipulador tipo scara aplicando un
controlador cinemática de velocidad.
La cinemática directa se obtiene a partir de la posición del efector final conociendo la posición angular de las
articulaciones. Por consecuencia las ecuaciones quedan de la siguiente manera:
Teniendo ya la cinemática directa es un requisito conocer la cinemática inversa pues es necesaria para la
simulación, la cinemática inversa refiere al valor de las posiciones articulares de los eslabones conociendo
las posiciones en el plano del efector final.
1
)
∗cos (θ ) )
2 2
………………………………………………………………….(3)
2 2
2
± √ 1−D
θ2=tan −1 (D )
……………………………………………………………………………………...(4)
x 2+ y 2−L12−L22
D=
2∗L1∗L2
ẋ=−L1 θ̇1 sin ( θ 1 )−L2 ( θ̇1 + θ̇2 )sin (θ1 +θ2 )…………………………………………………………(5)
ẏ=L1 θ̇1 cos ( θ1 ) + L2 ( θ̇1 + θ̇2 )cos (θ 1+θ 2)…………………………………………………………..(6)
Ẋ = j θ̇……………………………………………………………………………………………………(7)
Donde:
Ẋ = ẋ
ẏ []
−L 1∗sen ( θ1 ) −L2∗sen (θ1 +θ2 ) −L2∗sen(θ1 +θ2 )
j=
[ L1∗cos ( θ1 ) + L 2∗cos(θ1 +θ2 ) L 2∗cos (θ1 +θ2 ) ]
θ̇1
θ̇=
[]
θ̇2
Conociendo lo anterior podemos proponer nuestro controlador que quedaría de la siguiente manera:
u= j−1 { X˙ d −K ( X− X d ) }……………………………………………………………………………….(8)
Donde:
X˙ d :Vector de las trayectorias deseadas en su primera derivada , K :Vector de ganancias , X :Vector de de posiciones x ,
θ̇=u………………………………………………………………………………………………………(9)
Para conocer el valor de las ganancias sustituimos 9 en 7 para obtener dinámica en lazo cerrado:
Ẋ = X˙ d −K ( X− X d )
Ẋ − X˙ d + K ( X− X d ) =0
ė + Ke=0
s+ K =0………………………………………………………………………………………………..(10)
En la ecuación 10 podemos ver claramente que para evitar la inestabilidad de nuestro sistema hay que
proponer ganancias mayores a 0, dicho de otra manera el vector de ganancias K debe de ser mayor a 0.
Para la realización de la simulación del robot de 2 grados de libertad se tomaron en cuenta los siguientes
parámetros:
L1=0.2 m
L2=0.15 m
δ x =δ y =0.2m
R=0.04 m
w=2
x d =δ x + Rcos (wt )
y d =δ y + Rsin ( wt)
Las funciones que se usaron en los bloques de matlab function son las siguientes:
Controlador.
--------------------------------------------------------------------------------------------------------------------------------
function con2gdl=c2gdl(w)
L1=0.2;
L2=0.15;
K=[30 30];
tet1=w(1);
tet2=w(2);
xd=w(3);
yd=w(4);
dxd=w(5);
dyd=w(6);
x=w(7);
y=w(8);
%JACOBIANO
%-------------------------------------------------------------------------
%-------------------------------------------------------------------------
j=[-L1*sin(tet1)-L2*sin(tet1+tet2) -L2*sin(tet1+tet2);...
L1*cos(tet1)+L2*cos(tet1+tet2) L2*cos(tet1+tet2)];
%-------------------------------------------------------------------------
%-------------------------------------------------------------------------
xdp=[dxd;dyd];
xdm=[xd;yd];
xrm=[x;y];
u=inv(j)*(xdp-K*(xrm-xdm));
con2gdl=u;
--------------------------------------------------------------------------------------------------------------------------------
Cinemática inversa.
--------------------------------------------------------------------------------------------------------------------------------
function sci=ci2gdl(w)
L1=0.2;
L2=0.15;
xd=w(1);
yd=w(2);
D=(xd^2+yd^2-L1^2-L2^2)/(2*L1*L2);
tet2=atan2(sqrt(1-(D^2)),D);
tet1=atan2(yd,xd)-atan2(L2*sin(tet2),L1+L2*cos(tet2));
sci=[tet1;tet2];
--------------------------------------------------------------------------------------------------------------------------------
La siguiente simulación es para el robot scara de 3 GDL (figura 5). Para realizar esta simulación se sigue
la misma metodología que el robot de 2 GDL.
Cinemática directa:
Cinemática inversa:
1
)
∗cos (θ ) )
2 2
………………………………………………………………...(14)
2 2
2
± √ 1−D
θ2=tan −1 (D )
…………………………………………………………………………………….(15)
x 2+ y 2−L12−L22
D=
2∗L1∗L2
ẋ=−L1 θ̇1 sin ( θ 1 )−L2 ( θ̇1 + θ̇2 )sin (θ1 +θ2 )……………………………………………………….(16)
ẏ=L1 θ̇1 cos ( θ1 ) + L2 ( θ̇1 + θ̇2 )cos (θ 1+θ 2)…………………………………………………………(17)
ż=d˙3 ……………………………………………………………………………………………………(18)
ẋ −L1 sin ( θ1 ) −L2 sin (θ1 +θ2 ) −L2 sin (θ1 +θ2 ) 0 θ̇1
[][
ẏ = L1 cos ( θ 1) + L2 cos (θ1 +θ2 )
ż 0 0 ][ ]
L2 cos (θ1 +θ2 ) 0 θ̇2
1 ḋ 3
El diseño del controlador es absolutamente el mismo que para el robot de 2GDL. Los parámetros utilizados para
esta simulación fueron los siguientes:
L1=0.2 m
L2=0.15 m
δ x =δ y =0.2m
δ z =−0.1 m
R=0.04 m
w=2
x d =δ x + Rcos (wt )
y d =δ y + Rsin ( wt)
z d =δ z−w t
En la figura 6 vemos el diagrama de bloques usado para esta simulación, la figura 7 muestra el comportamiento de
x,y y z respecto del tiempo y en la figura 8 comparamos la trayectoria real vs la trayectoria deseada.
Las funciones que se usaron en los bloques de matlab function para esta simulación son los siguientes:
Controlador.
--------------------------------------------------------------------------------------------------------------------------------
function consca=cscara(w)
L1=0.2;
L2=0.15;
K=[8 8 8];
tet1=w(1);
tet2=w(2);
xd=w(3);
yd=w(4);
dxd=w(5);
dyd=w(6);
x=w(7);
y=w(8);
zd=w(9);
dzd=w(10);
z=w(11);
%JACOBIANO
%-------------------------------------------------------------------------
%-------------------------------------------------------------------------
j=[-L1*sin(tet1)-L2*sin(tet1+tet2) -L2*sin(tet1+tet2) 0;...
L1*cos(tet1)+L2*cos(tet1+tet2) L2*cos(tet1+tet2) 0; 0 0 1];
%-------------------------------------------------------------------------
%-------------------------------------------------------------------------
xdp=[dxd;dyd;dzd];
xdm=[xd;yd;zd];
xrm=[x;y;z];
u=inv(j)*(xdp-K*(xrm-xdm));
consca=u;
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
Cinemática inversa.
--------------------------------------------------------------------------------------------------------------------------------
function cisca=ciscara(w)
L1=0.2;
L2=0.15;
xd=w(1);
yd=w(2);
D=(xd^2+yd^2-L1^2-L2^2)/(2*L1*L2);
tet2=atan2(sqrt(1-(D^2)),D);
tet1=atan2(yd,xd)-atan2(L2*sin(tet2),L1+L2*cos(tet2));
cisca=[tet1;tet2];
--------------------------------------------------------------------------------------------------------------------------------
5. Conclusiones generales
En conclusión podemos decir que el control cinemático de velocidad es una buena opción para controlar
manipuladores aunque no la mejor ya que como se pudo ver tiene ciertas fallas por milímetros, pero en realidad no
es algo muy significativo.