présentation utilisée en cours

publicité
Polytech'Nice-Sophia, Départements S.I et M.A.M. Cours de 4ème année :
Commande par Ordinateur – séance 2 : Représentation d’état de Lunar Lander
Établir et implémenter les équations discrétisées de
Lunar Lander durant l’alunissage.
Contenu de cette séance :
• Équations différentielles de Lunar Lander durant l’alunissage
• Représentation d'état de Lunar Lander sous la forme de commande
• Discrétisation de l’équation d’état de Lunar Lander
• Retour à l’équilibre et étude de stabilité de Lunar Lander
• Détails tirés des sources de l’animation ‘lunarlander.fla’
• En TD, début du projet : il s’agit d’implémenter les équations
discrétisées du processus dans l’animation et la commande manuelle.
* cf. http://cours.polytech.unice.fr/intcom/2.seance/REtat.ppt
version du 21/04/2017
Page 1
On écrit les équations différentielles de Lunar Lander (LL) en appliquant
la seconde loi de Newton ou relation fondamentale de la dynamique :
•
•
•
•
•
•
LL (x, y) centre de gravité de Lunar Lander



v  x i  y j vecteur vitesse de LL
m=massevide+massecarburant masse de LL,
(massevide=6839kg, massecarb =816.5kg)


force appliquée à LL : f   j mglune
glune= 1.6 m/s2 pesanteur lunaire,
Éjection des gaz à la vitesse : ve  4500 ms 1
–
Horizontalement :
–
Verticalement :


vex i  ve i


vex i  ve i


vey j  ve j


vey j  ve j
•
Vitesses des gaz dans le repère (O,x,y):
•
Équation de Lunar Lander :


v  vex i


v  vey j



dp d (mv )

  j mglune
dt
dt
version du 21/04/2017
y

v
LLx, y 
m

 j mglune

j
O i

v

vex i
x


v  vex i
page 2
On évalue la variation de la quantité de mouvement de
Lunar Lander entre les instants t et t+dt
•
•


L’équation de Lunar Lander s’écrit : dp  mglune j  dt
Entre t et t+dt, le réacteur horizontal éjecte une masse dmx de
carburant, et le réacteur vertical éjecte dmy :
dm  dmx  dm y


dp  d (mv ) 
 
 
 

(m  dm)  (v  dv )  dmx  (vex i  v )  dmy  (vey j  v )  mv





 mdv  dm  dv  dmx vex i  dmy vey j  mglune j  dt



dv dmx  dm y 
(avec dm  dv  0)
m 
vex i 
vey j  mglune j
dt
dt
dt

 
dv d 2 x  d 2 y 
 2 i  2 j  xi  yj
dt dt
dt
version du 21/04/2017
page 3
On en déduit les équations différentielles de Lunar Lander


dmx  dmy 
dv
d 2x  d 2 y 
m
 m( 2 i  2 j )  
vex i 
vey j  mglune j
dt
dt
dt
dt
dt
mx  m x  vex
my  m y  vey  mglune
x  m x  vex / m
y  m y  vey / m  g lune
x  a x  
y  a y    glune
Équations différentielles de Lunar Lander
a x   sgn( vex )  m x
a y   sgn( vey )  m y
ax et ay : débits de carburant dans les réacteurs, en kg/s

véjection
m
 0.5887 ms1kg 1
version du 21/04/2017
 : coefficient de poussée des réacteurs
page 4
On traduit les équations différentielles de Lunar Lander sous la
‘forme de commande’ de la représentation d’état
Principe : si on construit le vecteur d’état X en prenant x, y et leurs dérivées
premières , on obtient la forme de commande de la représentation d’état.
Note: tout changement de repère dans l’espace d’état (espace de dimension 4 ici) conduit à une
forme différente de la représentation d’état des équations de Lunar Lander.
 x
 
 x 
X (t )  X    

y
 
 y 
 
 x  0
  
 x  0

X  
y 0
  
 y  0
  
1
0
0
0
version du 21/04/2017
0
0
0
0
dX

X
 AX  Ba
dt
s  C X  Da  X
0  x   0
  

0  x  


1  y   0
   
0  y  0
0
ax
0  




0   a y  g lune /  


1

0
s
0

0

0
1
0
0
0
0
1
0
0

0
XX

0

1 
page 5
On discrétise l’équation différentielle horizontale de Lunar Lander
x    ax
Principe de l’opération de discrétisation:
• on résout entre 0 et Te, avec ax=ax0 constant, et x(0)=x0 et vx(0)=vx0
• on généralise entre nTe et (n+1)Te
x    a x 0
x    a x 0  t  x0  x (Te )  x1  x0  Tea x 0
2
t2
Te


x (t )  x0  x0t   a x 0  x (Te )  x1  x0  x0Te  
ax0
2
2
2



T
 xn1   1 Te   xn   e 
   
      2   a xn

 xn1   0 1   xn   Te 


