Vous êtes sur la page 1sur 23

MINI PROJET

Modelisation d’un drone


Oularbi Houssem Eddine

30 janvier 2018

1 PARTIE ANALYTIQUE :
1.1 Modèle d’état non linéaire :
On a les équations différentielles simplifiés régissant le comportement de drône dans le plan vertical :

mẍ = −sin(φ).u1
mz̈ = cos(φ).u1 − mg
J φ̈ = u2
On a 3 équations de 2eme ordre, donc dim(X) = 6
   
x x1
 z  x2 
   
φ x3 
On pose :X =  ẋ = x4 
  
   
 ż  x5 
φ̇ x6
On obtient le modèle d’etat non linéaire :
   
ẋ x4
 ż   x5 
   
φ̇  x6 
Ẋ =   =  sin(x3 )u1 

ẍ  − 
   m 
 z̈   cos(x3 )u1 − g 

m
φ̈ u2
J

1.2 Le point d’équilibre :


Ẋ = 0 ⇒ x4 = x5 = x6 = 0
et :
sin(x3 ) = 0....................(1)
cos(x3 ) = mg
u1 ..................(2)
De (1) on obtient : x3 = kπ
En remplaçant (1) dans (2) : u1 = (−1)k .mg
on trouve aussi :φ̈ = 0 ⇒ u2 = 0
Donc le point d’équilibre est :

1
 
x1
 x2 
 
kπ 
 0  ∀ x1 et x2
X̄ =  
 
0
0
et u1 = (−1)k .mg et u2 = 0
Pour le point d’équilbre {x = 0, z = 0, φ = 0} la commande devient :u1 = mg et u2 = 0

1.3 Modèle linéaire :


