É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 09/04/2017
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 vecteur vitesse de LL m=massevide+massecarburant masse de LL, (massevide=6839kg, massecarb =816.5kg) force appliquée à LL : glune= 1.6 m/s2 pesanteur lunaire, Éjection des gaz à la vitesse : Horizontalement : Verticalement : Vitesses des gaz dans le repère (O,x,y): Équation de Lunar Lander : version du 09/04/2017
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 : Entre t et t+dt, le réacteur horizontal éjecte une masse dmx de carburant, et le réacteur vertical éjecte dmy : version du 09/04/2017
On en déduit les équations différentielles de Lunar Lander ax et ay : débits de carburant dans les réacteurs, en kg/s e : coefficient de poussée des réacteurs version du 09/04/2017
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. version du 09/04/2017
On discrétise l’équation différentielle horizontale de Lunar Lander 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 version du 09/04/2017
Discrétisation de Lunar Lander durant l’alunissage : L’équation verticale étant : L’équation discrétisée est: On en tire la représentation d’état de Lunar Lander discrétisée : 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 09/04/2017
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 : 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 09/04/2017
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 : 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 09/04/2017
Détails d’implémentation de ces équations dans Lunar Lander (à télécharger avec le code source ActionScript sur la page du cours) 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 consom- mation de carburant durant Te : Te*(|ax|+|ay|) e = ve/m est le rapport entre les débits de carbu- rant 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 écran t=0 s Origine repère x,y=0,0 version du 09/04/2017
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 e, 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 09/04/2017
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 09/04/2017
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: 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(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 09/04/2017
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 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 09/04/2017
Exercice : analyse de la matrice d'état de Lunar Lander 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 09/04/2017
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ésen-tation d'état du même processus. Soit la matrice P inversible avec Xk=P*X’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 09/04/2017