X n1  A  X n  B  axn
version du 21/04/2017
page 6
Discrétisation de Lunar Lander durant l’alunissage :
• L’équation verticale étant :
• L’équation discrétisée est:
y    a y  glune    (a y  glune /  )
2



T
 yn 1   1 Te   yn   e 
g

  
      2   (a yn  lune )

 y n 1   0 1   y n   Te 


• On en tire la représentation d’état de Lunar Lander discrétisée :
 X n1  A  X n  B U n

 sn  C  X n
 xn 
 
 x 
Xn   n 
y
 n 
 y n 
 1 Te

0 1
A
0 0

0 0

 Te 2 / 2
0 0
0 



 a xn



T
0
0 0
e
U n  
gl
B

2

a

0

T
/
2
yn
1 Te
e








0

T
0 1
e






sn  X n
• Pour discrétiser avec Scilab, on utilise la fonction dscr(.):
> A= ?, B=?, C=?, D=?, Te= ?
> LL= syslin(‘c’,A,B,C,D), puis > LLdiscret=dscr(LL,Te);
version du 21/04/2017
page 7
Solution de l’équation d’état d’un processus discrétisé
•
•
connaissant l’état initial X0 et les vecteurs de commande Uk successifs appliqués
pour k>=0, on sait calculer la trajectoire suivie par le vecteur d’état pour k>=0 :
Solution :
X 0 ,U 0
X 1  A  X 0  B U 0
X 2  A  X 1  B  U1  A2  X 0  A  B  U 0  B  U1