On va lineariser le modèle d’état correspondant au robot manipulateur autour de l’origine x = z = φ = 0
ΣL (P0 ) ={
∆Ẋ = A∆X + B∆u
∆y = C∆X
On calcule les matrice A,B et C :
 
0 0 0 1 0 0
0 0 0 0 1 0
 
dF
0 0 0 0 0 1
A = dX =  
0
 0 −g 0 0 0 
0 0 0 0 0 0
0 0 0 0 0 0
 
0 0
0 0
 
dF
0 0
B= dU =
0

 0
1 0
m
0 J1
 
1 0 0 0 0 0
C=
0 1 0 0 0 0

1.4 La stabilité :
On calcule les valeurs
propres :
λ 0 0 −1 0 0

0 λ 0 0 −1 0

0 0 λ 0 0 −1
det(λI − A) = = λ6
0 0 g λ 0 0
0 0 0 0 λ 0

0 0 0 0 0 λ
Donc toutes les valeurs propres sont nulles {λ = 0 de multiplicité 6}
Le système est instable IS.D’après le premier théorie de Lyaponov,le système non linéaire est instable

1.5 Commandabilité :
On a dim(X) = 6 donc com = [B AB A2 B A3 B A4 B A5 B]

2
0 0 0 − Jg
 
0 0 0 0
0 1
0 m 0 0 0 0 0 
1
 
0 0 0 J 0 0 0 0 
On obtient : com = 
0 0 0 − Jg 0 0 

0 0
 
1 0 0 0 0 0 0 0 
m
1
0 J 0 0 0 0 0 0
On remarque 6 colonnes indépendantes dans la matrise de commandabilité, ce qui égale à la dimension de X,donc
le système linéaire est complètement commandable.
D’après 1er theorie de Lyaponov,le système non linéaire est localement faiblement commandable

1.6 Observabilité :
 
1 0 0 0 0 0
0 1 0 0 0 0 
 
0 0 0 1 0 0 
    
C 0 0 0 0 1 0 

 CA  0 0 −g 0 0 0 


CA2  
 
0 0 0 0 0 0

obs =  =  
CA3  0 0 0 0 0 −g  
 
CA4   0 0 0 0 0 0 

CA5

0 0 0 0 0 0 

 
0 0 0 0 0 0 
 
0 0 0 0 0 0 
0 0 0 0 0 0
On remarque 6 lignes indépendantes==>le système linéaire est complètement observable et par suite selon lya-
ponov, le système non linéaire est localement et faiblement observable.

2 PARTIE DE SIMULATION :
Dans cette partie, on va simuler sur Matlab et Simulink ce qu’on a déja fait dans la partie analytique en ajoutant
des précompensateurs et des actions intégrale afin que le signal de sortie puisse poursuivre la commande désiré.
On va traiter principalement les cas suivants :
I. Le système linéarisé avec une commande (stabilisante/optimale) et un précompensateur.
II. Le système linéarisé avec la commande (stabilisante/optimale) et une action d’intégrale.
III. Le système non linéaire avec une commande (stabilisante/optimale) et un précompensateur.
IV. Le système non linéaire avec une commande (stabilisante/optimale) et une action d’intégrale.
On va intégrer des observateurs (observateur de Luenberger) avec les cas linéarisés.

2.1 Système linéarisé :


2.1.1 Cas non stabilisé et non corrigé :
Matlab : Sys lineaire ss cmd stab.m
Simulink : Sys lineaire ss cmd stab.slx
Avant d’entammer les 4 cas mentionnés en dessus, on va simuler le système linèaire sans stabilisation et sans
correction pour, par exemple :U1 = 10 et U2 = 0.2
On obtient ces signaux en sortie :{q1 , q2 }

3
On remarque que les signaux de sortie diverge pour un commande au voisinage de point de fonctionnement, ce
qui est logique et confirme les résultats de la partie analytique car on a trouvé que le syetème linéarisé est de stabilité
de type :LS.

2.1.2 Cas stabilisé :


Remarque :
L’application d’un retour d’état ou bien des observateurs est faisable car le système linéarisé est complètement
commandable et complètement observable.

a.Commande stabilisante :
Cette partie traite le système après l’application un retour d’état afin de le stabilser.Le gain appliqué est caclculé
par la commande ”place” :
Matlab : Sys lineaire cmd stab.m
Simulink : Sys lineaire cmd stab.slx
En appliquant comme commande :V1 = 10 et V2 = 0.2 on trouve :

4
remarque :
En appliquant en entrée des commandes dont la valeur est au voisinage de point de fonctionnement, et avec un
retour d’état, on remarque les signaux de sortie se stabilisent et converge vers un valeur quelconque.

b.Commande stablisante avec un observateur :


On refait le même cas, mais en ajoutant un observateur pour avoir le vecteur d’état qui est nécessaire pour calculer
le gain de retour d’etat.
Matlab : Sys lineaire cmd stab observ.m
Simulink : Sys lineaire cmd stab obs.slx

En utilisant le code matlab et avec les commandes V1 = 10 et V2 = 0.2, ça donne :

5
On peut tirer l’erreur entre les 2 vecteurs d’état (système et observateur), ça donne :

Remarque :
L’erreur est de l’ordre 10−14 donc on peut considérer qu’elle est nulle , et par suite l’observateur de Luenberger
donne un vecteur d’état semblable à celle de système avec une erreur tend vers 0.

6
c.Commande optimale :
Dans cette partie, on utilise la fonction ”LQR” au lieu de ”PLACE” pour determiner la commande qui minimise
le critère de performance :
Z ∞
J= (xT Qx + uT Ru) dt
0
On pose :  
1 0 0 0 0 0
0 1 0 0 0 0
 
0 0 1 0 0 0
Q=
0

 0 0 1 0 0
0 0 0 0 2 2
0 0 0 0 2 3
 
0.7 0
R=
0 0.5
Matlab : Sys lineaire cmd opt.m

On trouve pour V1 = 10 et V2 = 0.2 :

remarque :
On remarque des différeces entre le premier rangé qui est le resultat en cas d’une commande stabilisante avec
”place” et le deuxième rangé qui représente les signaux de sortie en cas d’une commande optimale.

2.1.3 Cas stabilisé avec un précompensateur :


Dans la partie précédante, on a appliqué un retour d’état afin de stabiliser le système, cependant, les signaux de
sortie, malgré la stabilisation, n’arrivent pas à poursuivre les commande U1 et U2 .Pour réaliser ça, il ya 2 méthodes :

7
-On ajoute un précompensateur
-On applique une action intégrale
Dans cette section, on va faire l’etude avec un compensateur

a.Commande stabilisante :
Matlab : Sys lineaire cmd stab precompensateur.m

On trouve pour V1 = 10 et V2 = 0.5 :

Remarque :
En introduisant un précopensateur, on remarque que ”q1” poursuit ”V1” et ”q2” poursuit ”V2

b.Commande stabilisabte avec un observateur :


On refait l’etude de la partie précédante mais en ajoutant un observateur de Luenberger :
Matlab : Sys lineaire cmd stab precompensateur observ.m
Simulink : Sys lineaire cmd stab precompensateur obs.slx

8
Pour V1 = 10 et V2 = 1 :

Et l’erreur :

9
Remarque : L’erreur reste toujours très petite( de l’ordre de 10−13 ).
Si on s’éloigne de point de fonctionnement, par exemple on pose V1 = 20 et V2 = 10 :

Remarque :

10
Les signaux de sortie convergent vers les valeurs données pour les commandes

c.Commande optimale :
Matlab : Sys lineaire cmd opt precompensateur.m
Pour V1 = 10 et V2 = 1 :

Remarque :
On remarque que la vitesse de convergence et aussi l’amplitude de dépacement diffère pour les 2 types de com-
mande.On voit bien que pour ”q2” il ya un dépacement et après le signal de la sortie converge, cependant ”q2o”
converge directement.
Resulat :
Le précompensateur garante le poursuit des signaux de sortie des signaux d’entrée désirés au voisinage de PF de
tel sorte :
-q1 suit V1
-q2 suit V2
-q3 revient à 0 après certain temps et c’est logique car q3 représente ”Teta” l’angle de rotation par rapport y,
donc l’etat stable de drone est d’être horizontal par rapport x et y et par suite, quand le drone déplace ”tèta” change
et dès qu’il stabilise,”tète” revient à 0.
Mème les signaux w1 et w2 et w3 obtenus qui représentent les vitesses sont logique tel que, après un certain temps,
ils reviennent à 0 lorsque le drone se place dans la postion désirée.
La simulation et le code(Matlab) faites en se basant sur la partie analytique en ajoutant un précompensateur sont
correctes et donnent des resultats cohérants avec le cahier de charge(La stabilisation et le poursuit).
L’utilsation de l’observateur de Luenberger permet de générer le mème vecteur d’etat de système avec une erreur
négligeable.
La commande optimale mimimize l’energie consommée lors de la régulation.

2.1.4 Cas stabilisé avec une action intégrale :


Dans la partie précédante, on a utilisé le précompensateur comme moyen pour que le système puisse poursuivre
la commande.La deuxième méthode qui permet de faire ça est appliquer une action intégrale pour rendre l’erreur
statique égale à 0.

a.Commande stabilisante :

11
Matlab : Sys lineaire cmd stab act integrale.m
On trouve pour V1 = 10 et V2 = 0.5 :

Remarque :
On voit bien que ”q1” et ”q2” poursuivent les deux commande V1 et V2
On s’éloignant de PF, le système reste toujours capable de poursuivre

b.Commande stabilisante avec observateur :


On applique un observateur de Luenperger
Matlab : Sys lineaire cmd stab act integrale observ.m
Simulink : Sys lineaire cmd stab act integrateur obs.slx

Pour V1 = 10 et V2 = 0.5, l’erreur est :

12
Remarque :
L’erreur est de l’ordre 10−13 donc elle est négligeable

c.Commande optimale :
De la même manière des exemples en dessus, on applique la fonction ”LQR”
Matlab : Sys lineaire cmd opt act integrateur.m
On trouve pour V1 = 10 et V2 = 0.5 :

Remarque :

13
on remarque que ”q1” et ”q2” pour le cas d’une commande optimale commencent directement par la valeur vers
laquelle ils convergent.

d.Commande optimale avec un observateur :


Dans ce cas, on introduit sur le système linéaire une commande optimale et un observateur de Luenberger en
appliquant une action intégrale
Matlab : L obs opt integrateur.m
Pour V1 = 10 et V2 = 3 on obtient :

Remarque :
On voit bien que le le système (q1o et q2o) poursuit les signaux de référence, mais par rapport le deuxième
rangé qui représente la commande normale, il ya des différences cencernant les vitesse de convergence et nombre
d’oscillations
Resultat :
Comme celles de compensateur, on obtient des resultats corrects et logiques en mème temps,donc en ajoutant une
action intégrale, les signaux de sorties(q1,q2) poursuivent les signaux de référence(les entrées :V1 et V2)
L’observateur de Luenberger donne toujours des resultats identiques que celle donnés par le système et ça se voit
au niveau de l’erreur entre les vecteurs d’etat qui est négligeable.
Remarque :
On remarque,concernant les 2 cas linéaires soit avec un compensateur soit une action intégrale, que quelque soit
la valeur donné comme entrée(V1,V2),le système reste toujours stable et poursuit les signaux de référence.

2.2 Système non linéaire :


Dans cette section, on va refaire les taches précédantes pour le système non linéaire,on va appliquer la commande
par retour d’etat, commande optimale et on va introduire les précompensateurs et les actions d’intégrale pour garanter
le poursuit des signaux de sortie.

2.2.1 Cas non stabilisé et non corrigé :


On va vérifier le resultat obtenu lors de l’etude analytique ou selon le premier theorie de Lyaponov, le système nn
lineaire est instable.
Simulink : Sys lineaire ss cmd stab.slx

14
On obtient pour :V1 = 10 et V2 = 0.5 :

Resultat :
Le système diverge, ce qui confirme le reultat theorique.

2.2.2 Cas stabilisé :


On va traiter 2 cas,en appliquant une commande par retour d’etat simple et une commande optimale

a.Commande stabilisante :
Matlab : Sys nn lineaire cmd stab.m
Simulink : Sys nn lineaire cmd stab.slx

15
On trouve pour V1 = 9.7 et V2 = 0.2 :

Remarque :
Le système se stabilise et converge vers une valeur quelconque
En donnant aux signaux de commande des valeurs loins de PF, le système reste toujours stable.

b.Commande optimale :
Matlab : Sys nn lineaire cmd opt.m
Pour V1 = 9.7et V2 = 0.2 :

16
Remarque :
Le système se stabilise et ”q1” et ”q2” convergent .
Resultat :
En appliquant la commande soit par retour d’etat simple soit par une commande optimale, le système non linéaire
se stabilise et converge.
Cependant, les signaux de sortie ne poursuivent pas les signaux de d’entrée

2.2.3 Cas stabilisé avec un précompensateur :


Afin d’avoir un système non lineaire qui poursuivre les signaux de référence, on applique un précompensateur.

a.Commande stabilisante :
Matlab : Sys nn lineaire cmd stab precompensateur.m
Simulink : Sys nn lineaire cmd stab precompensateur.slx

17
Pour V1 = 9.7 et V2 = 0.3 :

Remarque :
On voit bien que ”q1” converge vers V1 et ”q2” converge vers V2
On essaie de s’éloigner de PF, par exemple on prend V1 = 17 et V2 = 6.On obtient :

18
Remarque : Le système diverge

b.Commande optimale :
Matlab : Sys nn lineaire cmd opt precompensateur.m
On obtient pour V1 = 9.7 et V2 = 0.2 :

Remarque :
On remarque la même chose dans cette section, tel que ”q1” et ”q2” convergent vers la valeurs désirée
C’est semblable pour la commande optimale la divergance de système pour des valeurs en entrée loin de PF.
Commande stabilisante avec observateur :
Matlab : Sysn nl ineairec mds tabp recompensateuro bserv.m
On obtient Pour V1 = 6 et V2 = 1

19
Resultat :
Le système non linéaire ne peut poursuivre les signaux de référence que au voisinage de PF sinon il diverge, par
conséquent en s’éloignant de PF on risque d’avoir de resultats érroné et c’est possible d’endommager le système.

2.2.4 Cas stabilisé avec une action intégrale :


a.Commande stabilisante :
Matlab : Sys nn lineaire cmd stab act integrale.m
Simulink : Sys nn lineaire cmd stab act integrateur.slx

Pour V1 = 10 et V2 = 0.5 :

20
Remarque :
En appliquant une action intégrale sur le système non linéaire, au voisinage de PF ce dernier converge vers les
valeurs désirés
Si on pose V1 = 10 et V2 = 10, on obtient :

Remarque :
En s’éloigne de PF, le système diverge

b.Commande optimale :
Matlab : Sys nn lineaire cmd opt act integrateur.m
On trouve pour V1 = 10 et V2 = 0.5 :

21
Remarque :
On remarque que le système poursuit les valeurs de commande désirées,la chose qui diffère en comparant avec
la commande stabilisante normale c’est que ”q1” et ”q2” pout t=0 égale aux valeurs des signaux d’entrée, après ils
varient en fonction de temps et au final reviennent aux valeurs initiales.
d.Commande stabilisante avec observateur
Matlab : Sysn nl ineairec mds taba cti ntegraleo bserv.m
On trouve pour V1 = 10 rt V2 = 3 :

Remarque
Le système fonctionne très bien et la sortie converge vers les signaux de référence
Resultat :
L’action intégrale donne des resultats plus intéressants et permet le poursuit de système les valeurs désirés.

22
Il faut toujours prendre des valeurs dans un intervalle au voisinage de PF pour garanter la convergence sinon le
système divergera.
L’action intégrale est plus intéressants que le précompensateur et ça est gràce au fait que l’intégrateur agit
directement sur la sortie qu’on veut commander,puis éliminer l’erreur mais toujours dans un intervalle défini au
voisinage de PF.
Remarque :
Pour les simulations sur simulink pour le cas non lineaire, l’option VR nous permet de visualiser le comportement
de drone.

23