Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Carlos Agudelo
Nicolás Mejía
- Tarea 1:
-Robot 1DOF:
Constantes mecánicas:
clear all
clc
syms x1 x2 u Y s t z
m=0.3;
g=9.8;
l=0.2;
j=0.5;
Constantes de diseño:
wn = 11.4286
Jacobiano:
f1=x2;
f2=-m*g*l/j*cos(x1)+1/j*u;
As=jacobian([f1;f2],[x1;x2]);
Bs=jacobian([f1;f2],u);
U=m*g*l*cos(Y)
U =
Modelo continuo:
A=eval(As)
A =
B=eval(Bs)
B =
0
2
C=[1 0];
Ae=[A,[0;0];-C, 0];
Be=[B;C*B];
pdo =
I=eye(2);
phi=((A^2) + (pdo(2)*(A)) + (pdo(3)*I));
K=Ke(1:2)
K =
Ki=Ke(3)
Ki =
ko=([0 1]*(inv([C;C*A]))*phi)'
ko =
Modelo discreto:
clear A B
for punto=-45:10:45
punto=punto*(pi/180);
x1=punto;
x2=0;
U=m*g*l*cos(Y);
A=eval(As);
B=eval(Bs);
[G,H]=c2d(A,B,T);
Ge=[G,[0;0];C*G, 1];
He=[H;C*H];
mag=exp(-T*zita*wn);
fas=T*wn*sqrt(1-zita^2);
poldesd=conv([1 -2*mag*cos(fas) m^2],[1 -0.05]);
phi=Ge^3+poldesd(2)*Ge^2+poldesd(3)*Ge+poldesd(4)*eye(3);
Ke=[0 0 1]*inv([He Ge*He Ge^2*He])*phi;
K=Ke(1:2);
Ki=Ke(3);
Ko=G^2*inv([C;C*G])*[0;1];
end
SIMULACIÓN:
- Modelo continuo:
- Modelo discreto:
-Levitador Magnético:
Constantes mecánicas:
clear all
clc
syms x1 x2 x3 x4 s u t xd
m=0.2; %% kg
r= 10;
g = 9.8; %% m/s^2
l=0.1;
c=1;
Constantes de diseño:
Jacobiano:
f1 = x2;
f2=g-((c*(x3)^2/(m*x1)));
f3 =(-r/l)*x3+u/l;
h = x1;
F = [f1; f2; f3];
x = [x1 x2 x3];
As = jacobian(F,x);
Bs = jacobian(F,u);
Cs = jacobian(h,x);
ub = r*x3b
ub =
Xb = [x1b;x2b;x3b]
Xb =
Modelo continuo:
PDC=(s^2+s*zita2*wn2+(wn2)^2)*(s+5*zita2*wn2);
PDC=coeffs(PDC,s)
PDC =
KC =
PDOC=(s^2+s*zita21*wn21+(wn21)^2)*(s+5*zita21*wn21);
PDOC=coeffs(PDOC,s)
PDOC =
Kec=(A^3+A^2*PDOC(3)+A*PDOC(2)+PDOC(1)*eye(3))*inv([C; C*A;C*(A^2)])*[0;0;1]
Kec =
wd=wn2*sqrt(1-zita2^2);
wd1=wn21*sqrt(1-zita21^2);
Modelo discreto:
clear all
syms X x1 x2 x3 m c R L g u z s t T z
g=9.81;c=1;m=0.1;L=0.01;R=1;i=0;
ts=1;t=ts/10;zita=0.7;T=ts/10;
wn=4/(zita*ts);
for punto=0.02:0.02:0.08
i=i+1;
x1p=x2;
x2p=g-(c/m)*(x3^2/x1);
x3p=-(R/L)*x3+(1/L)*u;
y=x1;
F=[x1p x2p x3p];
As=jacobian(F,[x1,x2,x3]);
Bs=jacobian(F,[u]);
x1x=punto;
x2x=0;
x3x=sqrt(m*g*punto/c);
ux=R*sqrt(m*g*punto/c);
Ax=simplify(subs(As,[x1,x2,x3,u],[x1x,x2x,x3x,ux]));
Bx=simplify(subs(Bs,[x1,x2,x3,u],[x1x,x2x,x3x,ux]));
A=double(Ax);
B=double(Bx);
C=[1 0 0];
Discretización para cada punto:
[G,H]=c2d(A,B,t)
Gm(:,:,i)=G;
Hm(:,:,i)=H;
Ge=[G,[0;0;0] ;C*G, 1];
He=[H;C*H];
mag=exp(-T*zita*wn);
fas=T*wn*sqrt(1-zita^2);
poldes2=conv([1 -2*mag*cos(fas) m^2],[1 -0.05]);
poldes=conv(poldes2,[1 -0.05]);
phi=Ge^4+Ge^3*poldes(2)+Ge^2*poldes(3)+Ge*poldes(4)+poldes(5)*eye(4);
Ke=[0 0 0 1]*inv([He Ge*He Ge^2*He Ge^3*He])*phi;
K=Ke(1:3);
Ki=Ke(4);
tsOb=1/10;
tOb=tsOb/10;
zitaOb=0.7;
ttOb=tOb;
wnOb=4/(tOb*zitaOb);
zangsOb=ttOb*wnOb*sqrt(1-zitaOb^2);
zmagsOb=exp(-ttOb*zitaOb*wnOb);
[realOb imagOb]=pol2cart(zangsOb,zmagsOb);
ang_zOb=ttOb*wnOb*sqrt(1-zitaOb^2);
mag_zOb=exp(-ttOb*zitaOb*wnOb);
pdzOb=double(coeffs(((z^2)-(2*mag_zOb*(cos(ang_zOb))*z)+(mag_zOb^2))*((z-0.05)^1),z,'ALL'));
LM=place(G,H,roots(pdzOb)).';
end
G =
4.6340 0.2043 -0.2327
100.2128 4.6340 -5.3496
0 0 0.0000
H =
-0.8051
-23.2681
1.0000
G =
2.4983 0.1462 -0.1231
35.8531 2.4983 -2.1726
0 0 0.0000
H =
-0.4820
-12.3069
1.0000
G =
1.9351 0.1296 -0.0906
21.1841 1.9351 -1.4168
0 0 0.0000
H =
-0.3719
-9.0613
1.0000
G =
1.6784 0.1217 -0.0744
14.9269 1.6784 -1.0842
0 0 0.0000
●
H =
-0.3130
-7.4411
1.0000
SIMULACIÓN:
- Modelo continuo:
- Modelo discreto:
- EXAMEN FINAL:
- Constantes del modelo:
clear all
clc
syms l1 l2 lc1 lc2 t q1(t) q2(t) q1a q2a q1ap q2ap q1app q2app m1 m2 m3 m4 t1 t2 q1t q2t z v
g=9.8;
l1=0.2;
l2=0.2;
lc1=0.1;
lc2=0.1;
m1=0.1;
m2=0.1;
m3=0;
m4=0.3;
v1=0;
v2=0;
x1=lc1*sin(q1);
y1=-lc1*cos(q1);
x1p=diff(x1,t);
y1p=diff(y1,t);
x2=l1*sin(q1)+lc2*sin(q1+q2);
y2=-l1*cos(q1)-lc2*cos(q1+q2);
x2p=diff(x2,t);
y2p=diff(y2,t);
x3=l1*sin(q1)+l2*sin(q1+q2);
y3=-l1*cos(q1)-lc2*cos(q1+q2);
x3p=diff(x3,t);
y3p=diff(y3,t);
x4=l1*sin(q1);
y4=-l1*cos(q1);
x4p=diff(x4,t);
y4p=diff(y4,t);
q1p=diff(q1,t);
q2p=diff(q2,t);
q1pp=diff(q1p,t);
q2pp=diff(q2p,t);
y1a=lc1*cos(q1t);
y2a=l1*cos(q1t)-lc2*cos(q1t+q2t);
y3a=l1*cos(q1t)-lc2*cos(q1t+q2t);
y4a=l1*cos(q1t);
- Lagrangiano:
LL=l1+l2;
x1p^2 + y1p^2;
k=simplify((1/2*m1*(x1p^2 + y1p^2))+(1/2*m2*(x2p^2 + y2p^2))+(1/2*m3*(x3p^2 + y3p^2))+(1/2*m4*
u=simplify((m1*g*(LL-lc1*cos(q1)))+(m4*g*(LL-l1*cos(q1)))+(m2*g*(LL*cos(q1)- lc2*cos(q1+q2)))+
L=k-u;
a1=subs(L,q1p,q1ap);
a1=diff(a1,q1ap);
b1=subs(L,q1,q1a);
b1=diff(b1,q1a);
a11=diff(a1,t);
T1=a11-b1-t1;
T1=subs(T1,q1,q1a);
T1=subs(T1,q2pp,q2app);
T1=subs(T1,q2,q2a);
T1=subs(T1,q1pp,q1app);
v11=v1*q1ap;
T1=T1+v11;
a2=subs(L,q2p,q2ap);
a2=diff(a2,q2ap);
b2=subs(L,q2,q2a);
b2=diff(b2,q2a);
a22=diff(a2,t);
T2=a22-b2-t2;
T2=subs(T2,q2,q2a);
T2=subs(T2,q1pp,q1app);
T2=subs(T2,q1,q1a);
T2=subs(T2,q2pp,q2app);
v22=v1*q2ap;
T2=T2+v22;
q2ppecu=simplify(solve(T2,q1app));
q1ppecu=simplify(solve(T1,q2app));
[num1,den1]=numden(q1ppecu);
[num2,den2]=numden(q2ppecu);
x2a=q1ap;
x4a=q2ap;
f1=x2a;
f2=q1ppecu;
f3=x4a;
f4=q2ppecu;
- Jacobiano:
As=jacobian([f1;f2;f3;f4],[q1a,q1ap,q2a,q2ap]);
Bs=jacobian([f1;f2;f3;f4],[t1,t2]);
q1t=ang1;
q2t=ang2;
t1=m1*y1a+m2*y2a+m3*y3a+m3*y4a;
t2=m2*y2a+m3*y3a;
t1=eval(t1);
t2=eval(t2);
for punto=-45:5:45
punto=punto*(pi/180);
q1a=punto;
q1ap=0;
q2a=punto;
q2ap=0;
q1t=q1a;
q2t=q2a;
t1=m1*y1a+m2*y2a+m3*y3a+m3*y4a;
t2=m2*y2a+m3*y3a;
t1=eval(t1);
t2=eval(t2);
A=eval(As);
B=eval(Bs);
C=[1 0 0 0;
0 0 1 0];
ts=0.5;
t=ts/11;
zita=1.2;
tt=t;
wn=4/(ts*(zita-(sqrt((zita^2)-1))));
[G,H]=c2d(A,B,t);
Ge=[G,[0 0;0 0;0 0;0 0];C*G eye(2)];
He=[H;C*H];
zangs=tt*wn*sqrt(1-zita^2);
zmags=exp(-tt*zita*wn);
[real imag]=pol2cart(zangs,zmags);
ang_z=tt*wn*sqrt(1-zita^2);
mag_z=exp(-tt*zita*wn);
pdz=double(coeffs(((z^2)-(2*mag_z*(cos(ang_z))*z)+(mag_z^2))*((z-0.05)^4),z,'ALL'));
kplace=place(Ge,He,roots(pdz)');
kR=[kplace(1,1:4);kplace(2,1:4)];
ki=[kplace(1,5:6);kplace(2,5:6)];
- Respuesta para viscosidad de 0.1N*s/m y masa de 50g, con puntos de operación entre
-45 y 45:
- Respuesta para viscosidad de 0.2N*s/m y masa de 50g, con puntos de operación entre
-45 y 45:
- Respuesta para viscosidad de 0.5N*s/m y masa de 50g, con puntos de operación entre
-45 y 45:
- Respuesta para viscosidad de 0.5N*s/m y masa de 100g, con puntos de operación
entre -45 y 45:
- CONCLUSIONES:
Se puede observar que el control dinámico para un sistema MIMO cumple con los requisitos deseados,
pues cada una de las articulaciones sigue la señal sinusoidal de referencia para la posición deseada
entre 45° y -45°, por lo que se confirma que la linealización mediante la tabla de Gain Scheduling
se efectuó correctamente; además podemos ver como la dinámica del robot va variando según la
viscosidad y la masa de carga aplicada.
Pudimos ver que con la viscosidad en 0 el sistema se vuelve inestable y pierde su capacidad de
controlar, además vimos que con viscosidades mayores a 0.2 N*s/m el sistema empieza a adoptar un
comportamiento forzoso y deja de seguir por completo a la referencia, por lo que decidimos que el valor
de viscosidad para nuestro diseño debe variar de 0.1 N*s/m a 0.2 N*s/m para que el robot tenga un
comportamiento óptimo.
Además se puede detallar como a mayor viscosidad en el sistema, el manipulador puede aumentar su
capacidad de carga, pues al aplicar una carga de 100g con la viscosidad mínima de diseño (0.1 N*s/
m) vemos que el sistema tiene oscilaciones violentas en los primeros 10 segundos, lo cual puede llegar
a ser peligroso al momento de usar este; mientras que haciendo la misma prueba con la viscosidad
máxim de diseño (0.2 N*s/m) vemos que estas oscilaciones se anulan casi completamente, teniendo
el sistema estable a los 2 segundos. Por lo que se comprobó que mayor carga el sistema oscila más y
vimos que al superar la carga de 100g el sistema se vuelve inestable, esto puede darse por la robustez
y calidad del controlador diseñado.