Design d'un servo-contrôleur LQG
Cet exemple vous montre comment concevoir un servo-contrôleur pour le système suivant.
Le système physique a trois états (x), deux entrées de contrôle (u), deux entrées aléatoires (w), une sortie (y), une sortie de mesure du bruit (v), et les équations d'état et de mesure suivantes :
où
Le système a les données de covariance du bruit suivantes :
Utilisez la fonction de coût suivante pour définir le compromis entre les performances du tracker et la consommation :
Pour concevoir un servo contrôleur LQG pour ce système :
Créez la représentation d'état en saisissant ce qui suit dans la fenêtre de commande 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]);
Construisez le gain optimal par retour d'état avec la fonction de coût indiquée en tapant les commandes suivantes :
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);
Construisez l'estimateur d'état de Kalman avec les données de covariance du bruit indiquées en tapant les commandes suivantes :
Qn = [4 2;2 1]; Rn = 0.7; kest = kalman(sys,Qn,Rn);
Connectez l'estimateur d'état de Kalman et le gain optimal par retour d'état pour former le servo-contrôleur LQG en tapant la commande suivante :
Cette commande renvoie le servo-contrôleur LQG suivant :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.