Progettazione di un servo controller LQG
Questo esempio mostra come progettare un servo controller per il seguente sistema.
L’impianto ha tre stati (x), due input di controllo (u), due input casuali (w), un output (y), rumore di misura per l’output (v) e le seguenti equazioni di stato e di misura:
dove
Il sistema ha i seguenti dati di covarianza del rumore:
Utilizzare la seguente funzione di costo per definire il bilanciamento tra la performance del tracker e lo sforzo di controllo:
Per progettare un servo controller LQG per questo sistema:
Creare il sistema stato-spazio digitando quanto segue nella finestra dei comandi di MATLAB:
A = [0 1 0;0 0 1;1 0 0]; B = [0.3 1;0 1;-0.3 0.9]; G = [-0.7 1.12; -1.17 1; .14 1.5]; C = [1.9 1.3 1]; D = [0.53 -0.61]; H = [-1.2 -0.89]; sys = ss(A,[B G],C,[D H]);
Costruire il guadagno ottimale di feedback dello stato tramite la data funzione di costo digitando i seguenti comandi:
nx = 3; %Number of states ny = 1; %Number of outputs Q = blkdiag(0.1*eye(nx),eye(ny)); R = [1 0;0 2]; K = lqi(ss(A,B,C,D),Q,R);
Costruire lo stimatore dello stato di Kalman con i dati noti della covarianza di rumore digitando i seguenti comandi:
Qn = [4 2;2 1]; Rn = 0.7; kest = kalman(sys,Qn,Rn);
Collegare lo stimatore dello stato di Kalman e il guadagno ottimale di feedback dello stato in modo da formare il servo controller LQG digitando il seguente comando:
Questo comando restituisce il seguente servo controller LQG:trksys = lqgtrack(kest,K)
>> trksys = lqgtrack(kest,K) a = x1_e x2_e x3_e xi1 x1_e -2.373 -1.062 -1.649 0.772 x2_e -3.443 -2.876 -1.335 0.6351 x3_e -1.963 -2.483 -2.043 0.4049 xi1 0 0 0 0 b = r1 y1 x1_e 0 0.2849 x2_e 0 0.7727 x3_e 0 0.7058 xi1 1 -1 c = x1_e x2_e x3_e xi1 u1 -0.5388 -0.4173 -0.2481 0.5578 u2 -1.492 -1.388 -1.131 0.5869 d = r1 y1 u1 0 0 u2 0 0 Input groups: Name Channels Setpoint 1 Measurement 2 Output groups: Name Channels Controls 1,2 Continuous-time model.