Documentos de Académico
Documentos de Profesional
Documentos de Cultura
L DE ROBTICA
TEMA:
BRAZO ROBTICO 2 GDL
PROFESOR:
MSc. Ing. Ricardo Rodrguez Bustinza
ALUMNOS:
Las mquinas conocidas como robots son importantes en la vida del hombre y tienen la
finalidad de ayudar en diferentes actividades como trabajos repetitivos, manejo de
materiales peligrosos y actividades que superan las capacidades naturales del ser
humano. A fin de dar una solucin a estas actividades el ser humano disea y construye
dispositivos para estas tareas, adems busca mejorar su desempeo con la aplicacin de
tecnologa de vanguardia (visin artificial y respuesta inmediata). Se estudia la
morfologa y caractersticas para entender cules son las diferentes partes de que consta
un robot as como las consideraciones que se deben de tomar en cuenta en el modelo
mecnico considerando la cinemtica de todas las piezas mviles que lo componen, el
modelo dinmico del robot es quiz la parte ms compleja de este modelo, como el
lector se dar cuenta cuando se estudie con ms profundad este tema, el modelo
matemtico y la cantidad de recurso informtico que se requiere para resolver este
problema guiara el mtodo ms apropiado para su implementacin. Hasta este punto la
maquina no interacta con el medio y solo dndole caractersticas humanas como lo son
la visin y audicin los robots siguen siendo meras maquinas destinadas a ejecutar
tareas repetitivas en aplicaciones como las celdas de manufactura industrial.
Los robots son entidades mecnicas fsicas o virtuales que por apariencia y movimientos
parecen tener vida, pues suelen parecerse a entidades biolgicas y realizan actividades
que parecen guiadas por algn tipo de inteligencia. Si bien muchos mecanismos son
llamados robots, La Robtica identifica como robot a un mecanismo dotado de
movimiento que es capaz de interactuar dinmicamente y en tiempo real con su entorno
para desarrollar una variedad de tareas que le son encargadas mediante enseanza o
programacin. Es el objetivo del presente trabajo el diseo de un robot de 2 grados de
libertad segn los lineamientos de La Robtica.
ROBTICA Pgina 1
UNIVERSIDAD NACIONAL DEL CALLAO
CINEMTICA DIRECTA:
El brazo robtico de 2GDL que modelaremos estar formado por 2 eslabones rectos y
2articulaciones de tipo revoluta. Comenzando desde el eslabn unido al origen y
continuando la cadena cinemtica la longitud de los eslabones ser: 3 y 1,
respectivamente.
Theta: Sera el ngulo que tenemos que girar respecto al eje Z(i-1)para alinear el eje
X(i-1) con el eje X(i).
d: Es la distancia desde el origen (i-1) hasta el punto de interseccin del eje X(i) con
Z(i-1)
Parmetros Denavit-Hartenberg
Donde:
L1=3; L2=1;
ROBTICA Pgina 2
UNIVERSIDAD NACIONAL DEL CALLAO
i
A i1 = T z , theta(i) * T z , d (i) * T x ,a (i )T x ,alpha (i) =
0 sin(alpha) cos(alpha) d
0 0 0 1 ];
1 2 3
T= A 0 A 1 A 2 =
[ 0, 0, 1, 0]
[ 0, 0, 0, 1]
ROBTICA Pgina 3
UNIVERSIDAD NACIONAL DEL CALLAO
%---------------------------------------------------------------------
% INTEGRANTES:
% CONDOR CORDOVA JAVIER ALAN 072059B
% ARANA URIARTE CHRISTIAN LUIS 072673B
% DURAND SALAS JOHANN AUGUSTO 072654H
% CAMPOS TARAZONA OSCAR 080614A
%---------------------------------------------------------------------
%LOS DATOS QUE SE ENCUENTRAN EN LA HOJA SON LOS SIGUIENTES:
%LONGITUD DE LOS ESLABONES => l1=3; l2=1;
%LOS ANGULOS DE GIRO SON => theta1=pi/3; theta2=pi/3;
%SEGUN EL GRAFICO DE LA HOJA SE PUEDEN OBTENER LOS PARAMETROS DE
%DENAVIT-HARTENBERG
l1=3; l2=1;
q1=pi/3; q2=pi/3;
%Coordenadas
q=[q1 q2];
d=[0 0];
a=[l1 l2];
alpha=[0 0];
%Parametros Denavit-Hartenberg
disp('PRIMERA MATRIZ DENAVIT-HARTENBERG --> A01:')
disp('-------------------------------------------')
A01=denavit_h(q(1),d(1),a(1),alpha(1))
disp('-------------------------------------------')
disp('SEGUNDA MATRIZ DENAVIT-HARTENBERG --> A12:')
disp('-------------------------------------------')
A12=denavit_h(q(2),d(2),a(2),alpha(2))
disp('-------------------------------------------')
disp('MATRIZ DE TRANSFORMACION HOMOGENEA --> MTH:')
disp('-------------------------------------------')
MTH=A01*A12
disp('-------------------------------------------')
ROBTICA Pgina 4
UNIVERSIDAD NACIONAL DEL CALLAO
%LA GRAFICA DEL PROBLEMA
figure(1)
q1=pi/3;
q2=pi/3;
twoLink.plot([q1 q2]); hold on
disp('MATRIZ DE TRANSFORMACION HOMOGENEA --> N:')
disp('-------------------------------------------')
N=twoLink.fkine([q1 q2])
disp('-------------------------------------------')
plot3(N(1,4),N(2,4),N(3,4),'ro')
-------------------------------------------
A01 =
0 0 1.0000 0
0 0 0 1.0000
-------------------------------------------
ROBTICA Pgina 5
UNIVERSIDAD NACIONAL DEL CALLAO
-------------------------------------------
A12 =
0 0 1.0000 0
0 0 0 1.0000
-------------------------------------------
-------------------------------------------
MTH =
0 0 1.0000 0
0 0 0 1.0000
-------------------------------------------
-------------------------------------------
N=
0 0 1.0000 0
0 0 0 1.0000
-------------------------------------------
ROBTICA Pgina 6
UNIVERSIDAD NACIONAL DEL CALLAO
---------------------------------------------------
---------------------------------------------------
**T_FINAL:
-----------------------------------------
0 0 1.0000 0
0 0 0 1.0000
-----------------------------------------
ROBTICA Pgina 7
UNIVERSIDAD NACIONAL DEL CALLAO
CINEMTICA INVERSA:
ROBTICA Pgina 8
UNIVERSIDAD NACIONAL DEL CALLAO
Despejando:
Definimos r^2=Rcua=x^2+y^2;
a1=3 y a2=1
Reemplazando tenemos
q(2)=acos((Rcua-10)/6);
q(1)=atan2(y,x)-atan2(sin(q(2)),3+cos(q(2)));
ROBTICA Pgina 9
UNIVERSIDAD NACIONAL DEL CALLAO
%Incovacando cinversa
% qci=cinversa_2g(T);
qci=cinversa_RR(T);
qci1=qci*180/pi;
disp('LOS ANGULOS DESEADOS DE CINEMATICA INVERSA EN RADIANES')
disp(' ')
disp('------------------------------------------')
disp(qci)
disp('LOS ANGULOS DESEADOS DE CINEMATICA INVERSA')
disp(' ')
disp('------------------------------------------')
disp(qci1)
------------------------------------------
1.0472 1.0472
------------------------------------------
------------------------------------------
60.0000 60.0000
------------------------------------------
ROBTICA Pgina 10
UNIVERSIDAD NACIONAL DEL CALLAO
La dinmica se ocupa de la relacin entre las fuerzas que actan sobre un cuerpo y el
movimiento que en l se origina. Por lo tanto, el modelo dinmico de un robot tiene por
objeto conocer la relacin entre el movimiento del robot y las fuerzas implicadas en el
mismo. Esta relacin se obtiene mediante el denominado modelo dinmico, que
relaciona matemticamente:
1 La localizacin del robot definida por sus variables articulares o por las
coordenadas de localizacin de su extremo, y sus derivadas: velocidad y
aceleracin.
2 Las fuerzas pares aplicados en las articulaciones (o en el extremo del robot).
3 Los parmetros dimensinales del robot, como longitud, masa e inercias de sus
elementos.
ROBTICA Pgina 11
UNIVERSIDAD NACIONAL DEL CALLAO
Expresa la evolucin temporal de las coordenadas articulares del robot en funcin de las
fuerzas y pares que intervienen.
La obtencin del modelo analtico no es factible para robots de 3 a ms GDL, es por ello
que se debe recurrir a los algoritmos computacionales que obtiene la solucin de manera
numrica sin necesidad de obtener una expresin explicita del modelo. Estos algoritmos
en el caso de una trayectoria determinista (discretizada en pasos), van evaluando los
pares a desarrollar por cada articulacin paso a paso.
F= a*m = *J
ROBTICA Pgina 12
UNIVERSIDAD NACIONAL DEL CALLAO
Dependiendo el caso es que debemos elegir nuestra dinmica y nuestro control ya que
en alguno de ellos es ms fcil un mtodo que el otro.
Lagrange:
1 1
k i= mi v ci T v ci+ i Ti ci I ii i ui=moi gT o Pci +u ref
2 2
n n
Total k=
i=n
ki Total k= ui
i=n
1 1 &2
K i q, q& mi v 2 I i&
2 2
Enseguida, se obtienen las energas potenciales de los eslabones del robot manipulador.
U i q mi gh
ROBTICA Pgina 13
UNIVERSIDAD NACIONAL DEL CALLAO
L q, q& K q, q& U q
d L L
&
dt i i
A continuacin se detalla el desarrollo del modelo dinmico del robot por medio de las
ecuaciones de Euler-Lagrange. Como primer paso se obtienen las energas cinticas de
cada uno de los eslabones. Como el primer eslabn, solamente rota alrededor del eje z,
nicamente cuenta con energa cintica rotacional.
1 2
K1 &, I1&
2
1
Para los siguientes eslabones las ecuaciones de sus energas cinticas son las siguientes:
1 1
K 2 &, m2 lc 2 2&2 2 lc 2 2 cos 2 2&
2
2
1
I 2 &
2
2
&2
1 2
2
m3lc 32&3 m3lc 3 2 3
2
2
2 m3l2 lc 3 cos 2 cos 2 3 1
m3l2 2&2
2
3 c3 2 3 1
2
3 1 2
3
2
m f l32&3 m f l3 2 3
2
2
2 m f l2 l3 cos 2 cos 2 3 1
m f l2 2&2
2
f 3 2 3 1
1
m f l2 2 cos 2 2 &
2
1 m f l2 l3 cos 3 2 2 3
2 & & &
Siguiendo con el proceso de modelado, se deben obtener las expresiones de las energas
potenciales.
ROBTICA Pgina 14
UNIVERSIDAD NACIONAL DEL CALLAO
U1 m1 gh
U 2 m2 g h lc 2 sen 2
U 3 m3 g h l2 sen 2 lc 3 sen 2 3
U 4 m f g h l2 sen 2 l3 sen 2 3
2
m2 lc 2 2& 2 lc 2 cos 21
2 2 2
2
2 1 2 2
3 c3 2
2
3 c3 3 3 c3 2 3
2
m3l2 2&
2
2
1 1
m3l2lc 3 cos 2 cos 2 3 & 1
2
2
m3lc 32 cos 2 2 3 &
1
2
2
m3l22 cos 2 2 & 2
1 m3l2 lc 3 cos 3 2 2 3
& & &
1 & & 2 1 m l 2&2 1 m l 2&2 m l 2&& &2 1 m l 2&2
I 3 &
2
1 2 3
2
2
f 3 2
2
f 3 3 f 3 2 3 m f l2 l3 cos 2 cos 2 3 1
2
f 2 2
1 1
m f l32 cos 2 2 3 &
2
1
2
2
m f l2 2 cos 2 2 &2
& & &
1 m f l2l3 cos 3 2 2 3 m1 gh m2 g h lc 2 sen 2
Desarrollando las ecuaciones para cada una de las articulaciones del robot manipulador
se obtienen:
ROBTICA Pgina 15
UNIVERSIDAD NACIONAL DEL CALLAO
m l l m l l cos &
3 2 c3
& m l l m l l cos sen & m m gl cos
f 2 3 3 3 3 2 c3 f 2 3 2 2 3 1
2
3 f 2 2
I &
3
& m l m l g cos m gl cos I &
& &
2 3 3 c3 f 3
&
2 3 2 c2 2 2 2 2
m f l2 l3 sen 3 &
2 2 3 m3 glc 3 cos 2 3 I 3 2 3 3
& & && & &
M &
& C ,&& g
Newton-Euler:
vc c
I
+I c
F=m* N=
Asignar a cada eslabn un sistema de referencia de acuerdo a las normas de D-H, luego
obtener las matrices de rotacin i-1Ri y sus inversas iRi-1 siendo:
i-1Ri =
Ci -Ci Si Si Si
Si Ci Ci -Si Ci
0 Si Ci
ROBTICA Pgina 16
UNIVERSIDAD NACIONAL DEL CALLAO
00, 0d0 y 0v0 son tpicamente nulos salvo que la base del robot este en
movimiento.
Para el extremo del robot se conocer la fuerza y el par ejercidos externamente n+1
Fn+1 y n+1 N n+1.
Z0 = (0,0,1)exp T
iPi = coordenadas del origen del sistema Si respecto a Si-1.= ( ai, di, Si, di, Ci ).
iSi = coordenadas del centro de masas del eslabn i respecto del sistema Si.
iIi = matriz de inercia del eslabn i respecto de su centro de masas expresado en Si.
ii =
idi =
iRi-1 (i-1 di-1 + Z0 dq1) si el eslabn i es de rotacin
iRi (i-1 di-1) si el eslabn i es de traslacin.
Si el eslabn i es de rotacin.
Si l es de traslacin.
ROBTICA Pgina 17
UNIVERSIDAD NACIONAL DEL CALLAO
iNi = iRi+1 (i+1ni + (i+1Ri)(iPi)(i+1 Fi+1)) + (iPi + iSi)(mi)(iai) + iIi (id i) + i i (iIi)
(ii).
i =
(iNi)exp T (iRi-1) Z0. Si el eslabn i es de rotacin.
(iFi)exp T (iRi-1) Z0. Si el eslabn i es de traslacin.
= D dq + H + C
La expresin anterior es por tanto no lineal, no siendo trivial obtener a partir de ella el
modelo dinmico directo que proporciona la trayectoria seguida como consecuencia de
la aplicacin de unos pares determinados .
ROBTICA Pgina 18
UNIVERSIDAD NACIONAL DEL CALLAO
Como vimos anteriormente, es posible modelar la dinmica del robot usando el mtodo
de Lagrange-Euler o el mtodo de Newton-Euler, en ambos caso nos lleva a obtener el
mismo resultado de ecuaciones dinmicas, donde el control dinmico del sistema se rige
a travs de este algoritmo:
=M ( ) +C ( , ) +G(
)
Con la ayuda del toolbox HEMERO, lo podemos desarrollar de este modo calculando
los parmetros que estn incluidos en la ecuacin general.
Donde el comando dyn del toolbox de Hemero, contiene los parmetros cinemticos y
dinmicos del manipulador. La matriz est compuesta de estos parmetros:
De este modo para un robot de n enlaces, la matriz dyn tendra nx20. Todos los
ngulos deben ser introducidos en radianes.
ROBTICA Pgina 19
UNIVERSIDAD NACIONAL DEL CALLAO
close all;clear all ;clc
dyn=[ -pi/2 l1 q1 0 0 m1 l1 0 0 0 0 0 0 0 0 0 1 0
0 0
0 l2 q2 0 0 m2 l2 0 0 0 0 0 0 0 0 0 1 0 0
0];
q= [q1 q2];
qd = [qd1 qd2];
qdd=[qdd1 qdd2];
grav = [0 0 -g];
disp('Par total sobre las articulaciones');
tau = rne(dyn, q, qd, qdd, grav);
tau = simplify(tau);
disp('Matriz de masas del manipulador');
M = inertia(dyn, q);
M = simplify(M)
disp('Trmino gravitatorio')
G = gravity(dyn, q, grav);
G = simplify(G)
La solucin:
M=
C=
Trmino gravitatorio
G=
ROBTICA Pgina 20
UNIVERSIDAD NACIONAL DEL CALLAO
disp('DINAMICA DE UN ROBOT 2DOF USANDO EL METODO DE LAGRANGE - EULER')
disp('--------------------------------------------------------------')
syms q1 q2 dq1 dq2 ddq1 ddq2;
syms l1 d2; %longitud de los eslabones
syms g; %parametro de gravedad [m/seg^2]
syms m1 m2 x1 x2 y1 y2 z1 z2
%------------------------------------------------------------
disp('1.- Tabla de Parametros DH')
disp('-a---alpha---d---theta---')
DH=[ 0 -pi/2 0 q1
0 0 q2 0 ]
%------------------------------------------------------------
disp('-------------------------------------------------------------')
disp('2.- Calculo de las matrices de transformacion: Aij')
disp('-------------------------------------------------------------')
%------------------------------------------------------------
%T=rotz(theta)*transl(0,0,d)*transl(a,0,0)*rotx(alpha)
disp('Matriz de TH del primer eslabon movil desde la base del robot')
disp('-------------------------------------------------------------')
A01=simple(simplify(denavit(DH(1,1),DH(1,2),DH(1,3),DH(1,4))))
A12=simple(simplify(denavit(DH(2,1),DH(2,2),DH(2,3),DH(2,4))));
U211=simple(simplify(diff(U21,q1)))
U212=simple(simplify(diff(U21,q2)))
U221=simple(simplify(diff(U22,q1)))
U222=simple(simplify(diff(U22,q2)))
%------------------------------------------------------------
disp('-------------------------------------------------------------')
disp('5.- Matrices de Pseudoinercia : Ji')
disp('-------------------------------------------------------------')
%------------------------------------------------------------
%Para el primer eslabon: J1[Kg.m^2]
%m1=1.4Kg
%Coordenadas del centro de gravedad 1 respecto al frame 1
%x1=0;y1=0;z1=l1=0.5m;
disp('Para el Primer Eslabon')
disp('-------------------------------------------------------------')
ROBTICA Pgina 21
UNIVERSIDAD NACIONAL DEL CALLAO
J1=[ 0 0 0 0
0 0 0 0
0 0 (m1*l1^2) (m1*l1)
0 0 (m1*l1) m1 ]
%------------------------------------------------------------
%Para el primer eslabon: J1[Kg.m^2]
%m2=1Kg
%Coordenadas del centro de gravedad 2 respecto al frame 2
%x2=0;y2=0;z2=0;
disp('-------------------------------------------------------------')
disp('Para el segundo eslabon')
disp('-------------------------------------------------------------')
J2=[ 0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 m2]
%---------------------------------------------------------------------
-----
disp('-------------------------------------------------------------')
disp('6.- Calculo de las matrices de inercia : D = [dij]')
disp('-------------------------------------------------------------')
%---------------------------------------------------------------------
-----
%MATRIZ D11
d11=simple(simplify(trace(U11*J1*U11.')))
+simple(simplify(trace(U21*J2*U21.')))
%MATRIZ D12
d12=simple(simplify(trace(U22*J2*U21.')))
%MATRIZ D21
d21=simple(simplify(trace(U21*J2*U22.')))
%MATRIZ D22
d22=simple(simplify(trace(U22*J2*U22.')))
%Matriz general
D = [d11 d12;d21 d22]
%---------------------------------------------------------------------
-----
disp('-------------------------------------------------------------')
disp('7.- Calculo del vector hikm')
disp('-------------------------------------------------------------')
%---------------------------------------------------------------------
-----
h111=simplify(trace(U111*J1*U11.'))+simplify(trace(U211*J2*U21.'))
h112=simplify(trace(U212*J2*U21.'))
h121=simplify(trace(U221*J2*U21.'))
h122=simplify(trace(U222*J2*U21.'))
h211=simplify(trace(U211*J2*U22.'))
h212=simplify(trace(U212*J2*U22.'))
h221=simplify(trace(U221*J2*U22.'))
h222=simplify(trace(U222*J2*U22.'))
%---------------------------------------------------------------------
-----
disp('----------------------------------------------------------------
-------')
disp('8.-Calculo del vector columna de fuerza centrifuga y de
coriolis:H=[hi]')
disp('----------------------------------------------------------------
-------')
%---------------------------------------------------------------------
-----
h1=h111*dq1^2+h112*dq1*dq2+h121*dq2*dq1+h122*dq2^2;
ROBTICA Pgina 22
UNIVERSIDAD NACIONAL DEL CALLAO
h2=h211*dq1^2+h212*dq1*dq2+h221*dq2*dq1+h222*dq2^2;
%---------------------------------------------------------------------
-----
%Matriz de Coriolis
H=[h1;h2]
%---------------------------------------------------------------------
-----
disp('--------------------------------------------------------------')
disp('9.-Calculo de la matriz columna de fuerzas de gravedad: C=[ci]')
disp('--------------------------------------------------------------')
%---------------------------------------------------------------------
-----
g1=[g 0 0 0]; % Segun el frame 0 , gravedad actuando en el eje X
%---------------------------------------------------------------------
-----
% Vector de compuesto por coordenadas de posicion del centro de masas
% para cada eslabon
r11=[0;0;l1;1]; %CG para el eslabon 1
r22=[0;0;0;1]; %CG para el eslabon 2
c1=-m1*g1*U11*r11 - m2*g1*U21*r22;
c2=-m1*g1*U12*r11 - m2*g1*U22*r22;
%---------------------------------------------------------------------
-----
% Matriz de gravedad
C=[c1;c2]
%---------------------------------------------------------------------
-----
disp('-------------------------------------------------------------')
disp('10.- Ecuacion dinamica del robot')
disp('-------------------------------------------------------------')
%---------------------------------------------------------------------
-----
tau=simplify(D*[ddq1;ddq2]+H+C);
disp('El torque o par para la primera articulacion revoluta es: ')
disp('-------------------------------------------------------------')
T1 = tau(1) % Juntura Revoluta
disp('-------------------------------------------------------------')
disp('La fuerza para al articulacion prismatica es:')
disp('-------------------------------------------------------------')
F2 = tau(2) % Juntura Prismatica
disp('-------------------------------------------------------------')
disp('La notacion general de la ecuacion dinamica es:')
disp('-------------------------------------------------------------')
tau=[tau(1); tau(2)]
La solucin:
ROBTICA Pgina 23
UNIVERSIDAD NACIONAL DEL CALLAO
-a---alpha---d---theta---
DH =
[ 0, -pi/2, 0, q1]
[ 0, 0, q2, 0]
-------------------------------------------------------------
-------------------------------------------------------------
-------------------------------------------------------------
A01 =
[ cos(q1), 0, -sin(q1), 0]
[ sin(q1), 0, cos(q1), 0]
[ 0, -1, 0, 0]
[ 0, 0, 0, 1]
-------------------------------------------------------------
A02 =
[ 0, -1, 0, 0]
[ 0, 0, 0, 1]
------------------------------------------------------------
U11 =
ROBTICA Pgina 24
UNIVERSIDAD NACIONAL DEL CALLAO
[ -sin(q1), 0, -cos(q1), 0]
[ cos(q1), 0, -sin(q1), 0]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
U12 =
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
U21 =
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
U22 =
[ 0, 0, 0, -sin(q1)]
[ 0, 0, 0, cos(q1)]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
-------------------------------------------------------------
U111 =
ROBTICA Pgina 25
UNIVERSIDAD NACIONAL DEL CALLAO
[ -cos(q1), 0, sin(q1), 0]
[ -sin(q1), 0, -cos(q1), 0]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
U112 =
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
U121 =
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
U122 =
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
U211 =
ROBTICA Pgina 26
UNIVERSIDAD NACIONAL DEL CALLAO
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
U212 =
[ 0, 0, 0, -cos(q1)]
[ 0, 0, 0, -sin(q1)]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
U221 =
[ 0, 0, 0, -cos(q1)]
[ 0, 0, 0, -sin(q1)]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
U222 =
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
-------------------------------------------------------------
ROBTICA Pgina 27
UNIVERSIDAD NACIONAL DEL CALLAO
J1 =
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
[ 0, 0, l1^2*m1, l1*m1]
[ 0, 0, l1*m1, m1]
-------------------------------------------------------------
J2 =
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
[ 0, 0, 0, 0]
[ 0, 0, 0, m2]
d11 =
m1*l1^2 + m2*q2^2
d12 = 0
d21 = 0
d22 = m2
D=
[ m1*l1^2 + m2*q2^2, 0]
[ 0, m2]
h111 = 0
h112 = m2*q2
ROBTICA Pgina 28
UNIVERSIDAD NACIONAL DEL CALLAO
h121 = m2*q2
h122 = 0
h211 = -m2*q2
h212 = 0
h221 = 0
h222 = 0
H=
2*dq1*dq2*m2*q2
-dq1^2*m2*q2
C=
g*l1*m1*cos(q1) + g*m2*q2*cos(q1)
g*m2*sin(q1)
T1 =
F2 =
tau =
ROBTICA Pgina 30
UNIVERSIDAD NACIONAL DEL CALLAO
ROBTICA Pgina 31
UNIVERSIDAD NACIONAL DEL CALLAO
ROBTICA Pgina 32
UNIVERSIDAD NACIONAL DEL CALLAO
EL TORQUE DESEADO
ROBTICA Pgina 33
UNIVERSIDAD NACIONAL DEL CALLAO
LA FUERZA DESEADA
CONTROL CINEMTICO:
El control cinemtica establece las trayectorias que debe seguir cada articulacin del
robot para cumplir con los requerimientos del usuario. Dichas trayectorias se
seleccionaran dependiendo de las restricciones fsicas propias de los accionamientos y a
criterios de calidad como suavidad o precisin de la misma.
El robot recibe como entradas los datos procedentes del programa del robot escrito por
el usuario, (punto de destino, precisin, tipo de trayectoria, deseada, velocidad, etc.),
luego establece la trayectoria para cada articulacin como funciones del tiempo
ROBTICA Pgina 34
UNIVERSIDAD NACIONAL DEL CALLAO
Generacin de trayectorias.
Normalmente el usuario del robot indica el movimiento que ste debe realizar
especificando las localizaciones especiales por las que debe pasar el extremo, junto con
otros datos, como instantes de paso, velocidades o tipos de trayectorias. As, por
ejemplo, es frecuente especificar que el robot debe ir de un punto inicial hasta otro final,
siguiendo en cartesianas una lnea recta a velocidad constante.
(t) = (f - i) t ti + i
tf ti
( t) = (f i) t ti+i
tf ti
(t) = (f - i) t ti + i
tf ti
ROBTICA Pgina 36
UNIVERSIDAD NACIONAL DEL CALLAO
orientacin.
Dado un sistema ortogonal inicial y otro final rotado respecto del primero, existe
un nico eje k que permite pasar del sistema inicial al final girando un ngulo respecto
a l. Por lo tanto, para que el extremo del robot evoluciones desde la orientacin inicial
hasta el final, se podr buscar cual es el par ( k ) que relaciona los sistemas de
coordenadas ortogonales asociadas a ambas orientaciones, y realizar la evolucin
temporal mediante un giro en torno al eje k de valor:
(t) = t - ti
tf - ti
A partir del valor de (t) para instantes concretos de tiempo ser inmediato conocer el
cuaternio correspondiente.
Interpolacin de trayectorias
Como ser ha indicado, una de las funciones del control cinemtica es la de unir
una sucesin de puntos en el espacio articular por los que se quiere que pasen las
articulaciones del robot en un instante determinado .Adems, junto con las condiciones
de posicin- tiempo, es conveniente aadir restricciones en la velocidades y aceleracin
de paso por los puntos, de manera que se asegure la suavidad de la trayectoria y se
limiten las velocidades y aceleraciones mximas. Estas restricciones garantizarn que
los actuadores estn capacitados para implementar la trayectoria final.
Interpoladores lineales: Supongamos que se pretende que una de las articulaciones q del
robot, pase sucesivamente por los valores qi en los instantes ti. Una primera solucin a
este problema consistira en mantener constante la velocidad de movimiento entre cada
dos valores sucesivos (qi-1, qi) de la articulacin.
ROBTICA Pgina 37
UNIVERSIDAD NACIONAL DEL CALLAO
La seleccin de los instantes de paso ti por los puntos qi podr haberse hecho segn los
diferentes criterios expuestos a continuacin:
DE LA EXPERIENCIA:
El cdigo es:
function dibuja_RR(q)
L1=3; L2=1;
q1=q(1); q2=q(2);
x(1)=0;
y(1)=0;
x(2)=L1*cos(q1);
y(2)=L1*sin(q1);
x(3)=L1*cos(q1)+L2*cos(q1+q2);
y(3)=L1*sin(q1)+L2*sin(q1+q2);
hold on;
plot(x,y,'b','linewidth',2);
plot(x,y,'r.','MarkerSize',20);
grid on;
axis([-4 4 -4 4]);
hold off;
end
el cdigo es:
function dibuja_RR(q)
ROBTICA Pgina 38
UNIVERSIDAD NACIONAL DEL CALLAO
L1=3; L2=1;
q1=q(1); q2=q(2);
x(1)=0;
y(1)=0;
x(2)=L1*cos(q1);
y(2)=L1*sin(q1);
x(3)=L1*cos(q1)+L2*cos(q1+q2);
y(3)=L1*sin(q1)+L2*sin(q1+q2);
hold on;
plot(x,y,'b','linewidth',2);
plot(x,y,'r.','MarkerSize',20);
grid on;
axis([-4 4 -4 4]);
hold off;
end
El cdigo es:
[q0 k0]=inversa_trayectoriaRR(x0,y0);
[qf kf]=inversa_trayectoriaRR(xf,yf);
if k0*kf
clf;
hold on;
plot([x0 xf],[y0 yf],'c','LineWidth',2); %recta entre los puntos
inicial y final
plot([x0 xf],[y0 yf],'g.','MarkerSize',20); %tamao de los puntos
t=-pi:0.01:pi;
plot(2*cos(t),2*sin(t),'k','LineWidth',1); %circunferencia menor
plot(4*cos(t),4*sin(t),'k','LineWidth',1); %circunferencia mayor
grid on;
axis([-4 4 -4 4]);
hold off;
P=30;
[q dq ddq]=jtraj(q0,qf,P);
for k=1:length(q)
dibuja_RR(q(k,:));
pause(0.1);
end
figure
subplot 311
plot(q); %la posicion
subplot 312
plot(dq); %la velocidad
subplot 313
plot(ddq); %la aceleracion
end
ROBTICA Pgina 39
UNIVERSIDAD NACIONAL DEL CALLAO
la grafica es el siguiente:
ROBTICA Pgina 40
UNIVERSIDAD NACIONAL DEL CALLAO
ROBTICA Pgina 41
UNIVERSIDAD NACIONAL DEL CALLAO
ROBTICA Pgina 42
UNIVERSIDAD NACIONAL DEL CALLAO
Ahora generamos las trayectorias que va a recorrer el brazo RR desde un punto inicial
hasta un punto final.
x0=3; y0=-2;
xf=1; yf=3.5;
[q0 k0]=inversa_trayectoriaRR(x0,y0);
[qf kf]=inversa_trayectoriaRR(xf,yf);
if k0*kf
A=[xf-x0 yf-y0 0];
B=[-x0 -y0 0];
d=norm(cross(A,B))/norm(A);
clf;
hold on;
plot([x0 xf],[y0 yf],'y','LineWidth',2);
plot([x0 xf],[y0 yf],'b.','MarkerSize',20);
t=-pi:0.01:pi;
plot(2*cos(t),2*sin(t),'k','LineWidth',1);
plot(4*cos(t),4*sin(t),'k','LineWidth',1);
grid on;
axis([-4 4 -4 4]);
hold off;
if d>2
N=20;
x=linspace(x0,xf,N);
y=linspace(y0,yf,N);
for k=2:N
[q dq ddq]=jtraj(inversa_trayectoriaRR(x(k-1),y(k-
1)),inversa_trayectoriaRR(x(k),y(k)),3);
for k=1:length(q)
dibuja_RR(q(k,:));
pause(0.1);
end
end
end
figure
subplot 311
plot(q);
subplot 312
plot(dq);
subplot 313
plot(ddq);
end
ROBTICA Pgina 43
UNIVERSIDAD NACIONAL DEL CALLAO
ROBTICA Pgina 44
UNIVERSIDAD NACIONAL DEL CALLAO
ROBTICA Pgina 45
UNIVERSIDAD NACIONAL DEL CALLAO
N Art d a
1 Q1 pi/2 0 L1
2 Q2 0 0 L2
l1=2, l2 =2,
g=9.81
Cm1=l1; Cm2=l2 (definimos los centros de masa en los extremos de los eslabones)
M=
[ m1l 12+ 4m 2 ( cos2( q 2) + 12 )l2
l22m2(cos ( q 2 )+1)
2
l22m2(cos ( q 2 )+1)
l 22m2 ]
C= [l22m2qd 2sin ( q 2 )(2qd 1+ qd 2 ) l 2 m2qd 1 sin ( q 2) ]
2 2
ROBTICA Pgina 46
UNIVERSIDAD NACIONAL DEL CALLAO
G=
[g( l 1m1cos ( q 1 ) +l 2m2cos ( q 1 ) +l 2m 2cos ( q 1+q 2 ) ) gl2m2cos ( q 1+q 2) ]
Este tipo de control pertenece al conjunto de controladores por torque computado como
se muestra en la tabla
Para calcular se toma el principio de respuesta de los sistemas, que pueden ser
crticamente subamortiguados o sobre amortiguados, entonces para esto debemos definir
una frecuencia natural de trabajo:
ROBTICA Pgina 47
UNIVERSIDAD NACIONAL DEL CALLAO
Kv=2 Kp
Algoritmo:
q1 q2 dq 1 dq 2
q1d=arctan(yd,xd);
q2d=acos(((xd/cos(q1d))-l1)/l2);
[
error= q 1 dq 1
q 2 dq 2 ]
Clculo del torque aplicado a los eslabones:
Kp= [ 60 0
0 50 ] Y [
Kv=
40 0
0 30 ]
ROBTICA Pgina 48
UNIVERSIDAD NACIONAL DEL CALLAO
q1=q1+dt*q1_p;
q2=q2+dt*q2_p;
dq1=dq1+t* q (1);
dq2=dq2+t* q (2);
% Posiciones incial-final
l1=3;l2=1; m1=2;m2=1; g=9.81; I1=1; I2=0;
lc1=l1; lc2=l2;
% Valores iniciales
q1 = pi/5;
q2 = pi/5;
q1_p = 0;
q2_p = 0;
ROBTICA Pgina 49
UNIVERSIDAD NACIONAL DEL CALLAO
% Kv1=2*sqrt(Kp1);
% Kv2=2*sqrt(Kp2);
% Kp=[Kp1 0
% 0 Kp2];
% Kv=[Kv1 0
% 0 Kv2];
Kp=[50 0
0 50];
Kv=[30 0
0 30];
% Cinemtica inversa
q1d=atan2(yd,xd);
q2d=acos(((xd/cos(q1d))-l1)/l2);
for t=ti:dt:tf
m11=m1*l1^2+4*m2*(cos(q2)/2 +1/2)*l2^2;
m12=l2^2*m2*(cos(q2)+1);
m21=m12;
m22=m2*l2^2;
M=[m11 m12
m21 m22];
c11= l2^2*m2*q2_p*sin(q2)*(2*q1_p + q2_p);
c12= l2^2*m2*q1_p^2*sin(q2);
c21=0;
c22=0;
C=[c11 c12
c21 c22];
g1=-g*(l1*m1*cos(q1) + l2*m2*cos(q1) + l2*m2*cos(q1 + q2));
g2=-g*l2*m2*cos(q1 + q2);
G=[g1
g2];
% Controlador
Error = [q1d-q1
q2d-q2];
tau=Kp*Error - Kv*[q1_p;q2_p]+G;
% Sistema
Q_2p=inv(M)*(tau-C*[q1_p;q2_p]-G);
q1=q1+dt*q1_p;
q2=q2+dt*q2_p;
q1_p=q1_p+dt*Q_2p(1);
q2_p=q2_p+dt*Q_2p(2);
% Cinematica directa
x=(l1+l2*cos(q2))*cos(q1);
y=(l1+l2*cos(q2))*sin(q1);
% Tomando datos
ROBTICA Pgina 50
UNIVERSIDAD NACIONAL DEL CALLAO
ang1(k)=q1;
ang2(k)=q2;
tiempo(k)=t;
exis(k)=x;
ye(k)=y;
k=k+1;
end
figure(1)
%subplot(311)
plot(tiempo,ang1*180/pi,'b','linewidth',1.5)
title('Angulo de articulacin 1')
xlabel('Tiempo (seg)')
ylabel('Angulo (grad)')
%subplot(312)
figure(2)
plot(tiempo,ang2*180/pi,'r','linewidth',1.5)
title('Angulo de articulacin 2')
xlabel('Tiempo (seg)')
ylabel('Angulo (grad)')
%subplot(313)
figure(3)
plot(exis,ye), hold
plot([0 l1*cos(ang1(1)) exis(1)],[0 l1*sin(ang1(1))
ye(1)],'k','linewidth',1.5);
title('Movimiento del robot')
xlabel('X (m)')
ylabel('Y (m)')
for i=1:4
plot([0 l1*cos(ang1(i)) exis(i)],[0 l1*sin(ang1(i)) ye(i)]);
end
ROBTICA Pgina 51
UNIVERSIDAD NACIONAL DEL CALLAO
ROBTICA Pgina 52
UNIVERSIDAD NACIONAL DEL CALLAO
CODIGO EN LABVIEW
ROBTICA Pgina 53
UNIVERSIDAD NACIONAL DEL CALLAO
El programa fue diseado para ingresar las coordenadas finales y los ngulos iniciales
de las articulaciones.
Al ingresar la posicin final se generan los ngulos finales a esa posicin y el programa
se detendr una vez se establezca el sistema, iniciando nuevamente el programa
solicitando se ingresen los DATOS INICIALES para correr el programa y realizar la
siguiente simulacin.
ROBTICA Pgina 54
UNIVERSIDAD NACIONAL DEL CALLAO
ROBTICA Pgina 55