Polytech'Nice-Sophia, Départements S.I. et M.A.M., cours de 4 ème année. Commande par Ordinateur...
-
Upload
claudia-gillet -
Category
Documents
-
view
106 -
download
1
Transcript of Polytech'Nice-Sophia, Départements S.I. et M.A.M., cours de 4 ème année. Commande par Ordinateur...
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 2014
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
11/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
y
y
x
x
X
0
0
0
0
h
h
h
h
h
y
y
x
x
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
y
y
x
x
T
T
y
y
x
x
02
0
0
02
1000
100
0010
001
2
2
1
1
1
1
11/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
hUhGy
GUy
GUXAXy
u
u
u
BABBAXAX
BUABUBUAXAX
X
BUABUXABUAXX
BUAXX
X
ga
a
u
uUUBAX
BUAXX
hh
h
hhh
hhhh
h
lyk
xk
k
kkkk
kkk
Il faut trouver U vérifiant y=GU.G : matrice de gouvernabilité, U : vecteur des commandes,h : horizon de la commandey : dépend de X0, Xh, et A
11/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
gggG
GUyU
11/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, ou de rang complet
ddccbbaadcba guguguguyRuuuuRy ,,,,,4
ddccbbaa
h
k kk guguguguguGUy
12
0
11/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 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 :
• 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)(
11/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
kkk
ga
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
11/04/23 page 8
Pour simplifier : on fait le calcul pour le mouvement horizontal normalisé (c’est-à-dire =1 ms-1kg-1, Te=1s)
Guu
uBABXAX
XXXh
uXX
f
kkk
1
00
22
20
1
,0
1,
0
0,2
,1
5.0
10
11
1
0
2
1
0
1...0
1)(2
1
2
1)(maxmax
h
k k
e
h
k ke
khk
uE
TuTconso
uCom
1
1)( 0
22
1
1
0 XAXGu
u
2)(,5.11
5.01,1)det(,
11
5.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/
11/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’);
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
11/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)
11/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")
// Scilab2texte : a sauvé 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
11/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)
11/04/23 page 13
Description du projet associé au cours
• Objectif : créer une simulation de la commande d’un processus physique par un ordinateur dans un jeu simple
• Technologie : Html5, Processing (l’an dernier), ou … à discuter
• Effectifs : de deux à trois élèves par groupe de projet
• Durée : les quatre séances de travaux dirigés à venir
• Scilab : pour discrétiser et calculer les lois de commandes
• Sujet du projet (cf. page suivante)
• Résultats demandés :– Notice de l’application : équations, loi de commande, utilisation
– Exécutable : windows, ou page html, ou …
11/04/23 page 14
Description du projet associé au cours
• Cadre et contenu imposé du projet– Choisir un processus physique d’ordre au moins 2 et au plus 4 et écrire ses équations
– Mettre les équations sous la forme de commande de la représentation d’état
– Choisir une fréquence d’échantillonnage et discrétiser les équations du processus
– Simuler la commande manuelle du processus,
– Ajouter une ou plusieurs lois de commande de façon à automatiser le suivi d’une consigne (poursuite d’une consigne mobile, ou régulation d’une consigne fixe)
– Ne pas oublier de calculer l’énergie consommée par les actionneurs (entrées de commande) pour étudier le compromis entre rapidité et consommation.
– L’IHM doit afficher l’état du processus, le temps simulé, les entrées de commande, l’énergie consommée, et les paramètres de la loi de commande (horizon, gains, …)
– On se place dans le cadre d’un jeu (réflexe, adresse, stratégie d’économie d’énergie), et selon le temps disponible, on ajoutera à l’IHM une animation même rudimentaire pour augmenter le caractère ludique de la simulation, ainsi que des scores, des sons, …
11/04/23 page 15
Exemple du projet de J. et A. Boursier (2012-13)
11/04/23 page 16
Saisir ‘T’, cliquer pour construire la trajectoire point par point