Anmerkungen zur Roboterdynamik und -steuerung (7) - Steuerung des Gleitmodus basierend auf der berechneten Drehmomentmethode

 

7. Steuerung des Gleitmodus basierend auf der Methode des berechneten Moments

        Die Methode zur Berechnung des Drehmoments wird in der Robotersteuerung häufiger verwendet. Diese Methode basiert auf den geschätzten Werten der einzelnen Elemente im Robotermodell, um das Steuergesetz zu entwerfen.

7.1 Systembeschreibung

        Das Modell des Robotermanipulators lautet:

                                                      \ tiny H \ left (q \ right) \ ddot {q} + C \ left (q, \ dot {q} \ right) \ dot {q} + G \ left (q \ right) = \ tau                                         (7,20)

Darunter \ tiny H \ left (q \ right)befinden sich die positive Trägheitsmatrix der bestimmten Masse, die \ tiny C \ left (q, \ dot {q} \ right)Coriolis-Kraft, die Zentrifugalkraft und die \ tiny G \ left (q \ right)Schwerkraft.

7.2 Gestaltung des Kontrollgesetzes

        Wenn die Trägheitsparameter des Roboters gemäß der Methode des berechneten Moments nicht bekannt sind, wird das Steuergesetz als angenommen

                                                     \ tiny \ tau = \ hat {H} \ left (q \ right) v + \ hat {C} \ left (q, \ dot {q} \ right) \ dot {q} + \ hat {G} \ left ( q \ rechts)                                          (7.21)

Wobei \ tiny \ hat {H} \ left (q \ right), \ tiny \ hat {C} \ left (q, \ dot {q} \ right)und \ tiny \ hat {G} \ left (q \ right)ist die Trägheit Parameterschätzungen \ tiny \ hat {p}berechnet \ winziges H, C.und \ winziger G.der geschätzte Wert.

        Dann lautet die Systemgleichung (7.20)

                             \ tiny H \ left (q \ right) \ ddot {q} + C \ left (q, \ dot {q} \ right) \ dot {q} + G \ left (q \ right) = \ hat {H} \ left (q \ right) v + \ hat {C} \ left (q, \ dot {q} \ right) \ dot {q} + \ hat {G} \ left (q \ right)                (7.22)

welches ist

                \ dpi {200} \ tiny \ hat {H} \ left (q \ right) \ ddot {q} = \ hat {H} \ left (q \ right) v- \ begin {bmatrix} \ tilde {H} \ links (q \ rechts) \ ddot {q} + \ tilde {C} \ links (q, \ Punkt {q} \ rechts) \ Punkt {q} + \ tilde {G} \ links (q \ rechts) = \ hat {H} \ left (q \ right) vY \ left (q, \ dot {q}, \ ddot {q} \ right) \ end {bmatrix} \ tilde {p}    (7.23)

Unter ihnen \ tiny \ tilde {H} = H- \ hat {H}, \ tilde {C} = C- \ hat {C}, \ tilde {G} = G- \ hat {G}, \ tilde {p} = p- \ hat {p}.

        Wenn der geschätzte Wert des Trägheitsparameters wird \ tiny \ hat {p}aus \ tiny \ hat {H} \ left (q \ right)reversibel, die Closed-Loop - System Gleichung (7.23) kann geschrieben werden als

                                     \ tiny \ ddot {q} = v- \ left [\ hat {H} \ left (q \ right) \ right] ^ {- 1} Y \ left (q, \ dot {q}, \ ddot {q} \ right) \ tilde {p} = v- \ varphi \ left (q, \ dot {q}, \ ddot {q}, \ hat {p} \ right) \ tilde {p}                  (7.24)

Definition

                                                                  \ tiny \ varphi \ left (q, \ dot {q}, \ ddot {q}, \ hat {p} \ right) \ tilde {p} = \ tilde {d}

