Polytech'Nice-Sophia, Départements S.I. et M.A.M., cours de 4 ème année. Commande par Ordinateur...

Post on 04-Apr-2015

106 views 1 download

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