8. Control de modo deslizante de brazo robótico único basado en observador de interferencia
8.1 Modelo de brazo robótico único
Al introducir un observador de perturbaciones, la incertidumbre del objeto controlado y la perturbación externa se pueden estimar con precisión, reduciendo así la ganancia en el control del modo deslizante y reduciendo efectivamente la vibración.
La ecuación dinámica del brazo robótico único incierto es
(8.25)
Entre ellos es el ángulo de salida del sistema, es el momento de inercia, es la gravedad, es la entrada de control, es la fricción no lineal desconocida, es el centro de masa del centro de rotación de la varilla de conexión, es la fricción viscosa del movimiento de la barra de conexión , y es la incertidumbre del parámetro correspondiente El valor es el coeficiente de fricción elástica.
Cambie la fórmula (8.25) por
Entonces, el brazo robótico único incierto puede describirse mediante la ecuación diferencial de segundo orden:
(8.26)
Donde , , y los valores son conocidos, representativas de las incertidumbres, la suma de la expresión de la gravedad, y un término de fricción,
8.2 Diseño y análisis de controlador de modo deslizante para modelo de manipulador único
La superficie de deslizamiento está diseñada como
(8.27)
Entre ellos , está la ubicación.
Apuntando a la fórmula del objeto controlado (8.26), la ley de control del modo deslizante de diseño es
(8.28)
Entre ellos se encuentra el valor estimado del término a través del observador de interferencia, y es el error estimado del término.
El factor de ganancia de conmutación está diseñado como
(8.29)
La función de Lyapunov es
debido a
Sustituyendo la ecuación de la ley de control (8.28) en la ecuación anterior, obtenemos:
luego
Puede verse que para estar satisfecho , necesita estar satisfecho . Si el error de estimación del término es lo suficientemente pequeño, el coeficiente de ganancia de conmutación puede diseñarse para que sea un valor pequeño, reduciendo así eficazmente la vibración.
8.3 Diseño de observador de interferencia
Para observar el término de interferencia , el observador está diseñado como
8,30 (
Cuál es la estimación de interferencia , para la estimación , y ganancia configurada por el polo.
La fórmula del observador de interferencia (9.30) se expresa como:
(8,31)
(8,32)
8.4 Ejemplo de simulación
Suponiendo que la ecuación dinámica de un solo brazo robótico es
(8.33)
Entre ellos .
Entre los acusados, tómalo . La ley de control es (8.28), y el observador de interferencia toma la fórmula (8.31) y la fórmula (8.32), que se toma . Tome , sin utilizar el observador de interferencia, para superar el término, se necesita un diseño , y los resultados de la simulación se muestran en la figura y la figura. Tome , use el observador de interferencia, tome , el resultado de la simulación se muestra como en la imagen.
Figura 9.1 Señal de entrada de control (M = 2)
Figura 9.2 Seguimiento de posición y error de seguimiento (M = 2)
Figura 9.3 Interferencia y sus resultados de observación (M = 2)
Programa de simulación:
programa principal de simulink: chap9_5sim.mdl
Función del controlador S: chap9_5ctrl.m
function [sys,x0,str,ts]=spacemodel(t,x,u,flag)
switch flag,
case 0,
[sys, x0,str,ts] = mdlInitializeSizes;
case 3,
sys = mdlOutputs(t,x,u);
case{2,4,9}
sys = [];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts] = mdlInitializeSizes
sizes = simsizes;
sizes.NumOutputs =1;
sizes.NumInputs =5;
sizes.DirFeedthrough =1;
sizes.NumSampleTimes =1;
sys = simsizes(sizes);
x0 = [];
str = [];
ts = [0 0];
function sys = mdlOutputs(t,x,u)
r = u(1);
dr = cos(t);
ddr = -sin(t);
th = u(2);
dth = u(3);
fp = u(5);
e = r-th;
de = dr - dth;
c = 3;
s = de+c*e;
b = 15;
a = 5;
M = 2;
if M ==1 % Traditional with SMC
Kf = 6;
% Kf = 0.15;
ut = 1/a*(c*de+ddr+b*dth+Kf*sign(s));
elseif M ==2 % SMC with observer
Kf = 0.15;
ut = 1/a*(c*de+ddr+b*dth+1*fp+Kf*sign(s));
end
sys(1) = ut;
Función del observador de perturbaciones S: chap9_5obv.m
function [sys,x0,str,ts]=s_function(t,x,u,flag)
switch flag,
case 0,
[sys, x0,str,ts] = mdlInitializeSizes;
case 1,
sys = mdlDerivatives(t,x,u);
case 3,
sys = mdlOutputs(t,x,u);
case{2,4,9}
sys = [];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts] = mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates =2;
sizes.NumDiscStates =0;
sizes.NumOutputs =1;
sizes.NumInputs =4;
sizes.DirFeedthrough =0;
sizes.NumSampleTimes =0;
sys = simsizes(sizes);
x0 = [0;0];
str = [];
ts = [];
function sys = mdlDerivatives(t,x,u)
r = sin(t);
dr = cos(t);
ddr = -sin(t);
ut = u(1);
dth = u(3);
x2 = dr - dth;
K1 = 1500;
K2 = 200;
a =5;b = 15;
sys(1) = K1*(x2-x(2));
sys(2) = x(1)-b*x(2)-a*ut+K2*(x2-x(2))+ddr+b*dth+b*x(2);
function sys = mdlOutputs(t,x,u)
sys(1) = x(1);
Función del objeto controlado S: chap9_5plant.m
function [sys,x0,str,ts] = s_function(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts] = mdlInitializesSizes;
case 1,
sys = mdlDerivatives(t,x,u);
case 3,
sys = mdlOutputs(t,x,u);
case{2,4,9}
sys = [];
otnerwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts] = mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates =2;
sizes.NumDiscStates =0;
sizes.NumOutputs =3;
sizes.NumInputs =1;
sizes.DirFeedthrough =0;
sizes.NumSampleTimes =0;
sys = simsizes(sizes);
x0 = [0;0];
str = [];
ts = [];
function sys = mdlDerivatives(t,x,u)
ut = u(1);
b = 15;
a = 5;
f = 5+0.15*sin(t);
ddth = -b*x(2)+a*ut-f;
sys(1)=x(2);
sys(2)=ddth;
function sys = mdlOutputs(t,x,u)
f = 5+0.15*sin(t);
sys(1) = x(1);
sys(2) = x(2);
sys(3) = f;
Programa de dibujo: chap9_5plot.m
close all;
figure(1);
subplot(211);
plot(t,y(:,1),'r',y(:,2),'b');
xlabel('time(s)');
ylabel('Position tracking');
subplot(212);
plot(t,y(:,1)-y(:,2),'r');
xlabel('time(s)');
ylabel('Position tracking error');
figure(2);
plot(t,ut(:,1),'r');
xlabel('time(s)');
ylabel('Control input');
figure(3);
plot(t,f(:,3),'r',t,f(:,4),'b');
xlabel('time(s)');
ylabel('f and fp');
El diagrama de simulación de Simulink y el archivo m de la función de función S correspondiente se han empaquetado y cargado en el recurso. El código se ha modificado ligeramente. Descárguelo si es necesario.