Unter ihnen \ tiny \ tilde {d} = \ left [\ tilde {d} _ {1}, \ cdots, \ tilde {d} _ {n} \ right] ^ {T}, d = \ left [d_ {1} , \ cdots, d_ {n} \ right] ^ {T}.

        Nimm die Gleitfläche

                                                                         \ tiny s = \ dot {e} + \ Lambda e

Unter ihnen \ tiny e = q_ {d} -q, \ dot {e} = \ dot {q} _ {d} - \ dot {q}, s = \ left [s_ {1}, \ cdots, s_ {n} \ right] ^ {T}, \ tiny \ Lambdadie Diagonalmatrix. dann

                                          \ tiny \ dot {s} = \ ddot {e} + \ Lambda \ dot {e} = \ left (\ ddot {q} _ {d} - \ ddot {q} \ right) + \ Lambda \ dot {e } = \ ddot {q} _ {d} -v + d + \ Lambda \ dot {e}

nehmen

                                                                   \ tiny v = \ ddot {q} _ {d} + \ Lambda \ dot {e} + d                                                         (7,25)

Wo \ winzig dsoll der Vektor entworfen werden? dann

                                                                           \ tiny \ dot {s} = \ tilde {d} -d                                                               (7.26)

Wählen

                                                               \ tiny d = \ left (\ tilde {d} + \ eta \ right) sgn \ left (s \ right)

                                                                             \ tiny \ left \ |  \ tilde {d} \ right \ | \ leqslant \ tilde {d}                                                                (7.27)

Unter ihnen \ tiny \ eta> 0. dann

                                \ tiny \ dot {s} s = \ left (\ tilde {d} -d \ right) s = \ tilde {d} s- \ tilde {d} sgn \ left (s \ right) s- \ eta sgn \ left (s \ right) s \ leqslant - \ eta \ left |  s \ right | \ leqslant 0

Aus Gleichung (7.21) und Gleichung (7.25) ergibt sich das Gleitmodus-Steuergesetz

                                                       \ tiny \ tau = \ hat {H} \ left (q \ right) v + \ hat {C} \ left (q, \ dot {q} \ right) \ dot {q} + \ hat {G} \ left ( q \ rechts)                                        (7.28)

Unter ihnen \ tiny v = \ ddot {q} _ {d} + \ Lambda \ dot {e} + d, d = \ left (\ tilde {d} + \ eta \ right) sgn \ left (s \ right).

        Aus der Kontrollgesetzgleichung (7.28) ist ersichtlich, dass das durch die Synovialmembransteuerung erzeugte Rattern \ tiny \ hat {p}umso \ tiny \ left \ | p \ right \ |kleiner ist, je genauer und kleiner der Parameterschätzwert ist, wenn der Parameterschätzwert genauer ist \ tiny \ tilde {d}.

7.3 Simulationsbeispiel

        Wählen Sie das zweigliedrige Roboter-Momentarmsystem. Das dynamische Modell lautet:

                                         \ tiny M \ left (q \ right) \ ddot {q} + C \ left (q, \ dot {q} \ right) \ dot {q} + G \ left (q \ right) + F \ left (\ Punkt {q} \ rechts) + \ tau _ {d} = \ tau
Welches \ tiny q = \ begin {bmatrix} q_ {1} & q_ {2} \ end {bmatrix} ^ {T}, \ tiny \ tau = \ begin {bmatrix} \ tau _ {1} & \ tau _ {2} \ end {bmatrix} ^ {T}. nehmen

                                 \ tiny M \ left (q \ right) = \ begin {bmatrix} \ alpha +2 \ varepsilon cosq_ {2} +2 \ eta sinq_ {2} & \ beta + \ varepsilon cosq_ {2} + \ eta sinq_ {2 } \\ \ beta + \ varepsilon cosq_ {2} \ eta sinq_ {2} & \ beta \ end {bmatrix}

                                \ tiny C \ left (q, \ dot {q} \ right) = \ begin {bmatrix} \ left (-2 \ varepsilon sinq_ {2} +2 \ eta cosq_ {2} \ right) \ dot {q} _ {2} & \ left (- \ varepsilon sinq_ {2} + \ eta cosq_ {2} \ right) \ dot {q} _ {2} \\ \ left (\ varepsilon sinq_ {2} - \ eta cosq_ {2 } \ right) \ dot {q} _ {1} & 0 \ end {bmatrix}

                                \ tiny G \ left (q \ right) = \ begin {bmatrix} \ varepsilon e_ {2} cos \ left (q_ {1} + q_ {2} \ right) + \ eta e_ {2} sin \ left (q_ {1} + q_ {2} \ rechts) + \ links (\ alpha - \ beta + e_ {1} \ rechts) e_ {2} cosq_ {1} \\ \ varepsilon e_ {2} cos \ links (q_ { 1} + q_ {2} \ rechts) + \ eta e_ {2} sin \ links (q_ {1} + q_ {2} \ rechts) \ end {bmatrix}

