Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

16
Polytech'Nice-Sophia, Départements S.I. et M.A.M., cours de 4 ème année. Commande par Ordinateur – séance 3 : Jean-Paul Stromboni, version février 2013 Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander Dans cette séance : problème de « gouvernabilité » de l’alunissage de Lunar Lander Formulation mathématique du problème de gouvernabilité Solution du problème de gouvernabilité Illustration avec la commande horizontale normalisée de Lunar Lander Calcul et mise en œuvre dans l’animation Lunar Lander Définition du projet associé au cours Commande par Ordinateur * pour retrouver cette présentation,

description

Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander. Dans cette séance : problème de « gouvernabilité » de l’alunissage de Lunar Lander Formulation mathématique du problème de gouvernabilité Solution du problème de gouvernabilité - PowerPoint PPT Presentation

Transcript of Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

Page 1: Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

Polytech'Nice-Sophia, Départements S.I. et M.A.M., cours de 4ème année.Commande par Ordinateur – séance 3 : Jean-Paul Stromboni, version février 2013

Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

Dans cette séance :• problème de « gouvernabilité » de l’alunissage de Lunar Lander• Formulation mathématique du problème de gouvernabilité• Solution du problème de gouvernabilité• Illustration avec la commande horizontale normalisée de Lunar Lander• Calcul et mise en œuvre dans l’animation Lunar Lander• Définition du projet associé au cours Commande par Ordinateur

* pour retrouver cette présentation, http://cours.polytech.unice.fr/intcom/3.seance ainsi que les scripts TD3Blin.sce et Scilab2Flash.sce, solutions Scilab de TD3

Page 2: Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

22/04/23 page 2

Problème de l’alunissage de Lunar Lander en boucle ouverte et avec un horizon fini

• À l’instant t = 0, les capteurs de Lunar Lander indiquent sa position et sa vitesse regroupées dans le vecteur d’état X0

• Peut-on utiliser les entrées de commandes pour atteindre le point d’alunissage et la vitesse d’impact souhaités (dans Xh) au bout de h périodes d’échantillonnage seulement ?

• On rappelle l’équation d’état discrétisée de Lunar Lander :

• S’il existe une solution, quelque soient X0 et Xh, le processus d’alunissage de Lunar Lander est ‘entièrement gouvernable’

• et h est l’horizon (fini) de l’alunissage (de durée hTe)

0

0

0

0

0

yyxx

X

0000

h

h

h

h

h

yyxx

X

nnn UBXAX 1

luneny

nx

e

e

e

e

n

n

n

n

e

e

n

n

n

n

ga

a

T

TT

T

yyxx

T

T

yyxx

02

0

0

02

1000100

0010001

2

2

1

1

1

1

Page 3: Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

22/04/23 page 3

Formulation mathématique du problème de gouvernabilité lors de l’alunissage de Lunar Lander

1,2,2,4,1,4