X n  A  X 0  k 0 Ank  B U k
n
•
•
n 1
Le premier terme contient l’effet de la condition initiale X0, le second contient
l’effet des commandes Uk successifs entre k=0 et k=n-1
D’où la dénomination de vecteur d’état pour Xn.
version du 21/04/2017
page 8
Conséquence: trajectoire du retour à l’équilibre
•
•
État d’équilibre : c’est quand le vecteur d’état est nul
Test du retour à l’équilibre : partant de l’état X(0)=X0, on résout l'équation
d'état avec une entrée de commande nulle, soit Uk=0, pour k positif ou nul :
X k  AX k 1  A2 X k 2    Ak X 0
•
•
•
Stabilité EBSB (Entrée bornée Sortie Bornée) : le processus est stable au sens
E.B.S.B. si la trajectoire {Xk, k>0} converge vers l’état d’équilibre (origine de
l'espace d'état Rn), il est instable sinon. Cela signifie qu'une Entrée Bornée (i.e.
dont l'amplitude reste finie) détermine une sortie bornée également.
La stabilité dépend exclusivement de la matrice d'état :
– pour que Ak tende vers zéro quand k tend vers l’infini, il faut et il suffit que
toutes les valeurs propres de la matrice A soient en module strictement
inférieur à un.
d'où le critère de stabilité:
– un processus est stable (au sens E.B.S.B.) si et seulement si toutes les valeurs
propres de sa matrice d'état sont strictement inférieures à un en module.
– Il suffit d’une valeur propre de module supérieur ou égal à un pour rendre un
processus instable au sens EBSB
version du 21/04/2017
page 9
Détails d’implémentation de ces équations dans Lunar Lander (à
télécharger avec le code source ActionScript sur la page du cours)
Origine
écran
• t=0 s
• t=0 : x=45m, vx=1m/s, y=51m, vy= -1m/s
•glune= 1.6 ms-2, pesanteur lunaire
• Te=40 ms, période d’échantillonnage
• x et y, coordonnées du centre de gravité de LL,
l’origine du repère est en bas, et à gauche
• vx et vy, composantes horizontale et verticale de la
vitesse de LL
– vitesse d’impact < 2 m/s, soft landing
– vitesse impact < 12 m/s, hard landing
– vitesse impact >12 m/s crash ! You killed crew !
• quatre réacteurs, Droite, Gauche, Haut et Bas
• ax et ay, commandes horizontale et verticale des
réacteurs de LL, débit de carburant (en kgs-1)
– ax>0, vx augmente, réacteur G utilisé
– ax<0, vx diminue, réacteur D
– ay>0, vy augmente, réacteur B
– ay<0, vy diminue, réacteur H
– 50 kgs-1, maximum valeur absolue de ax et ay
•ax et ay sont constantes durant Te, d’où la consommation de carburant durant Te : Te*(|ax|+|ay|)
•  = ve/m est le rapport entre les débits de carburant ax et ay et l’accélération générée
• ve=4500 ms-1, est la vitesse d’éjection des gaz
• m = Mvide+Mfuel = 6839 kg+ 816.5 kg est la masse
totale de Lunar Lander
Origine
repère
x,y=0,0
version du 21/04/2017
page 10
Détails du code source de l’animation Lunar Lander
•
Animation Flash ‘lunarlander.fla’ :
– cadence : 25 images par seconde
– taille de la scène : 800 pixels de largeur par 600 pixels de hauteur
•
•
•
Une seule image dans le scénario qui inclut le script ‘lunarlander.as’
Le module lunaire myLander est instancié de la classe Lander de ‘Lunar.as’.
La classe Lander contient :
– Des propriétés, dont : this.massEmpty = 6839; this.maxThrust= 50; etc ..
– Des méthodes, dont evolveOneTimeStep() qui calcule l’évolution de myLander:
var dt:Number= this.Te/1000;
this.t += dt;
…
// erg est le fameux , this.com.x et this.com.y sont les débits de carburant
ax= this.com.x*this.erg;
ay= this.com.y*this.erg - Constants.g); // g défini dans ‘Constants.as’
…
// évolution du processus
var xPos= xPos+ dt*vx+ 0.5*dt*dt*ax;
var yPos= yPos+ dt*vy+ 0.5*dt*dt*ay;
var vx= vx+dt*ax;
var vy= vy+dt*ay;
version du 21/04/2017
page 11
Détails des sources de l’animation Lunar Lander
• Consommation de carburant : durant Te, c’est : (abs(this.com.x)+abs(this.com.y))*Te
– function useFuel (dt:Number): Void {
this.remainingFuel -= (Math.abs(this.com.x)+ Math.abs(this.com.y))*dt;
• Placement de LL sur la scène de l’animation : il faut décaler l’origine des
ordonnées, et traduire les pixels en mètres :
– var pixPerMeter = 7; // sept pixels égalent un mètre
– function updateGame ():Void, dans Utils.as
var yReal:Number = _root.myLander.pos.y;
…
_y= 0.90*this.stageH – yReal*pixPerMeter; //rappel stageH égale 600 pixels
• Commande manuelle des réacteurs, dans ‘commandeOrdinateur.as’, :
– switch (modeControle) {
case 0 : // commande manuelle (clavier 'm')
this.com.x = this.ref.x*this.maxThrust;
this.com.y = this.ref.y*this.maxThrust;
break; …
version du 21/04/2017
page 12
L'équation d'état sous la forme de commande : généralisation de
l’équation différentielle de degré 1 (processus du premier ordre)
•
équation différentielle d’un processus de constante de temps t et de gain a:
x a
tx  x(t )  au(t ) 
 X (t )  x(t ), x   u(t )
t
•
t
L’équation différentielle suivante du processus P2 du second degré peut être
décrite par une équation matricielle du premier degré, comme suit :
x  2m0 x  0 2 x (t )  g0 2u(t ) ( P 2)
 x   0
avec X   , X  
2



x
 
 0
•
•
1 
 0 
 X  
u
2

2m0 
 g0 
X(t), vecteur constitué de x(t) et de sa dérivée, décrit complètement l’état du
processus sous sa ‘forme de commande’
L’équation différentielle matricielle est l’équation d’état (EE) du processus P2
sous la forme de commande
version du 21/04/2017
page 13
Calcul du retour à l’équilibre de Lunar Lander : en t=0 depuis
l’état initial X0, on coupe les réacteurs. Quelle est la trajectoire?
•
sans réacteurs ne signifie pas Un=0, car glune reste non nul => LL s’écrase
0



X n1  A  X n  B U n  A  X n  B  
  Te glune /  
X n  A  X 0  k 0 A
n
n 1
nk
 0 
 B   Te g lune 


  
sn  CX n
•
Pour savoir si l’animation et les équations donnent des résultats concordants, où
s’écrase Lunar Lander, au bout de combien de temps de vol, et avec quelle vitesse
d’impact ?
– Où
– Quand
– Vitesse d’impact
version du 21/04/2017
page 14
Exercice : analyse de la matrice d'état de Lunar Lander
 1 Te

0 1
A
0 0

0 0

0 0

0 0
1 Te 

0 1 
 1 Te

0 1
A2  
0 0

0 0

0 0   1 Te
 
0 0  0 1

1 Te   0 0
 
0 1   0 0
•
déterminant de A :
•
équation caractéristique de A:
•
valeurs propres de A :
•
Théorème de Cayley Hamilton
•
Lunar Lander est il stable au sens EBSB ?
version du 21/04/2017
0 0   1 2Te
 
0 0  0 1

1 Te   0 0
 
0 1   0 0
0 0 

0 0 
1 2Te 

0 1 



Ak  










page 15
Un processus d’ordre n possède autant de représentations d’état
que de changements de base dans Rn
Tout changement de base dans l’espace d’état Rn détermine une nouvelle représentation d'état du même processus. Soit la matrice P inversible avec Xk=P*X’k
1
1
X 'k 1  P APX 'k  P Ba k
yk  CPX 'k
• Les matrices d'état, de commande et d'observation sont modifiées par le changement
de base, ainsi que le vecteur d'état.
• La matrice d'état P-1AP est diagonale, ou diagonale par blocs, dans une base de
vecteurs propres de A, on trouve les valeurs propres de A sur la diagonale.
• Les propriétés suivantes peuvent être démontrées :
• le déterminant de A est égal au produit des valeurs propres
• la trace de A est égale à la somme des valeurs propres
version du 21/04/2017
page 16
Téléchargement