Polytech'Nice-Sophia, Cours de Commande par Ordinateur, séance n°4 Jean-Paul Stromboni, SI4 SAR et VIM et MAM4 VIM Commande en boucle fermée et par retour d’état de l'alunissage de Lunar Lander Contenu du cours : 1. 2. 3. 4. Principe de la commande par retour d'état Effet de la discrétisation sur les valeurs propres Reproduire le temps de réponse d’une valeur propre réelle Reproduire le temps de croisement de deux valeurs propres complexes conjuguées 5. Commande par retour d’état de la vitesse de Lunar Lander 6. Comparaisons de deux retours d’état pour l’alunissage * document http://cours.polytech.unice.fr/intcom/4.seance/RetourEtat.ppt et script solution du TD 4-2012.doc : TD4RetourEtat.sce et TD4.sce. 22/04/2017 Page 1 Principe de la commande par retour d’état • À tout instant, le vecteur de commande est calculé à partir de la valeur du vecteur d’état retourné par les capteurs, et du vecteur d’état désiré, ou consigne. • Soit l’équation d’état : X n 1 Ad X n BdU n • Voici la loi de commande par retour d’état : • • • • U n K Cn X n Cn est la consigne, ou référence, de la commande Cn – Xn est l’erreur de commande K est la matrice de commande ou de gain du retour d’état il s’agit d’un système en boucle fermée, loi de commande+équation d’état, ou encore d’une contre réaction (feedback) 22/04/2017 page 2 Formulation du retour d'état pour Lunar Lander X n 1 axn 1 Ad X n BdU n Ad X n Bd a g / yn lune a xn a K Cn X n yn X n 1 • • • • 2 0 (3) ( Ad Bd K ) X n Bd KCn Bd g lune / Ad- BdK est la matrice d’état du système bouclé BdK est la matrice de commande K est une matrice (2 lignes, 4 colonnes) Question : comment calculer K ? 22/04/2017 Page 3 Calcul de K par placement des valeurs propres de la matrice d’état du système bouclé (pole mapping) • Les valeurs propres vd de la matrice d’état, qui sont aussi les pôles de la fonction de transfert, ou encore les racines du polynôme caractéristique, déterminent le comportement dynamique d’un système en temps discret : – – La stabilité au sens EBSB (si |vd| < 1) La rapidité (plus la partie réelle de vd est faible en valeur absolue, et plus le temps de réponse est petit) • – La forme du régime transitoire : • • • Si vd=0, on obtient la réponse pile, réponse en temps fini ! Une valeur propre vd réelle donne un régime transitoire apériodique Valeurs propres complexes conjuguées vd et vd* : régime sinusoïdal amorti On calcule K de façon à imposer les valeurs propres de Ad-BdK 22/04/2017 Page 4 Effet de la discrétisation sur les valeurs propres • Soit un processus en temps continu de matrice d’état A discrétisé à la période d’échantillonnage Te. On démontre que Ad, la matrice d’état du processus discrétisé vaut : 2 Ad e ATe • n A2Te AnTe I ATe ... ... 2 n! En conséquence, on obtient les valeurs propres vd de la matrice Ad à partir des valeurs propres v de la matrice A en utilisant la relation : vd e vTe • On utilise ce résultat pour reproduire dans un système discret le comportement dynamique connu d’un processus continu : 1. Du premier ordre, c’est-à-dire doté d’une unique valeur propre v réelle 2. Du second ordre, c’est-à-dire doté d’une paire de valeurs propres complexes conjuguées : v, v* 22/04/2017 Page 5 Reproduction du comportement apériodique du premier ordre : une valeur propre réelle –a imposant un temps de réponse 3/a s as(t ) s(t ) e at s(0) p a racine équation caractéristique s(tr 5% ) 0.05s(0) tr 5% 3 / a sk 1 e aTe sk s(kTe ) sk e akTe z e aTe une valeur propre p= - a, a = 10 Hz valeur propre z=exp(-a*Te), a= 10 Hz, Te=1/25s 1 1 0.8 0.8 0.6 0.6 observation observation racine équation caractéristique 0.4 0.2 0.4 0.2 0 0 0 0.2 0.4 0.6 0.8 1 0 temps t (s) Quelle est la relation entre z et p ? 22/04/2017 0.2 0.4 0.6 0.8 1 temps t (s) z e aTe eTe p Page 6 Reproduction du comportement indiciel sinusoïdal amorti du second ordre : deux valeurs propres complexes conjuguées s(t ) 2m0 s(t ) 0 2 s(t ) 0 2e(t ), 0 m 1 p2 2m0 p 0 0, 0 m 1 2 z e ( p2 , p2 ) m0 i0 1 m 2 ( z2 , z2 ) e m0Te e i Te p 1 m 2 0Te sn2 ( z2 z2 )sn1 z2 z2 sn 1 ( z2 z2 ) z2 z2 en m=.707, w0=10rd/s m=.707, w0=10rd/s, Te=1/25s 1.4 1.4 tc 1.2 1.2 1 observation observation 1 0.8 tr5% 0.6 0.8 0.6 0.4 0.4 0.2 0.2 0 0 0 0.2 0.4 0.6 temps t (s) 22/04/2017 0.8 1 0 0.2 0.4 0.6 0.8 1 temps t (s) Page 7 Étude de l’effet de l'amortissement réduit m et de la pulsation propre 0 sur le temps de réponse à 5% (en abscisse, on porte t/ 0 et non t) ( p2 , p2 ) m0 i0 1 m 2 , 0 m 1 ( p2 , p3 ) m0 0 m 2 1, m 1 Amplitude Step Response 1.8 1.75 1.7 1.65 1.6 1.55 1.5 1.45 1.4 1.35 1.3 1.25 1.2 1.15 1.1 1.05 1 0.95 0.9 0.85 0.8 0.75 0.7 0.65 0.6 0.55 0.5 0.45 0.4 0.35 0.3 0.25 0.2 0.15 0.1 0.05 0 ¬ m=0.1 m 0.1 ¬ m=0.456 0.456 0.707 ¬ m=0.707 1 ¬ m=1 2 ¬ m=2 0 1 2 3 4 5 6 7 8 9 101112131415161718192021222324252627282930 Time (sec.) 22/04/2017 Page 8 tr5% Abaque tr 5%0 en fonction de l’amortissement réduit m tracé par Matlab (on note qu’au minimum on a tr5%= 2.93/0 et tc= 3.4/0) 22/04/2017 Page 9 Placement des pôles (valeurs propres) avec Scilab • Après avoir déterminé les valeurs propres souhaitées pour la matrice d’état du système bouclé, il faut calculer la matrice K – La fonction ‘ppol’ de Scilab calcule la matrice K telle que les valeurs propres de la matrice Ad-BdK sont celles d’un vecteur vp=[v1,v2,v3,v4] imposé. – Restriction de ‘ppol’ : on doit appliquer ppol séparément pour les 2 entrées de commande de Lunar Lander. En fait K=[Kh,0,0;0,0,Kv] avec • Kh=ppol(ad(1:2,1:2), bd(1:2,1), vz(1:2)); • Kv=ppol(ad(3:4,3:4), bd(3:4,2), vz(3:4)); • Application à la commande de la vitesse de Lunar Lander avec Matlab et la fonction ‘place’ (au lieu de ‘ppol’ en Scilab) 22/04/2017 Page 10 Réglage de la commande en vitesse de Lunar Lander (saisir ‘v’ au clavier pour ce mode de contrôle) • Les équations à considérer (d’ordre deux, donc plus simples): x ax y a y glune x x 0 ax Bu V V y y 0 a y glune / 1 0 Vn Te Bu n • La discrétisation donne : Vn1 0 1 • k1 0 La loi de commande est un K (cn Vn ) avec K 0 k2 0 1 Tek1 A BK • La matrice d’état est : 0 1 Tek2 • Deux valeurs propres : 1 Te k1 , 1 Te k2 • Exemple : fixer des valeurs propres nulles : k1 k2 22/04/2017 1 Te Page 11 Calcul de la commande en vitesse de Lunar Lander avec deux valeurs propres nulles (réponse pile de durée Te) Pour calculer le gain K du retour d’état donnant la réponse pile, Matlab utilise la fonction place(.) car il y a plusieurs entrées de commandes. La fonction ltiview de Matlab calcule le retour à l'équilibre depuis l'état x0=[1;1]. retour à l'équilibre depuis x =1, valeur propre=0 0 vxn 1 0.5 0 0 0.2 0.4 0.6 0.8 n° période échantillonnage (Te=0.04 s) retour à l'équilibre depuis x =1, valeur propre=0 0 1 vyn mvide= 6839; mfuel=816.5; m= mvide + mfuel ve=4500; erg = ve/m; Te=0.04; A=zeros(2); B=[erg,0;0,erg]; C=eye(2); ll=ss(A,B,C,0); lld=c2d(ll,Te); ad=get(lld,'a') bd=get(lld,'b') % spécification des valeurs propres vecpol=[0 0] K=place(ad,bd,vecpol); % donne k1= 42.53, k2= 42.53 x0=[1;1]; sbf=ss(ad-bd*K, bd*K, C, 0, Te); ltiview('initial',sbf,x0) maxCom=max(K) % donne maxCom=42.53 0.5 0 0 0.2 0.4 0.6 0.8 n° période échantillonnage (Te=0.04 s) 22/04/2017 Page 12 Calcul de la commande en vitesse de Lunar Lander avec deux valeurs propres réelles et non nulles : 0.5 et 0.75 retour à l'équilibre depuis x0=1, valeur propre=0.5 1 xn 0.8 0.6 0.4 0.2 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 n° période échantillonnage (Te=0.04 s) retour à l'équilibre depuis x =1, valeur propre=0.75 0 0.8 0.6 0.4 0.2 0 22/04/2017 0 1 xn mvide= 6839; mfuel=816.5; m= mvide + mfuel ve=4500; % vitesse éjection gaz erg = ve/m; Te=0.04; A=zeros(2); B=[erg,0;0,erg]; C=eye(2); ll=ss(A,B,C,0); lld=c2d(ll,Te); ad=get(lld,'a') bd=get(lld,'b') % choix des valeurs propres vecpol=[0.5, 0.75] K=place(ad,bd,vecpol); % donne k1= 21.27, k2= 10.63 x0=[1; 1]; initial(ss(ad-bd*K,bd*K,C,0,Te),x0) maxCom=max(K) % maxCom= 21.27 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 n° période échantillonnage (Te=0.04 s) 1 Page 13 Commande en vitesse de LL avec deux valeurs propres complexes conjuguées (m=sqrt(2)/2, w0=1rd/s) valeurs propres complexes conjuguées, m=sqrt(2)/2, =1rd/s 0 1.2 1 0.8 vitesse horizontale (m/s) %% valeurs propres complexes conj. mvide= 6839; mfuel=816.5; m= mvide + mfuel ve=4500; erg = ve/m; Te=0.04; A=zeros(2); B=[erg,0;0,erg]; C=eye(1,2); ll=ss(A,B,C,0); lld=c2d(ll,Te); ad=get(lld,'a') bd=get(lld,'b') % calcul des valeurs propres pol=[-1+i, -1-i]*sqrt(2)/2 vecpol=exp(Te*pol) K=place(ad,bd,vecpol); % x0=[1;-1]; initial(ss(ad-bd*K,bd*K,C,0,Te),x0) maxCom=max(K) % maxCom = 1.206 0.6 0.4 0.2 0 -0.2 0 1 2 3 4 5 6 7 8 9 temps (sec) 22/04/2017 Page 14 Alunissage avec des valeurs propres réelles, sur les deux axes horizontal et vertical, et tr5%=4s • • • • 22/04/2017 Saisir ‘e’ au clavier pour le mode retour d’état, Le fichier Kre.txt contient 8 valeurs : 0.33, 1.11, 0.0, 0.0, 0.0, 0.0, 0.33, 1.11 On impose quatre valeurs propres réelles, telles que tr5%=4s Qu’est ce qu’on constate ? Page 15 Alunissage avec des valeurs propres complexes conjuguées, sur les axes horizontal et vertical, m=sqrt(2)/2 et tr5%=4s • Scilab a trouvé la matrice K suivante : 0.88 1.73 0.0 0.0 K 0.0 0.0 0.88 1.73 • Il y a 8 valeurs dans le fichier Kre.txt, • Les valeurs propres sont des paires complexes conjuguées avec tr5%=4s, w0=1 rd/s et m=sqrt(2)/2 • Vérifier : le temps de croisement tc vaut 4.6s quand tr5% vaut 4s 22/04/2017 Page 16