,1,2),2,4(,)4,4(,)1,4(

0

12

1

0

10

1201

0

3

1002

112

001

0

12

2

1

hUhGyGUy

GUXAXy

u

uu

BABBAXAX

BUABUBUAXAX

XBUABUXABUAXX

BUAXXX

uu

UUBAX

BUAXX

hh

h

hhh

hhhh

h

k

kkkk

kkk

Il faut trouver U vérifiant y=GU.G : matrice de gouvernabilité, U : vecteur des commandes successivesh : horizon de la commandey dépend de X0, Xh, et A

Page 4: Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

22/04/23 page 4

Importance de la matrice de gouvernabilité G• Il s’agit de trouver un vecteur U de taille 2h vérifiant :

• G est la matrice d’une application de R2h dans R4, et possède 4 lignes et 2h colonnes, soit gk le kième vecteur colonne de G :

],,,[

,]...;;[]...;;[

,

,

21

21210110

40

BABBABAG

RuuuUUUU

RXAXy

GUy

hh

hhh

hh

12

0

1210 ],,[,

h

k kk

h

G

guy

gggGGUyU

Page 5: Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

22/04/23 page 5

Conditions d’existence d’une ou plusieurs solutions au problème de gouvernabilité de Lunar Lander

• S’il existe quatre vecteurs colonnes linéairement indépendants dans la matrice G, ces vecteurs forment une base de R4, et il existe au moins une solution U :– soient ga, gb, gc et gd ces quatre vecteurs,

– D’où la solution U où toutes les composantes sont nulles sauf les quatre composantes ua, ub, uc, et ud puisque :

• On dit aussi que G est de rang 4, et que G est de rang complet

ddccbbaadcba guguguguyRuuuuRy ,,,,,4

ddccbbaah

k kk guguguguguGUy

12

0

Page 6: Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

22/04/23 page 6

Solution du problème de gouvernabilité de Lunar Lander

• Si h = 2, G est carrée, si elle est de rang 4, elle est inversible, et il existe une et une seule solution

• Si h > 2, et G de rang 4, la matrice (GGT)-1 existe (cf. démo ci-dessous) d’où une solution du problème de gouvernabilité :

• Vérification :

• G+ est une pseudo inverse à droite de G car :

• Démonstration de l’existence de (GGT)-1 : – l'application U y= GU engendre R4, et détermine une application surjective de R2h dans R4 :

pour tout y, il existe au moins un vecteur U tel que y= GU. – L’application y U= GTy est une injection de R4 dans R2h : u = GTy et u = GTy1 => y = y1. – L’application : yx=GGT y est une bijection de R4 (composition d’une injection et d’une

surjection) et GGT est inversible C.Q.F.D.

yGGGyGU TT 1)(

yGU 1

IGG

yyGGGGyGGGU TT 1)()(

Page 7: Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

22/04/23 page 7

Alunissage de Lunar Lander ‘en temps minimal’

• équations horizontale et verticale de Lunar Lander :

• Pour le mouvement horizontal de Lunar Lander :– Quel est le vecteur d’état final Xh ?– Que vaut la matrice G si h=2 ?– Quel est le rang de G ? – Quel est la durée d’alunissage ?– Comment calculer le vecteur des commandes ?– Qu’est ce qui change pour le mouvement horizontal ?

l

yk

e

e

ke

kkkga

T

TY

TBuAYY 210

12

1

xk

e

e

ke

kkk aT

TX

TBuAXX

210

12

1

k

kk x

xX

k

kk y

yY

Page 8: Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

22/04/23 page 8

Pour simplifier : on fait le calcul pour le mouvement horizontal normalisé (c’est-à-dire =1 ms-1kg-1, Te=1s)

Guuu

BABXAX

XXXh

uXX

h

kkk

1

00

22

20

1

,01

,00

,2

,15.0

1011

1

02

1

0

1...0

1)(21

2

1)(maxmax

h

k k

eh

k ke

khk

uE

TuTconso

uCom

11

02

21

1

0 )XAX(Guu

2)(,5.115.01

,1)det(,115.05.1 1

GrangGGGG

Note : pour le mouvement vertical, peu de modification, si ce n’est qu’il faut retrouver la commande ay appliquée au réacteur vertical en ajoutant à la commande u le terme g lune/

Page 9: Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

22/04/23 page 9

Calcul de la commande en boucle ouverte avec h=2 du mouvement horizontal normalisé de Lunar Lander (on utilise Matlab)

%séance 3s=ss([0,1;0,0],[0;1],[1 0],0)Te=1 % échantillonnage (s)sd=c2d(s,Te)ad=get(sd,'a')bd=get(sd,'b')G=[ad*bd, bd]x0=[1 0]‘; xf=[0;0];a=inv(G)*(xf-(ad^2)*x0)x1=ad*x0+bd*a(1)x2=ad*x1+bd*a(2)x=[x0,x1,x2]plot(x(1,:),x(2,:))maxcom=num2str(max(abs(a)));carbu=num2str(sum(abs(a)))*TeDure=num2str(2*Te)title([‘maxcom’, maxCom, ‘carburant’,carbu, ‘durée’,dure])grid,xtitle(‘x’),ytitle=(‘dx/dt’);

Matlab Scilab% //ss syslinc2d dscrnum2str string

0 0.2 0.4 0.6 0.8 1-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4max commande: 1, carburant: 2, durée: 2 secondes.

x

dx/d

t

Page 10: Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

22/04/23 page 10

Que se passe t’il si l'horizon augmente ? h=3 puis h=6

-0.2 0 0.2 0.4 0.6 0.8 1 1.2-0.7

-0.6

-0.5

-0.4

-0.3

-0.2

-0.1

0max commande: 0.5, carburant: 1, durée: 3 secondes.

x

dx/d

t

0 0.2 0.4 0.6 0.8 1-0.35

-0.3

-0.25

-0.2

-0.15

-0.1

-0.05

0max commande: 0.14286, carburant: 0.51429, durée: 6 secondes.

x

dx/d

t

Ici on représente la trajectoire dans le plan de phase (x, dx/dt)

Page 11: Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

22/04/23 page 11

Application avec Scilab : alunissage de Lunar Lander en boucle ouverte avec un horizon de h=100 périodes d’échantillonnage

//tiré du script : TD3Blin.sceTe = 0.04;h = 100; // horizonTvol= h*Te;//durée d‘alunissageX0= [45;1;51;-1]; //état initialXh = [0;0;0;0] // état d’alunissage//équations de Lunar Landermvide= 6839; // masse à vide (kg)mfuel= 816.5; // masse de carburant (kg)m= mvide+ mfuel; // masse totaleve= 4500; // vitesse d'éjection (en m/s)erg= ve/m; // noté epsilong_lune= 1.6; //gravité lunaire en m/s²A = [0,1,0,0;0,0,0,0;0,0,0,1;0,0,0,0];B = [0,0;erg,0;0,0;0,erg];C = [1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1];ll = syslin('c', A, B, C);//discrétisation des équations Lunar Landerlld = dscr(ll, Te);Ad = lld('a');Bd = lld('b');Cd = lld('c');////calcul de la matrice de gouvernabilitéG = Bd; //Calcul de Gfor n = 1:h-1 do G = [(Ad^n)*Bd, G];end

if rank(G) <> size(Ad,1) disp("pas de solution")

else // calcul de la solution y = Xh - (Ad^h) * X0;

Gt = G'; u = (Gt * (inv(G * Gt))) * y;

//vecteur des commandes des réacteurs a = u; //calcul de ay(n)= u(2*n)+glune/ergfor n = 1:h do a(2*n) = a(2*n) + g_lune/erg

end disp(sum(abs(a))*Te, "Consommation :")disp(max(abs(a)), "Commande maximale") //////Scilab2text : a dans 'com.txt' fileid='com.txt' fp=mopen(pwd()+'\'+fileid,'w'); Kt=u'; Ks=string(u(1)); for k=2:length(u),

Ks=Ks+','+string(Kt(k)); end

mputstr(Ks,fp); mclose(fp);

end

Page 12: Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

22/04/23 page 12

Mise en œuvre des résultats du script précédent

• ‘o’ clavier pour ce mode de commande

• commandes successives des réacteurs ax et ay lues dans le fichier ‘com.txt’.

• h=100• Te = 40 ms• Tvol = 4 s• fuel consommé : 123 kg• commande maximale : 34 m/(kg*s)

Page 13: Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

22/04/23 page 13

Description du projet associé au cours

• Objectif : simuler les équations et la loi de commande d’un processus physique par un ordinateur

• Technologie : html5 et javaScript, Processing, … vtk ? Phaser?• Effectifs : deux à trois élèves par groupe de projet• Durée : les quatre séances de travaux dirigés à venir• Scilab : discrétise le processus et calcule la loi de commande• Sujet du projet (détails, cf. page suivante)• Résultats demandés :

– Notice de l’application avec les équations, la loi de commande, l’utilisation– Un exécutable Windows, ou une page html, ou …

Page 14: Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

22/04/23 page 14

Description du projet associé au cours

• Cadre et contenu imposé du projet– Choisir un processus physique linéaire d’ordre 1, 2, 2x2= 4 comme Lunar Lander, …– Écrire les équations du processus sous la forme de commande de la représentation d’état.– Discrétiser les équations du processus au besoin avec ou sans l’aide de Scilab– Simuler la commande manuelle de la sortie du processus, i.e. on contrôle directement les

entrées de commande avec le clavier, la souris, …– Ajouter une loi de commande des sorties du processus: pour contrôler les sorties, on fixe

maintenant une consigne pour le système bouclé avec le clavier, la souris, …– Tester la stabilité, le temps de réponse, la précision du système bouclé– Sur un tableau de bord, on affichera l’état du processus, le temps simulé, les entrées de

commande la valeur maximum des entrées de commande, l’énergie de commande.– [Selon le temps disponible : on ajoute une animation même rudimentaire pour augmenter

le caractère ludique de la simulation, ainsi que des scores, des sons, et un jeu simple (réflexe, adresse, stratégie d’économie d’énergie, …)

Page 15: Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

22/04/23 page 15

Exemple du projet de J. et A. Boursier (2012-13)

Page 16: Commande en boucle ouverte et à horizon fini de l’alunissage de Lunar Lander

22/04/23 page 16

Saisir ‘T’, cliquer pour construire la trajectoire point par point