Unter ihnen \ tiny \ alpha = I_ {1} + m_ {1} l_ {e1} ^ {2} + I_ {e} + m_ {e} l_ {ce} ^ {2} + m_ {e} l_ {1} ^ {2}, \ beta = I_ {e} + m_ {e} l_ {ce} ^ {2}, \ varepsilon = m_ {e} l_ {1} l_ {ce} cos \ delta _ {e}, \ eta = m e l 1 {ce} sin \ delta _ e.

       Die tatsächlichen physikalischen Parameterwerte des Roboterarms sind in Tabelle 7-1 aufgeführt.

                                                                              Tabelle 7-1 Physikalische Parameter von Doppelroboterarmen

\ tiny m_ {1} \ tiny l_ {1} \ tiny l_ {e1} \ tiny I_ {1} \ tiny m_ {e} \ tiny l_ {ce} \ tiny I_ {e} \ tiny \ delta _ {e} \ tiny e_ {1} \ tiny e_ {2}

1 kg

1m 1 / 2m 1 / 12kg 3 kg 1m 2 / 5kg 0 -7/12 9.81

 Das Gleitmodus-Steuergesetz (7.28) wird übernommen, und die Positionsbefehle sind jeweils \ tiny q_ {d1} = cos \ left (\ pi t \ right), q_ {d2} = sin \ left (\ pi t \ right), \ hat {H} = 0,6H, \ hat {C} = 0,6 C, \ hat {G} = 0,6 G, \ tilde {d} = 30, \ eta = 0,10, \ Lambda = \ begin {bmatrix} 25 & 0 \\ 0 & 25 \ end {bmatrix}. Die Simulationsergebnisse sind in den Abbildungen 7-9 und 7-10 dargestellt.

                                                             Abbildung 7.9 Positionsverfolgung von Doppelkraftarmen 

                                                             Abbildung 7.10 Eingang zur Steuerung des Zweikraftarms

Simulationsprogramm:

Simulink-Hauptprogramm: chap7_4sim.mdl

Kontrollgesetz-Unterprogramm: chap7_4ctrl.m

function [sys, x0,str,ts]= chap7_1ctrl(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

global nmn
nmn = 25*eye(2);
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 2;
sizes.NumInputs  = 6;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 =[];
str =[];
ts = [0 0];
function sys = mdlOutputs(t,x,u)
global nmn
qd1 = u(1);
dqd1 = -pi*sin(pi*t);
ddqd1 = -pi^2*cos(pi*t);
qd2 = u(2);
dqd2 = pi*cos(pi*t);
ddqd2 = -pi^2*sin(pi*t)
ddqd = [ddqd1;ddqd2];

dqd = [dqd1;dqd2];
ddqd = [ddqd1;ddqd2];

q1=u(3);dq1=u(4);
q2=u(5);dq2=u(6);
dq=[dq1;dq2];

e1 = qd1-q1;
e2 = qd2-q2;
e=[e1;e2];
de1 = dqd1 - dq1;
de2 = dqd2 - dq2;
de = [de1;de2];

alfa = 6.7;beta = 3.4;
epc = 3.0;eta = 0;
m1 = 1;l1 = 1;
lc1 = 1/2;I1 = 1/12;
g = 9.8;
e1 = m1*l1*lc1-I1-m1*l1^2;
e2 = g/l1;
M = [alfa+2*epc*cos(q2)+2*eta*sin(q2),beta+epc*cos(q2)+eta*sin(q2);
    beta+epc*cos(q2)+eta*sin(q2),beta];
C = [(-2*epc*sin(q2)+2*eta*cos(q2))*dq2,(-epc*sin(q2)+eta*cos(q2))*dq2;
    (epc*sin(q2) - eta*cos(q2))*dq1,0];
G = [ epc*e2*cos(q1+q2)+eta*e2*sin(q1+q2)+(alfa-beta+e1)*e2*cos(q1);
    epc*e2*cos(q1+q2)+eta*e2*sin(q1+q2)];
M0 = 0.6*M;
C0 = 0.6*C;
G0 = 0.6*G;

s = de+nmn*e;
d_up = 30;
xite = 0.10;
d = (d_up+xite)*sign(s);
v = ddqd +nmn*de+d;

tol = M0*v+C0*dq+G0;

sys(1) =tol(1);
sys(2) =tol(2);

Unterprogramm für gesteuertes Objekt: chap7_4plant.m

function [sys, x0,str,ts]= chap7_1plant(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 = 4;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 4;
sizes.NumInputs  = 2;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 0;
sys = simsizes(sizes);
x0 =[0;0;0;0];
str =[];
ts = [];

function sys = mdlDerivatives(t,x,u)
q1 = x(1);dq1 = x(2);
q2 = x(3);dq2 = x(4);
dq = [dq1;dq2];

% The model is given by Slotine and Weiping Li(MIT 1987)
alfa = 6.7;beta = 3.4;
epc = 3.0;eta = 0;
m1 = 1;l1 = 1;
lc1 = 1/2; I1=1/12;
g = 9.8;
e1 = m1*l1*lc1-I1-m1*l1^2;
e2 = g/l1;


M = [alfa+2*epc*cos(q2)+2*eta*sin(q2),beta+epc*cos(q2)+eta*sin(q2);
    beta+epc*cos(q2)+eta*sin(q2),beta];
C = [(-2*epc*sin(q2)+2*eta*cos(q2))*dq2,(-epc*sin(q2)+eta*cos(q2))*dq2;
    (epc*sin(q2) - eta*cos(q2))*dq1,0];
G = [ epc*e2*cos(q1+q2)+eta*e2*sin(q1+q2)+(alfa-beta+e1)*e2*cos(q1);
    epc*e2*cos(q1+q2)+eta*e2*sin(q1+q2)];

tol(1)=u(1);
tol(2)=u(2);

ddq = inv( M )*( tol'-C*dq-G );
sys(1) =x(2);
sys(2) =ddq(1);
sys(3) =x(4);
sys(4) =ddq(2);

function sys = mdlOutputs(t,x,u)
sys(1) = x(1);
sys(2) = x(2);
sys(3) = x(3);
sys(4) = x(4);


Unterprogramm Zeichnen: chap7_4plot.m

close all;

t = out.t.Data;
y1 = out.y1.Data;
y2 = out.y2.Data; 
tol = out.tol.Data;

figure(1);
subplot(211);
plot(t,y1(:,1),'r',t,y1(:,2),'b','linewidth',2);
xlabel('time(s)');ylabel('Angle tracking of joint 1');
subplot(212);
plot(t,y2(:,1),'r',t,y2(:,2),'b','linewidth',2);
xlabel('time(s)');ylabel('Angle tracking of joint 2');

figure(2);
subplot(211);
plot(t,tol(:,1),'r','linewidth',2);
xlabel('time(s)');ylabel('Control input 1');
subplot(212);
plot(t,tol(:,2),'r','linewidth',2);
xlabel('time(s)');ylabel('Control input 2');

 

Ich denke du magst

Origin blog.csdn.net/weixin_38452841/article/details/108773003
Empfohlen
Rangfolge