Vous êtes sur la page 1sur 41

Commande robuste d’un véhicule

sous-marin autonome

Emilie Roche

INRIA Rhône Alpes


Département d’Automatique de Gipsa-lab

Co-tuteurs:
Daniel SIMON et Olivier SENAME

25 juin 2008
Résumé :
Ce rapport développe une loi de commande robuste pour un véhicule
sous-marin autonome.
Un modèle non linéaire du sous-marin a été implémenté avec Matlab,
puis il a été linéarisé par une méthode tangentielle. Une modélisation LPV
polytopique a également été réalisé, en considérant la masse comme seul
paramètre variant.
Deux correcteurs robustes ont ensuite été synthétisés : l’un par la méthode
H∞ , l’autre par la méthode LPV polytopique.
Des résultats de simulation montrent les performances obtenues avec cha-
cun des correcteurs, et notamment l’amélioration apportée par la méthode
LPV.

Abstract :
This report present a robust control law for autonomous underwater ve-
hicles (AUV).
A non linear model of the AUV was implemented on Matlab, then it has
been linearized by a tangential method. An LPV polytopique model was also
developed, considering the mass as the unique varying parameter.
Simulation results are provided to show performances obtained with both
controller, and specifically the improvement brought with the LPV method.
Table des matières

Introduction 1

1 Modélisation du véhicule sous-marin 4


1.1 Modèle hydromécanique . . . . . . . . . . . . . . . . . . . . . 4
1.2 Mise en oeuvre sous Matlab . . . . . . . . . . . . . . . . . . . 7
1.2.1 S-function . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.2 Création du schéma Simulink . . . . . . . . . . . . . . 8
1.2.3 Vérification du modèle obtenu . . . . . . . . . . . . . . 8
1.3 Linéarisation du modèle . . . . . . . . . . . . . . . . . . . . . 10
1.4 Modèle LPV polytopique . . . . . . . . . . . . . . . . . . . . . 11

2 Synthèse d’un correcteur H∞ 13


2.1 Présentation de la méthode . . . . . . . . . . . . . . . . . . . 13
2.2 Spécification des gabarits fréquentiels . . . . . . . . . . . . . . 14
2.3 Résultats obtenus . . . . . . . . . . . . . . . . . . . . . . . . . 15

3 Synthèse d’un correcteur LPV Polytopique 20


3.1 Explication de la méthode . . . . . . . . . . . . . . . . . . . . 20
3.2 Mise en œuvre . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3 Résultats obtenus . . . . . . . . . . . . . . . . . . . . . . . . . 21

Conclusion 25
Remerciements

Je tiens à remercier Messieurs Daniel Simon et Olivier Sename, respon-


sables de mon stage, pour m’avoir fait confiance sur ce projet et pour m’avoir
conseillé et guidé tout au long de ce travail. Sans oublier leur participation
au cheminement de ce rapport

Je voudrais aussi remercier les laboratoires qui m’ont accueillis pendant


mes 5 mois de stage : l’INRIA Rhône Alpes et le GIPSA-lab, ainsi que toute
l’équipe NeCS à laquelle j’ai été intégrée.

Merci également à mes camarades stagiaires, qui ont contribués à faire de


stage un moment agréable, donc merci pour leur bonne humeur.
Introduction

Ce stage s’inscrit dans le cadre du projet CONNECT (CONtrol NEtwor-


ked Cooperative sysTems). Ce projet a pour but de contrôler un système
multi-agents (composé de véhicules de surface (ASV) et de véhicules sous-
marins (AUV)), interconnectés par un réseau de communication sans fils.

Parmi les missions envisageables pour ce type de système, on peut noter :


- la cartographie de fonds sous marins par une flottille d’AUV.
- la localisation d’une boîte noire après un crash aérien.
- la détection d’une source par suivi de gradient (eau douce, gaz,
produit chimique...).

Le but de ce stage est de concevoir une commande robuste afin d’asservir


la vitesse longitudinale et l’altitude d’un sous-marin de type Asterχ , tout en
minimisant les vitesses de roulis et de tangage.

Fig. 1 – Photo du sous-marin Asterχ ((c) Ifremer)

1
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

Actuellement, la commande des véhicules sous-marins se fait principale-


ment par la méthode par modes glissants : cette méthode permet de calculer
une loi de commande stabilisant un système non linéaire, dont la loi d’évo-
lution est très mal connue (incertitude sur la modélisation du système). Elle
permet également de spécifier lors de la conception du contrôleur, une tra-
jectoire à suivre par le système bouclé.
L’idée est ici d’utiliser un autre type de commande, qui n’est pas faite
à l’origine pour des systèmes non linéaires : la commande H∞ qui permet,
grâce à des gabarits fréquentiels, de fixer le comportement souhaité en boucle
fermée. La robustesse apportée par ce type de correcteur peut ensuite suffire
à garantir de bonnes performances sur le système non linéaire.
Depuis une dizaine d’années, la synthèse H∞ a été étendue au systèmes
à paramètres variants, notamment dans les domaines de l’aéronautique et de
l’automobile.

Ce stage a été effectué au sein de deux laboratoires de recherche : l’INRIA


Rhône Alpes et le laboratoire GIPSA-lab.
L’INRIA (Institut National de Recherche en Informatique et Automa-
tique) a pour vocation d’entreprendre des recherches fondamentales et appli-
quées dans les domaines des sciences et technologies de l’information et de la
communication (STIC). L’institut assure également un fort transfert de tech-
nologie en accordant une grande attention à la formation par la recherche,
à la diffusion de l’information scientifique et technique, au développement, à
l’expertise et à la participation à des programmes internationaux. L’INRIA
développe de nombreux partenariats avec le monde industriel et favorise le
transfert technologique et la création d’entreprises dans le domaine des STIC.
L’INRIA Rhône Alpes est réparti sur 4 sites : Inovallée Meylan-Montbonnot
et campus à Grenoble, domaine scientifique de la Doua et technopole Gerland
à Lyon, comptant un total de 600 personnes : 200 chercheurs et enseignants-
chercheurs, 200 ingénieurs, techniciens, administratifs, 200 doctorants et post-
doctorants (dont 45% étrangers) et 136 stagiaires.
L’INRIA Rhône Alpes est divisé en 28 équipes de recherche : j’ai été
intégrée à l’équipe NeCS (NEtworked Controlled Systems), dont le but est
de développer une nouvelle approche de commande pour prendre en compte
l’apparition de nouveaux composants sans fils de faible coût, l’accroissement
de la complexité des systèmes et la répartition dans un réseau à reconfigura-
tion dynamique de capteurs et d’actionneurs (réseaux de capteurs).
Cette équipe est commune au département automatique du GIPSA-lab.
Le GIPSA-lab regroupe trois départements :
- Automatique
- Images et signal

2
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

- Parole et cognition

GIPSA-lab est une unité mixte de recherche entre le CNRS (UMR 5216),
l’INPG et l’UJF.
Gipsa-lab s’investit dans des recherches fondamentales sur la parole, la
perception, la cognition, le cerveau, le diagnostic et la commande des sys-
tèmes. Il développe des applications dans les secteurs de l’interaction mul-
timodale, des télécommunications, de l’énergie, de l’environnement, des sys-
tèmes embarqués, de la mécatronique-robotique, de la santé, des transports,
etc.
L’effectif total du GIPSA-lab est d’environ 300 personnes, dont 137 per-
manents, une vingtaine de chercheurs invités, posts-doctorants et ATER, 140
doctorants et une soixante de stagiaires de master.
Le département automatique est à son tour divisé en plusieurs équipes de
recherche : Systèmes à événements discrets ; Systèmes linéaires et robustesse ;
Systèmes non linéaires et complexité ; Systèmes biomécaniques ; Signal, au-
tomatique pour le diagnostic et la surveillance et Systèmes commandés en
réseaux (NeCS).

Dans une première partie, on va réaliser un modèle non linéaire du sous-


marin, qui tient compte des aspects cinématiques, dynamiques et hydrody-
namiques du mouvement. Puis on va linéariser ce modèle de façon à pouvoir
utiliser des outils de la commande robuste des systèmes linéaires.
Dans une deuxième partie, on va calculer un correcteur H∞ et évaluer ses
performances sur les systèmes linéaire et non linéaire.
Puis dans une troisième partie, on va construire un autre type de correc-
teur, basé sur un modèle LPV polytopique (Linéaire à Paramètres Variants),
qui permet de prendre en compte à la conception des variations de paramètres
mal connus.

3
Chapitre 1

Modélisation du véhicule
sous-marin

1.1 Modèle hydromécanique


L’analyse détaillée de la modélisation d’un sous-marin du même type que
celui étudié a déjà été effectuée (Fossen, 1994; Santos, 1995). On donne ici
un résumé des résultats obtenus. La modélisation du sous-marin ayant pour
but une implémentation en vue de simulation, on ne cherchera pas seulement
une équation donnant le comportement global du sous-marin, mais égale-
ment une description de chacun des comportements pris séparément. On fait
alors l’hypothèse que le comportement global est la somme de chacune des
composantes prises à part.

Pour la modélisation du sous-marin, deux repères sont à considérer :


- le repère lié au véhicule : <(C, X, Y, Z) dont l’origine C (centre
de carène) peut être différente du centre de gravité de véhicule. Le centre
de carène est une centre géométrique, et donc ne change jamais, contraire-
ment au centre de gravité qui peut être modifié (cas de batteries mobiles par
exemple).
- le repère inertiel : <0 (O, X0 , Y0 , Z0 ) qui dans le cas de sous-marin
se déplaçant à faible vitesse peut être pris comme étant lié à la Terre.

Pour décrire le comportement


 du véhicule, on utilisera un vecteur d’état
η(6)
à 12 variables .
ν(6)
η représente
  la situation du véhicule exprimée dans le référentiel inertiel
η
<0 : η = 1 avec
η2

4
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

 T
- η1 la position du véhicule : η1 = x y z .
 T
- η2 l’orientation du véhicule : η2 = φ θ ψ .
Les angles φ, θ et ψ représentent respectivement le roulis, le tangage et
le lacet du véhicule (utilisation de la paramétrisation par les angles d’Euler),
comme le montre la figure suivante :
X0

Y0
X0 Y0

Z0
Z0

Fig. 1.1 – Définition des angles φ (roulis), θ (tangage), et Ψ (lacet).


 
ν
ν représente le torseur vitesse : ν = 1 exprimé dans le repère local du
ν2
véhicule <. Les variables ν1 et ν2 sont respectivement les vitesses linéaires et
les vitesses angulaires (dérivées premières des vecteurs η1 et η2 au change-
 T  T
ment de repère près) et sont notées : ν1 = u v w et ν2 = p q r .

Pour décrire le comportement du système, on sépare l’analyse en deux


parties : la cinématique (aspects géométriques du mouvement) et la dyna-
mique (effets des forces et des moments sur le mouvement). Le détail des
équations est donné en annexe (Annexe 1).
L’étude complète permet d’aboutir au système dynamique suivant :

M ν̇ = G(ν)ν + D(ν)ν + Γg + Γp + Γu (1.1)

η̇ = Jc (η2 )ν
où les paramètres de l’équation 1.1 correspondent à :
- M est la matrice d’inertie. Elle est composée de 2 termes : Md , la
matrice d’inertie due à la dynamique du système et Ma , matrice d’inertie
d’eau ajoutée, dont les paramètres sont issus de modèles semi-empiriques
(erreur pouvant aller jusqu’à 50 à 70%).

5
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

- G(ν) représente l’action des forces de Coriolis et des forces centri-


fuges. Il est également composé de deux termes : Gd dû aux forces dyna-
miques, et Ga dû aux forces hydrodynamiques (calculées à partir des coeffi-
cients de la matrice d’inertie d’eau ajoutée).

- D(ν) est la matrice des coefficients d’amortissement hydrodyna-


mique (également issue d’estimation donc la connaissance est très approxi-
mative).

- Γg est le vecteur des force de gravité et de la poussée d’Archimède.

- Γu représente les forces et moments générés par les actionneurs du


véhicule, et dépend bien évidement du type d’actionneur que possède l’engin.
Dans notre cas, le sous-marin possède une hélice pour commander la vitesse
longitudinale (dont la commande est fournie sous forme de poussée Qc ) ainsi
que des ailerons :
- deux ailerons horizontaux à l’avant du véhicule (plans canards -
les ailerons droits et gauches sont commandés avec le même angle β1 ).
- deux ailerons horizontaux à l’arrière (angle β2 ).
- deux ailerons verticaux à l’arrière (angle δ1 ).

β1 β2

Fig. 1.2 – Définition des angles de commande pour les plans canards (à l’avant) et les
ailerons horizontaux arrières

Remarque : La modélisation des gouvernes ainsi que des efforts hydrody-


namiques (détaillée en annexe) n’est valable que pour un angle d’incidence
inférieur à 20 degrés (l’angle d’incidence représente l’inclinaison du sous-
marin relativement au fluide en mouvement). Au delà la force de portance
n’agit plus et il y a "décrochage".

- Γp représente les forces et moments dus aux perturbations (diffé-


rentes densités de l’eau de mer, courants marins...) considérés nuls dans notre
modèle.

- Jc (η2 ) est la matrice de passage du référentiel local <(C, xyz) au


J (η ) 03x3
repère inertiel (lié à la terre) <0 (O, X0 Y0 Z0 ) : Jc (η2 ) = c1 2
03x3 Jc2 (η2 )

6
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

1.2 Mise en oeuvre sous Matlab


Il existe déjà un modèle de sous-marin codé en C, presque identique à
l’asterχ ). Pour pouvoir par la suite utiliser des outils disponibles uniquement
sous Matlab (synthèse de correcteur H∞ ), il est nécessaire de disposer d’un
modèle utilisable sous Matlab.
Pour réaliser ce modèle, on va utiliser des S-functions, qui permettent
d’utiliser un programme en langage C depuis un schéma Simulink (ce qui me
permettra de reprendre des morceaux des programmes déjà existants.

1.2.1 S-function
Une S-function est un bloc défini sous Matlab-Simulink qui permet à
l’utilisateur de définir lui-même un algorithme exécutable. Elle peut être
codée en langage Matlab (sous forme de M-file) ou en langage C (sous forme
de C MEX-file). C’est cette deuxième solution qui a été utilisée.
Une S-function est composée de plusieurs fonctions qui permettent de
passer des informations importantes dans le schéma Simulink :

? static void mdlInitializeSizes(SimStruct *S) permet de défi-


nir le nombre d’entrées et de sorties qui devrait être connecté au bloc, et de
vérifier que ce nombre est bien respecté. Elle permet également de vérifier le
nombre de paramètres.

? static void mdlInitializeSampleTimes(SimStruct *S) sert à dé-


finir si la fonction est continue ou discrète (dans le cas de fonction discrète,
c’est ici qu’il faut définir la période d’échantillonnage).

? static void mdlOutputs(SimStruct *S, int_T tid) réalise l’algo-


rithme souhaité : il faut récupérer les entrées depuis Matlab, effectuer les
calculs nécessaires puis écrire les sorties qui seront transmises au schéma Si-
mulink.

? static void mdlTerminate(SimStruct *S){} clos la S-function. Dans


notre cas aucune procédure particulière est nécessaire donc cette fonction res-
tera vide (mais sa présence est indispensable).

7
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

1.2.2 Création du schéma Simulink


On utilise une S-function pour décrire chacun des comportements présen-
tés dans la partie "modèle hydromécanique" (ainsi qu’en annexe). Voici la
correspondance entre les différentes fonctions codée en C et les paramètres
de l’équation 1.1 :
- changement de repère pour la matrice Jc (η2 ).
- dynamique pour Gd (ν) (le terme Ga est négligé.
- hydrodynamique pour D(ν)
- Gamma_G pour Γg
- le bloc Gamma_u qui regroupe la propulsion de l’hélice et les trois
ailerons : terme Γu .
- Minertinv représente l’inverse de la matrice d’inertie M .

Il suffit ensuite de relier les blocs Simulinks de façon à obtenir le compor-


tement global du sous-marin : voir figure 1.3

Fig. 1.3 – Schéma simulink

Pour faciliter l’implémentation, on calcule séparément les vecteurs η et ν


puis on recombine les variables de façon à avoir une forme plus classique :
[x ẋ y ẏ · · · ]T

1.2.3 Vérification du modèle obtenu


On ne dispose pas de données permettant une comparaison avec un mo-
dèle déjà existant. De plus, les coefficients utilisés pour la modélisation étant
fournis par l’Ifremer (fabriquant du sous-marin) on les supposera exacts.

8
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

La vérification consistera donc à contrôler que le comportement du sys-


tème ne soit pas aberrant. Pour cela, on réalise quelques tests simples :

? Essai à vitesse nulle : On part d’un état initial nul, on applique une vi-
tesse nulle. Le sous marin reste immobile, donc il est parfaitement équilibré.

? Essai à vitesse constante : on part d’un état initial nul et on applique


en t = 0 un échelon de poussée correspondant à une vitesse longitudinale
u de 1m/sec. Le résultat obtenu est correct : u passe de 0 à 1m/sec en 40
secondes, la position x varie linéairement avec une pente de 1m/sec (après le
transitoire). Evolution inattendue : petite variation de l’altitude z (de l’ordre
de 5.3cm en 100 secondes), surement due à un léger décalage du point d’ap-
plication de la poussée de l’hélice par rapport au centre d’inertie.

? Essai à vitesse constante et plan canard : On part d’un état initial nul
sauf pour la vitesse longitudinale égale à u0 (1m/sec) et on applique un éche-
lon à l’angle d’incidence des plans canards β1 de 0.1 radians. On observe une
variation de l’altitude z de l’ordre de 30m en 100sec (cette valeur est obtenue
pour des gouvernes exagérément grande ; un angle de braquage positif fait
monter le sous-marin donc z diminue) ainsi qu’une petite variation de l’angle
de tangage θ (environ 0.04 radian). Du fait de la force de trainée due aux
gouvernes, on observe également une diminution de u de 0.025m/sec.

? Essai à vitesse constante et gouverne arrière horizontale : on applique


la même variation que précédemment mais sur β2 : on observe la même évo-
lution que précédemment (variation d’altitude z, modification de la vitesse
u), mais dans le sens inverse (le sous-marin descend donc z augmente). En
effet, comme cette gouverne est située de l’autre côté du centre de gravité,
pour un angle de braquage positif, le sous-marin descend. Les dimensions
des deux gouvernes étant à peu près identiques, les évolutions sont du même
ordre de grandeur.

? Essai avec braquage des 2 ailes horizontales (avant et arrière) : on peut


distinguer deux cas intéressant : les ailes ont le même braquage ou des bra-
quages opposés.
Dans le cas ou les ailes ont le même angle de braquage, si l’angle est
positif (respectivement négatif), le sous-marin remonte vers la surface (res-
pect. descend), mais avec un angle de tangage presque nul. Par exemple si
on braque les deux gouvernes avec des angles β1 = β2 = 0.1rad on obtient
une variation d’altitude de 3.3m en 100 secondes avec un angle de tangage
θ = 0.013rad.

9
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

3.5 0.01

3 0.005

2.5 0

2 −0.005

1.5 −0.01

1 −0.015

0.5 −0.02

0 −0.025
0 10 20 30 40 50 60 70 80 90 100 0 10 20 30 40 50 60 70 80 90 100

Fig. 1.4 – Position z et angle de tangage pour des angles de braquage égaux (0.1 radian)

Dans le cas ou les angles de braquage sont opposés, (c’est-à-dire que les
deux ailes tendent à faire évoluer le sous marin dans la même direction), le
déplacement se fait dans le sens attendu, avec deux fois plus d’intensité que
si une seule aile est braquée. Le mouvement se fait alors avec un angle de
tangage non nul (θ ' 0.8rad)
10 0.9

0.8
0
0.7
−10
0.6

−20 0.5

−30 0.4

0.3
−40
0.2
−50
0.1
−60
0

−70 −0.1
0 10 20 30 40 50 60 70 80 90 100 0 10 20 30 40 50 60 70 80 90 100

Fig. 1.5 – Position z et angle de tangage pour des angles de braquage opposés (0.1 et
-0.1 radian)

? Essai avec un angle de roulis puis un angle de tangage non nul : dans les
deux cas, après un temps très court, le système revient à un angle de roulis
ou de tangage nul.

1.3 Linéarisation du modèle


Pour linéariser le modèle précédemment obtenu, on utilise la méthode
suivante de linéarisation tangentielle :
Soit la fonction f : f (x1 , x2 ) que l’on souhaite linéariser autour de (x10 , x20 )
alors :
∂f ∂f
Flin = f (x10 , x20 ) + ∆x1 + ∆x2 (1.2)
∂x1 x1 ,x2 ∂x2 x1 ,x2
0 0 0 0

10
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

Dans notre cas, la fonction f dépend des 12 variables d’état ainsi que des
quatres commandes (β1 (braquage des plans canards), β2 (braquage des aile-
rons arrières horizontaux), δ1 (braquage des ailerons arrières verticaux), Qc
(référence de poussée pour l’hélice)) .
Cela mène à une représentation d’état de la forme :

ẋ(t) = Ax(t) + Bu(t) + E
(1.3)
y(t) = Cx(t) + Du(t)
avec
- x l’état du système : x = [x u y v z w φ p θ q ψ r]T .
- u les commandes : u = [β1 β2 δ1 Qc ]T .
- y les sorties mesurées. dans un premier temps on peut supposer que
l’ensemble des sorties est mesurées donc y = x.
Le code Matlab correspondant aux matrices A, B, C, D et E est donné
en annexe (voir Annexe 2).

Pour vérifier la linéarisation obtenue, on effectue quelques simulations. Il


s’avère que la plus grande différence entre le modèle non-linéaire et le modèle
linéarisé se situe au niveau des gouvernes. Le comportement des deux sys-
tèmes est quasiment identique pour une même commande de poussée Qc ; en
revanche, un même angle de braquage des gouvernes (que ce soit β1 ou β2 )
produit des variations d’altitude différentes. En effet lors de la linéarisation,
la force de trainée a totalement disparu, et la force de portance n’est plus
reliée à l’angle d’incidence de l’AUV, ce qui entraine un mouvement plus
important que prévu suivant les axes Ox (pas de diminution de la vitesse
longitudinale u) et Oz (si l’aile braquée est horizontale).

1.4 Modèle LPV polytopique


Le principe est d’utiliser un outil de la commande des systèmes linéaires
pour commander un système non linéaire. On peut approximer le comporte-
ment du système non linéaire par un système Linéaire à Paramètres Variants
(LPV) c’est-à-dire un système où les matrices A, B, C et D (représentées
dans l’equation 1.4) varient en fonction d’un ou plusieurs paramètres ρ(·).

ẋ(t) = A(ρ(·))x(t) + B(ρ(·))u(t)
(1.4)
y(t) = C(ρ(·))x(t) + D(ρ(·))u(t)
Dans le cas où on peut borner a priori les variations de ces paramètres
ρ entre ρmin et ρmax , on peut construire un modèle valable dans toute la

11
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

plage de variation. Si les paramètres sont mesurables en ligne, on peut alors


construire un correcteur qui s’adapte en ligne à ces paramètres, donc un
correcteur LPV . Le principe de la méthode (pour plus d’explication, voir
chapitre 3) est de construire un polytope (ensemble convexe) dont les som-
mets correspondent aux combinaisons des bornes minimales et maximales
des paramètres variants. Ensuite, une combinaison linéaire de ces modèles
permet d’obtenir un modèle valable pour une certaine valeur de chacun des
paramètres (ce qui suppose une estimation des paramètres).

Pour le système 1.4, si on considère un seul paramètre variant ρ ∈ [ρmin ,


ρmax ], on construit deux systèmes sommets dont les matrices sont {Amin ,
Bmin , Cmin , Dmin } et {Amax , Bmax , Cmax , Dmax }.
Pour n’importe quelle valeur de ρ comprise entre ρmin et ρmax , on a alors :

A(ρ) = α1 × Amin + α2 × Amax
(1.5)
α1 + α2 = 1
Ce type de modèle peut être intéressant pour prendre en compte l’incer-
titude sur les paramètres hydrodynamiques (qui sont connus avec une erreur
allant jusqu’à 70%). Malheureusement, il y a trop de paramètres pour pou-
voir appliquer la méthode polytopique (14 paramètres ce qui ammènerait à
la construction d’un polytope de 214 sommets).

On choisit donc, dans un premier temps, d’appliquer cette méthode pour


une variation de la masse, qui est l’un des paramètres influançant le plus
le comportement du système. Cette variation sera de + ou − 20% de la
masse nominale. Le modèle linéaire obtenu lors de la phase précédente étant
linéaire vis-à-vis de la masse, la construction du modèle LPV polytopique
est très simple : on calcule les matrices d’état (A et B, les matrices C et D
étant indépendantes de la masse) pour les deux valeurs extrèmes de la masse
(Mmin et Mmax ). Ensuite, pour une valeur déterminée de la masse (M ) on
calcule la combinaison linéaire :

 AM = α1 × AMmin + α2 × AMmax
avec (1.6)
Mmax −M M −Mmin
α1 = Mmax −Mmin et α2 = Mmax −Mmin

12
Chapitre 2

Synthèse d’un correcteur H∞

2.1 Présentation de la méthode


Le principe de la commande H∞ est de spécifier des performances en
boucle fermée grâce à des gabarits fréquentiels, placés à des endroits spéci-
fiques dans la boucle de commande (suivant la fonction de sensibilité que l’on
cherche à modifier).
Par exemple, pour traiter un problème d’asservissement, il faut agir sur
la fonction S = ε/y, et donc placer un poids We comme indiquée sur la figure
ci-dessous.
Pour imposer des contraintes sur les actions, il faut jouer sur la fonction
de sensibilité KS = u(action)/r, et donc placer un poids Wu comme montrer
figure 2.1.
On peut également imposer un comportement pour certaines sorties mé-
surées : présence du poids Wy .

We Wu

du dy

+ +
r ε + u + y
K G Wy
+
-
n

Fig. 2.1 – Schéma formé par l’interconnexion du modèle du système G, du correcteur K


et des différents poids We , Wu et Wy

Le problème posé de cette façon doit ensuite être reformulé sous la forme

13
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

du problème standard :

w z
P
u y

K
Fig. 2.2 – Problème standard

Cette formalisation sert à étudier le transfert entre w (les entrées exo-


gènes) et z (les sorties à contrôler) (y étant les sorties mesurées et u les
entrées contrôlées). P est le modèle augmenté : il contient le modèle, ainsi
que les poids Wi et les incertitudes (si il y en a).
On cherche alors à déterminer le controleur K tel que :

kT (s)k∞ ≤ γ (2.1)

avec T (s) la fonction de transfert en boucle fermée du système mis sous forme
standard.

2.2 Spécification des gabarits fréquentiels


Pour calculer un correcteur H∞ , il faut tout d’abord déterminer une struc-
ture ainsi que des gabarits qui permettent de définir des spécifications (temps
de réponse en boucle fermée, erreur statique...). Dans notre cas, les spécifi-
cations à respecter sont les suivantes :
? pour la vitesse longitudinale u, un suivi de consigne avec un temps
de réponse de l’ordre de 5 secondes, une erreur statique faible (10−2 ) et une
marge de module suffisante.
? pour la position z, un suivi de consigne avec la même dynamique
que u (le sous-marin étant manœuvré par des ailerons, on considèrera que la
pente du terrain n’est pas trop abrupte : une pente trop importante ne peut
pas être franchie avec ce type d’actionneurs).
? vitesse de tangage et de roulis aussi faible que possible (par exemple
10−2 ), ceci pour faciliter, par exemple, la reconstruction des cartes à partir
des données collectées.
? respect des contraintes sur les actionneurs (angle de braquage des
gouvernes inférieur à 0.5 radian ; poussée du propulseur inférieure à Pmax =

14
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

750).

Ceci nous permet de déduire la structure nécessaire :


- un poids We sur l’erreur de poursuite pour les spécifications sur u
et z, les deux variables à asservir.
- un poids Wu sur l’action pour la contrainte sur les actionneurs.
- un poids Ws sur certaines des sorties (vitesse de roulis p et de
tangage q).

Tous les gabarits auront une forme diagonale, ce qui permet de spéci-
fier des performances pour chaque variable du système MIMO (Multi Inputs
Multi Outputs).
 
Weu 0
? We est une matrice de la forme : . Les coefficients sont
0 Wez
des transferts du premier ordre :
1 1 s + wb ε
= = s
Weu Wez Ms
+ wb
avec
- Ms = 2 pour avoir une marge de module suffisante
- wb = 0.46 pour avoir un temps de réponse de 5 secondes.
- ε = 0.01 pour voir une erreur de poursuite inférieure à 1%

? Wu est fixé à 1 pour chaque actionneur car toutes les actions sont nor-
malisées.

? Ws est fixé à 10−2 pour les états p (vitesse de roulis) et q (vitesse de


tangage)

Il suffit ensuite d’utiliser la commande Matlab sysic (qui calcule le sys-


tème augmenté sous forme standard) et la fonction lmiHinf qui calcule le
correcteur H∞ minimisant l’écart entre le gabarit spécifié et les performances
garanties avec le correcteur (niveau d’atténuation optimal γopt ).

2.3 Résultats obtenus


Pour connaitre a priori les performances du correcteur que l’on vient de
calculer, on dispose de deux outils :

15
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

- le nombre γopt retourné par la fonction lmiHinf. Plus ce nombre


est proche de 1, mieux les gabarits seront respectés (ce qui assure un com-
portement très proche de celui désiré).
- les fonctions de sensibilité S (sur u et z) qui permettent de visua-
liser le comportement fréquentiel du système bouclé obtenu.

Dans notre cas γopt est très élevé (γopt = 102) ce qui pourrait indiquer de
très mauvaises performances en boucle fermée.
On trace ensuite les fonctions de sensibilité relatives au deux variables à
contrôler :

1/Weu

Sz 1/Wez
Su

Fig. 2.3 – Fonction de sensibilité S sur u (vitesse longitudinale) et sur z, ainsi que les
gabarits correspondants

On s’aperçoit que les gabarits ne sont pas respectés (bien que les résultats
obtenus ne soient pas si mauvais que la valeur de γopt ne le laissait présager) :
- pour u, le comportement dans les hautes fréquences est conforme
au gabarit fixé, en revanche, dans les basse fréquence, il y a une augmentation
de la fonction S (−20dB, soit une erreur statique de 10%). Pour améliorer
ce comportement, on diminue la valeur de εu à 10−4 .
- pour z, la bande passante et l’erreur statique ne sont pas respectées.
La bande passante est très proche de celle fixée ; de plus, le sous-marin n’aura
jamais de pente à 90 degrés à franchir, donc on conserve ce résultat. Pour
l’erreur statique, on diminue εz à 10−4 .
Afin d’améliorer les performances et respecter les gabarits spécifiés, on va
modifier le problème à résoudre.
Le principe de la modification des gabarits est le suivant : puisque les ga-
barits ne peuvent pas être respectés, on augmente les contraintes. Le gabarits
modifié ne sera toujours pas respecté (vu que le problème est plus complexe
à résoudre), mais les gabarits initiaux seront mieux respecté.

16
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

Les résultats obtenus dans ce cas là respectent les spécifications fixées au


départ pour u et z donc on conserve les gabarits suivants : figure : 2.4

1/Weu

Su 1/Wez Sz

Fig. 2.4 – Fonction de sensibilité S sur u (vitesse longitudinale) et sur z, ainsi que les
gabarits retenus

Dans ce cas là, on a une valeur γopt encore plus importante : γopt = 10640,
mais cette valeur correspond à l’éloignement des fonctions de pondérations
par rapport aux gabarits fixés, qui sont plus contraignants que nécessaire.
On teste ce correcteur sur le système linéarisé ainsi que sur le système
non linéaire. On obtient les résultats suivants : figure : 2.5
Pour la vitesse longitudinale u : la consigne est constante et égale à
1m/sec. La réponse du modèle linéaire est conforme à nos attente, avec un
temps de réponse de 2 secondes (inférieur à celui spécifié) et une erreur sta-
tique nulle. Sur le modèle non linéaire, on observe des variations de la vitesse,
mais qui restent dans un intervalle de + ou − 5% autour de la valeur finale.
Le temps de réponse est de 6 secondes et l’erreur statique maximale est de
1% de la valeur finale.
Pour la position z : la consigne est une rampe de pente 0.4m /sec (pente
maximum pouvant être gravie par le sous-marin) sur les intervalles de temps :
[0; 100] et [200; 300] secondes et constante entre les deux. Là encore la
réponse du système linéaire est celle attendue ; celle du système non linéaire
présente un petit dépassement, mais reste très proche de la consigne.
Pour la vitesse de roulis p : l’objectif de la commande est de minimiser
cette vitesse. Il est atteint puisque les variations sont de l’ordre de 10−5 , que
ce soit sur le modèle linéaire ou non linéaire.
Pour la vitesse de tangage q : l’objectif est le même que précédemment.
Sur le modèle linaire, on note une variation assez importante de cette vi-
tesse ( allant jusqu’à 0.13 m/sec, soit 10 fois plus que ce qui était demandé.
En revanche, sur le système non linéaire, la réponse est meilleure, puisque
le maximum de variation est de 0.045 m/sec et que cette vitesse tend à se

17
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

Fig. 2.5 – Réponses temporelles obtenues avec le correcteur H∞ pour u (vitesse longi-
tudinale), z (altitude), p (vitesse de roulis) et q (vitesse de tangage). Simulation sur le
modèle linéaire (en bleu) et sur le modèle non linéaire (en vert) ainsi que les consignes
(en rouge)

18
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

stabiliser autour de zero.

Bien que le correcteur H∞ ne soit pas conçu pour fonctionner sur le


modèle non linéaire, la robustesse qu’il apporte permet d’obtenir des per-
formances dégradées pour certains états, mais qui restent assez bonnes dans
l’ensemble.

19
Chapitre 3

Synthèse d’un correcteur LPV


Polytopique

Après avoir calculé un correcteur H∞ qui fonctionne correctement sur


le modèle non linéaire, on cherche à améliorer les performances obtenues,
surtout en terme d’erreur statique sur la vitesse longitudinale u et de dépas-
sement sur l’altitude z. Pour cela, on va calculer un correcteur sur le modèle
LPV polytopique présenté dans le premier chapitre (voir 1.4).

3.1 Explication de la méthode


La commande LPV polytopique repose sur la synthèse H∞ . Pour la
résolution, on utilise une fonction de Lyapunov V de la forme suivante :
V = ATcl P Acl (avec P une matrice définie positive : P = P T > 0 ; Acl est la
matrice d’état de la boucle fermée). La dérivée de V doit être négative pour
assurer la stabilité :
V̇ = ATcl P + P Acl < 0 (3.1)
Dans le cadre des systèmes LPV polytopique, on ne dispose plus d’une
seule représentation d’état du système, mais de 2N (avec N le nombre de
paramètres variants). Il y a donc 2N fonctions de Lyapunov à vérifier. Pour
garantir la stabilité quadratique dans l’ensemble du polytope il faut trouver
une unique matrice P qui vérifie l’ensemble des 2N équations.
Par exemple dans le cas ou une seul paramètre varie, il y a deux matrices
A : A1 et A2 , on ne cherche pas à vérifier :
 T
A1 P1 + P1 A1 < 0
(3.2)
AT2 P2 + P2 A2 < 0

20
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

mais : 
AT1 P + P A1 < 0
(3.3)
AT2 P + P A2 < 0

3.2 Mise en œuvre


Dans un premier temps, on construit les deux systèmes sommets pour
des masses Mmin et Mmax égales à plus ou moins 20% de la masse nominale
M . On obtient les systèmes Gmin = {Amin , Bmin , Cmin , Dmin } et Gmax =
{Amax , Bmax , Cmax , Dmax }.
Pour pouvoir comparer le correcteur LPV polytopique que l’on va calculer
avec le correcteur H∞ obtenu précédemment, on garde les mêmes pondéra-
tions We , Wu et Wy .
On utilise ensuite la fonction "lmiHinfPolytope (développée par Charles
Poussot : http ://www.lag.ensieg.inpg.fr/cpoussot/index.html) qui calcule les
deux correcteurs correspondant à chacun des sommets du polytope, ainsi que
le γopt .

3.3 Résultats obtenus


Comme pour le correcteur H∞ , le γopt obtenu est très important : γopt =
10633.
Dans un premier temps, on calcule le correcteur correspondant au modèle
nominal :

 Knominal = α1 × Kmin + α2 × Kmax
avec (3.4)
Mmax −Mnominal Mnominal −Mmin
α1 = Mmax −Mmin = 0.5 et α2 = Mmax −Mmin = 0.5

On teste ce correcteur sur les modèles linéaires et non linéaire, en appli-


quant les mêmes consignes que précédement : figure 3.1
Les réponses obtenues sont meilleures qu’avec le correcterur H∞ :

Pour la vitesse longitudinale u : le modèle linéaire donne les mêmes ré-


sultats qu’avec le correcteur H∞ . Sur le modèle non linéaire, on obtient de
meilleures performances : les changements de référence sur z sont mieux ab-
sorbés : les pics ont une amplitude plus faible (2.5%) et l’erreur statique ne
dépasse pas 0.1%.
Pour l’altitude z : le suivi de référence est meilleur qu’auparavant, le
dépassement qui était visible au changement de référence a disparu.
Pour la vitesse de roulis p : elle reste très faible, de l’ordre de 10−6 m/sec.

21
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

Fig. 3.1 – Réponses temporelles obtenues avec le correcteur LP V polytopique pour u


(vitesse longitudinale, z (altitude), p (vitesse de roulis) et q (vitesse de tangage). Simula-
tion sur le modèle linéaire (en bleu) et sur le modèle non linéaire (en vert) ainsi que les
consignes (en rouge)

22
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

Pour la vitesse de tangage q : les pics observés au changement de référence


pour z ont une amplitude un peu plus importante : 0.03 au lieu de 0.015 pour
le correcteur H∞ , mais cette fois la vitesse se stabilise autour de zéro.
De façon générale, on peut noter que dans le cas de la commande LPV
polytopique, les résultats obtenus sur les deux modèles sont beaucoup plus
proches que dans le cas de la commande H∞ .
Précédement, nous avons expliqué que cette technique était utilisable si
on pouvait estimer ou mesurer le paramètre qui varie. Mais en simulant le
correcteur nominal (Knominal = 0.5 × Kmin + 0.5 × Kmax ) sur le système
minimum et sur le système maximum, on se rend compte que le système est
stable, et les résultats, bien que légèrement dégradés, restent très proches
des spécifications fixées au départ. Le correcteur calculé pour une borne de
l’intervalle donne toujours des résultats corrects sur la borne opposée. Voici
par exemple les courbes obtenues pour le correcteur Kmax sur le système
Gmin : voir figure 3.2
On pourrait donc s’affranchir de la mesure de la masse : en utilisant tout
le temps le correcteur nominal (calculé pour la masse nominale), on obtient
des résultats satisfaisants.
En augmentant progressivement les variations de masse, on s’aperçoit que
l’on peut calculer un correcteur pour un écart de + ou − 70% de la masse
nominale. Pour ces valeurs, les performances sont légèrement dégradées, mais
les spécifications sont respectées. Au delà, on obtient un système instable en
boucle fermée.

23
ROCHE Emilie Commande robuste d’un véhicule sous-marin autonome

Fig. 3.2 – Réponses temporelles obtenues avec le correcteur LP V polytopique pour u


(vitesse longitudinale, z (altitude), p (vitesse de roulis) et q (vitesse de tangage). Simula-
tion sur le modèle linéaire (en bleu) et sur le modèle non linéaire (en vert) ainsi que les
consignes (en rouge)

24
Conclusion

Dans ce rapport, après avoir construit les modèles nécessaires au calcul


d’une commande, nous avons réalisé deux types de correcteurs robustes. Tout
d’abord un correcteur H∞ a été synthétisé qui donne des résultats très sa-
tisfaisants sur le modèle linéaire, mais qui, sur le modèle non linéaire, laisse
apparaitre une erreur statique assez importante sur u (la vitesse longitudi-
nale) et un dépassement sur z (l’altitude).
Pour remédier à ces imperfections, un deuxième type de correcteur a été
conçu : un correcteur LPV polytopique. Avec ce correcteur, les résultats obte-
nus sont meilleurs que précédemment, puisque, en considérant une variation
de masse de + ou − 20% par rapport à la masse nominale, on obtient une
erreur statique quasiment nulle pour u et plus aucun dépassement pour z. De
plus, bien que cette méthode nécessite en théorie une mesure ou estimation
du paramètre variant, on s’est aperçu que le correcteur calculé sur le système
nominal permettait de stabiliser le système et de garantir les performances
spécifiées lors de la synthèse.

Dans l’avenir l’objectif est d’utiliser la méthode LPV polytopique pour


faire une synthèse de correcteur à période variable. Ainsi, en fonction de
l’utilisation des ressources, ou de la qualité de la commande, le correcteur
pourrait adapter la période d’échantillonnage, ainsi que les performances dé-
sirées, pour continuer à avoir un système stable en boucle fermée.

25
Annexe 1 : Détails des équations régissant le mouvement du sous-marin

Etude cinématique

La trajectoire du véhicule est donnée par la relation suivante :

η˙1 = Jc1 (η2 )ν1 (3.5)

où Jc1 (η2 ) correspond à la matrice de passage du référentiel inertiel (où sont


exprimées les vitesses linéaires u, v et w) au référentiel local (où sont expri-
mées les positions x, y et z) :

 
cos θ cos ψ sin θ sin φ cos ψ − sin ψ cos φ sin θ cos φ cos ψ + sin ψ sin φ
Jc1 (η2 ) =  cos θ sin ψ sin θ sin φ sin ψ + cos ψ cos φ sin θ cos φ sin ψ − cos ψ sin φ 
− sin θ cos θ sin φ cos θ cos φ
(3.6)
De la même façon, pour les vitesses angulaires :

η˙2 = Jc2 (η2 )ν2 (3.7)

avec  
1 sin φ tan θ cos φ tan θ
Jc2 (η2 ) =  0 cos φ − sin φ  (3.8)
0 sin φ/ cos θ cos φ/ cos θ

Etude dynamique

• Dynamique d’un corps rigide


On applique le premier principe de la dynamique au centre de gravité G
du sous-marin :
Γ1 = mV̇G/<0 (3.9)
Γ1 étant la somme des forces appliquées au sous-marin.
On applique également les lois de la mécanique des solides :

Γ2 = Ḣ(C)/<0 + VC ∧ (mVG ) (3.10)


−→
avec H(C) = m(CG ∧ VC ) + IC ν2 le moment cinétique au point C.
Le développement des calculs permet d’aboutir à une relation du type :

Md ν̇ = Gd (ν)ν + Γ (3.11)
avec : Md la matrice d’inertie due à la dynamique du système :
 
m 0 0 0 mzG −myG

 0 m 0 −mz G 0 −mxG 

 0 0 m myG −mxG 0 
Md =  

 0 −mzG myG Ixx −Ixy −Ixz 

 mzG 0 −mxG −Ixy Iyy −Iyz 
−myG mxG 0 Ixz −Iyz Izz
et Gd (ν)ν le vecteur des forces de Coriolis et des forces centrifuges appliquées
au véhicule :
" −→ #
03x3 mSν1 + ν2 ∧ CG
Gd (ν) = −→
mSν1 + ν2 ∧ CG S(IC ν2 )

0 0 0 0 −m(w + pyG − qxG ) m(v − pzG + rxG )


 
 0 0 0 m(w + pyG − qxG ) 0 −m(u + qzG − ryG ) 
0 0 0 −m(v − pzG + rxG m(u + qzG − ryG ) 0
 
Gd (ν) = 
 
0 −m(w + pyG − qxG ) m(v − pzG + rxG ) 0 Ixz p + Iyz q − Izz r −Ixy p + Iyy q − Iyz r

 
 m(w + py − qx ) 0 −m(u + qzG − ryG ) −Ixz p − Iyz q + Izz r 0 −Ixx p + Ixy q + Ixz r 
G G
−m(v − pzG + rxG ) m(u + qzG − ryG ) 0 Ixy p − Iyy q + Iyz r Ixx p − Ixy q − Ixz r 0

• Poids et poussée d’Archimède

En ajoutant la contribution du poids (F = mg) et celle de la poussée


d’Archimède (FA = ρ∆g, ∆ etant le volume immergé) et en projetant dans
le repère local lié au véhicule, on obtient le résultat suivant :
 
−(m − ρ∆) sin θ

 (m − ρ∆) sin φ cos θ 

 (m − ρ∆) cos φ cos θ 
Γg (ν) = g  
 (yg m − yf ρ∆) cos θ cos φ − (zg m − zf ρ∆) cos θ sin φ 
 
 −(zg m − zf ρ∆) sin θ − (xg m − xf ρ∆) cos θ cos φ 
(xg m − xf ρ∆) cos θ sin φ + (yg m − yf ρ∆) sin θ

• Efforts hydrodynamiques
Ces forces et moments agissent sur tout corps en mouvement dans un
fluide supposé visqueux. Ils sont dus à l’action de la masse d’eau ajoutée
ainsi qu’aux frottements visqueux du fluide sur le corps en mouvement. Ils
ne peuvent pas être obtenus théoriquement et l’estimation des coefficients est
très mauvaise (marge de connaissance de 50 à 70%). D’une façon générale,
on peut formuler les efforts hydrodynamiques de la manière suivante :
Force axiale : Xu|u| u|u| + Xvr vr + Xwq wq

Force latérale : Ywp wp + Yur ur + Yuv uv + Yup up + Yr|r| r|r| + Yr|v| r|v| + Yv|r| v|r| + Yv|v| v[v|

Force verticale : Zuw uw + Zuq uq + Zvp vp + Zw|w| w|w| + Zw|q| w|q| + Zq|w| q|w| + Zq|q| q|q|

Moment de roulis : Luv uv + Lur ur + Lup up + Lp|p| p|p|

Moment de tangage : Muw uw+Muq uq+Mpr pr+Mq|q| q|q|+Mw|q| w|q|+Mq|w| q|w|+Mw|w| w|w|

Moment de lacet : Nuv uv+Nur ur+Nup up+Npq pq+Nr|r| r|r|+Nr|v| r|v|+Nv|r| v|r|+Nv|v| v|v|

avec :
? Xvr Xwq Ywp Yuv Zuw Zuq des termes de nature inertielle : ils corres-
pondent à la prise en compte de la masse d’eau ajoutée lors de la dérivation
de la vitesse.
? Xu|u| Yv|v| Zw|w| Yr|v| Yv|r| Zw|q| Zq|w| Nv|v| Mw|w| Yr|r| Zq|q| Nv|r| Nr|v|
Mw|q| Mq|w| Nr|r| Mq|q| des termes de trainée.
? Yur Yuv Yup Zuw Zuq Luv Lur Lup Muw Muq Nuv Nur Nup des termes de
portance.
? Lp|p| est un terme d’amortissement en roulis.

• Propulsion par l’hélice


La propulsion principale de l’engin est assurée par une hélice placée dans
l’axe du véhicule. Une consigne sous forme de poussée est fournie par le cor-
recteur,
p ce qui permet de calculer la vitesse de rotation des pales de l’hélice :
N = consigne/P x ∗ 2.24.
Cette vitesse permet de calculer le coefficient d’avance : J = NVDaH avec
Va la vitesse d’avance ( Va = u + q ∗ zg ). On peut alors calculer le coefficient
de poussée : Kt = f (J, J 2 , J 3 ).
Reste maintenant à calculer l’angle γ, dont dépend l’expression des efforts
Va
de propulsion : gamma = arctan 0.7∗N ∗DH
.
L’expression des efforts de porpulsion étant assez complexe , elle ne sera
pas détaillée ici.

• Forces dues aux gouvernes


Les gouvernes exercent deux forces : la force de portance fn normale à
la surface de l’aileron et la force de trainée ft , tangente à la surfac dont les
expressions sont les suivantes :

fn = (β − α) ∗ vr2 ∗ zb2 (3.12)


et
ft = (0.01 + 1.1 ∗ (β − α)2 ∗ vr2 ∗ (zb2 /2.5) (3.13)
avec :
? β : l’angle d’inclinaison de la gouverne.
? α : l’angle d’incidence du sous-marin dans la direction considérée.
? vr : la vitesse de l’eau sur l’aileron.
? zb2 : coefficient dépendant de la surface des gouvernes.
Il suffit ensuite de projeter ces forces sur les axes Ox et Oz pour les
gouvernes horizontales, et Ox et Oy pour les gouvernes verticales.
Annexe 2 : Détails des matrices de la représentation d’état

%% Systeme linearise
% Etat X=[x; u; y; v; z; w; phi; p; theta; q; psi; r]
% comande:U= [beta1, beta2, delta1, Qc]
% [gouv_arriere_hor, gouv_avant, gouv_arriere_vert, propulsion]

beta10=0;
beta20=0;
delta10=0;
Qc0lin=0;
reflin=[beta10, beta20, delta10, Qc0lin];

%parametres:

Kt0=0.369516;
Kt1=0.490246;
Kt2=0.182464;
Kt3=0.391137;

Kt1u=Kt1/(2.24*Dh*sqrt(Qc0*Px));
Kt2u=Kt2*2*u0/(2.24^2*Dh^2*Qc0*Px);
Kt3u=Kt3*3*u0^2/(2.24^3*Dh^3*(Qc0*Px)^(3/2));
Kt1Qc=Kt1*u0/(2.24*Dh*sqrt(Qc0*Px));
Kt2Qc=Kt2*u0^2/(2.24^2*Dh^2*Qc0*Px);
Kt3Qc=Kt3*u0^3/(2.24^3*Dh^3*(Qc0*Px)^(3/2));
zb1prim = (paght2+paghb2)*zb1;
yd1prim = pagvh3 * yd1;
yd3prim = pagvb3 * yd3;
yd1pp = pagvh1 * yd1;
yd2pp = pagj1 * yd2;
yd3pp = pagvb1 * yd3;

%% model nominal
%vecteur correspondant au derivee de chacune des vitesses lineaires
et angulaires

Au=[ 0;%x
(2*Xuu*u0*A11+k0*Qc0*(-Kt1u+Kt2u-Kt3u)*A11);%u
0;%y
(Yuv*u0*A12+Luv*u0*A14+Nuv*u0*A16-u0*(yd3-yd1)*A12);%v
0;%z
(Zuw*u0*A13+Muw*u0*A15-u0*(zb2+zb1)*A13+PATS1*u0*zb2*A15+paght1*u0*zb1*A15);%w
((m_nominal-rho*delta)*g*A12-(Zg*m_nominal-Zf*rho*delta)*g*A14);%phi
(Yup*u0*A12+Lup*u0*A14+Nup*u0*A16);%p
(-(m_nominal-rho*delta)*g*A11-(Zg*m_nominal-Zf*rho*delta)*g*A15);%theta
(m_nominal*u0*A13+Zuq*u0*A13+Muq*u0*A15+k0*Qc0*Zg*(-Kt1u+Kt2u-Kt3u)*A11);%q
0;%psi
(-m_nominal*u0*A12+m_nominal*Zg*u0*A14+Yur*u0*A12+Lur*u0*A14+Nur*u0*A16)];

Bu=[(u0^2*zb1*A13+u0^2*zb1prim*A14-paght1*u0^2*zb1*A15);%beta1
(u0^2*zb2*A13-PATS1*u0^2*zb2*A15);%beta2
(u0^2*(yd3-yd1)*A12-u0^2*(yd1prim+yd3prim)*A14+(yd1pp+yd3pp)*u0^2*A16+A16*yd2pp/(rho+PI+Dh^2)...
...*(k0*Qc0*(Kt0-Kt1Qc+Kt2Qc-Kt3Qc)));%delta1
(k0*(Kt0-Kt1Qc+Kt2Qc-Kt3Qc+Qc0*(Kt1Qc/(2*Qc0)-Kt2Qc/Qc0+Kt3Qc*3/(2*Qc0)))*A11);%Qc
];

Av=[ 0;%x
(2*Xuu*u0*A21+k0*Qc0*(-Kt1u+Kt2u-Kt3u)*A21);%u
0;%y
(Yuv*u0*A22+Luv*u0*A24+Nuv*u0*A26-u0*(yd3-yd1)*A22);%v
0;%z
(Zuw*u0*A23+Muw*u0*A25-u0*(zb2+zb1)*A23+PATS1*u0*zb2*A25+paght1*u0*zb1*A25);%w
((m_nominal-rho*delta)*g*A22-(Zg*m_nominal-Zf*rho*delta)*g*A24);%phi
(Yup*u0*A22+Lup*u0*A24+Nup*u0*A26);%p
(-(m_nominal-rho*delta)*g*A21-(Zg*m_nominal-Zf*rho*delta)*g*A25);%theta
(m_nominal*u0*A23+Zuq*u0*A23+Muq*u0*A25+k0*Qc0*Zg*(-Kt1u+Kt2u-Kt3u)*A21);%q
0;%psi
(-m_nominal*u0*A22+m_nominal*Zg*u0*A24+Yur*u0*A22+Lur*u0*A24+Nur*u0*A26)];

Bv=[(u0^2*zb1*A23+u0^2*zb1prim*A24-paght1*u0^2*zb1*A25);%beta1
(u0^2*zb2*A23-PATS1*u0^2*zb2*A25);%beta2
(u0^2*(yd3-yd1)*A22-u0^2*(yd1prim+yd3prim)*A24+(yd1pp+yd3pp)*u0^2*A26+A26*yd2pp/(rho+PI+Dh^2)...
...*(k0*Qc0*(Kt0-Kt1Qc+Kt2Qc-Kt3Qc)));%deltA2
(k0*(Kt0-Kt1Qc+Kt2Qc-Kt3Qc+Qc0*(Kt1Qc/(2*Qc0)-Kt2Qc/Qc0+Kt3Qc*3/(2*Qc0)))*A21);%Qc
];

Aw=[ 0;%x
(2*Xuu*u0*A31+k0*Qc0*(-Kt1u+Kt2u-Kt3u)*A31);%u
0;%y
(Yuv*u0*A32+Luv*u0*A34+Nuv*u0*A36-u0*(yd3-yd1)*A32);%v
0;%z
(Zuw*u0*A33+Muw*u0*A35-u0*(zb2+zb1)*A33+PATS1*u0*zb2*A35+paght1*u0*zb1*A35);%w
((m_nominal-rho*delta)*g*A32-(Zg*m_nominal-Zf*rho*delta)*g*A34);%phi
(Yup*u0*A32+Lup*u0*A34+Nup*u0*A36);%p
(-(m_nominal-rho*delta)*g*A31-(Zg*m_nominal-Zf*rho*delta)*g*A35);%theta
(m_nominal*u0*A33+Zuq*u0*A33+Muq*u0*A35+k0*Qc0*Zg*(-Kt1u+Kt2u-Kt3u)*A31);%q
0;%psi
(-m_nominal*u0*A32+m_nominal*Zg*u0*A34+Yur*u0*A32+Lur*u0*A34+Nur*u0*A36)];

Bw=[(u0^2*zb1*A33+u0^2*zb1prim*A34-paght1*u0^2*zb1*A35);%beta1
(u0^2*zb2*A33-PATS1*u0^2*zb2*A35);%beta2
(u0^2*(yd3-yd1)*A32-u0^2*(yd1prim+yd3prim)*A34+(yd1pp+yd3pp)*u0^2*A36+A36*yd2pp/(rho+PI+Dh^2)...
...*(k0*Qc0*(Kt0-Kt1Qc+Kt2Qc-Kt3Qc)));%deltA3
(k0*(Kt0-Kt1Qc+Kt2Qc-Kt3Qc+Qc0*(Kt1Qc/(2*Qc0)-Kt2Qc/Qc0+Kt3Qc*3/(2*Qc0)))*A31);%Qc
];

Ap=[ 0;%x
(2*Xuu*u0*A41+k0*Qc0*(-Kt1u+Kt2u-Kt3u)*A41);%u
0;%y
(Yuv*u0*A42+Luv*u0*A44+Nuv*u0*A46-u0*(yd3-yd1)*A42);%v
0;%z
(Zuw*u0*A43+Muw*u0*A45-u0*(zb2+zb1)*A43+PATS1*u0*zb2*A45+paght1*u0*zb1*A45);%w
((m_nominal-rho*delta)*g*A42-(Zg*m_nominal-Zf*rho*delta)*g*A44);%phi
(Yup*u0*A42+Lup*u0*A44+Nup*u0*A46);%p
(-(m_nominal-rho*delta)*g*A41-(Zg*m_nominal-Zf*rho*delta)*g*A45);%theta
(m_nominal*u0*A43+Zuq*u0*A43+Muq*u0*A45+k0*Qc0*Zg*(-Kt1u+Kt2u-Kt3u)*A41);%q
0;%psi
(-m_nominal*u0*A42+m_nominal*Zg*u0*A44+Yur*u0*A42+Lur*u0*A44+Nur*u0*A46)];

Bp=[(u0^2*zb1*A43+u0^2*zb1prim*A44-paght1*u0^2*zb1*A45);%beta1
(u0^2*zb2*A43-PATS1*u0^2*zb2*A45);%beta2
(u0^2*(yd3-yd1)*A42-u0^2*(yd1prim+yd3prim)*A44+(yd1pp+yd3pp)*u0^2*A46+A46*yd2pp/(rho+PI+Dh^2)...
...*(k0*Qc0*(Kt0-Kt1Qc+Kt2Qc-Kt3Qc)));%deltA4
(k0*(Kt0-Kt1Qc+Kt2Qc-Kt3Qc+Qc0*(Kt1Qc/(2*Qc0)-Kt2Qc/Qc0+Kt3Qc*3/(2*Qc0)))*A41);%Qc
];

Aq=[ 0;%x
(2*Xuu*u0*A51+k0*Qc0*(-Kt1u+Kt2u-Kt3u)*A51);%u
0;%y
(Yuv*u0*A52+Luv*u0*A54+Nuv*u0*A56-u0*(yd3-yd1)*A52);%v
0;%z
(Zuw*u0*A53+Muw*u0*A55-u0*(zb2+zb1)*A53+PATS1*u0*zb2*A55+paght1*u0*zb1*A55);%w
((m_nominal-rho*delta)*g*A52-(Zg*m_nominal-Zf*rho*delta)*g*A54);%phi
(Yup*u0*A52+Lup*u0*A54+Nup*u0*A56);%p
(-(m_nominal-rho*delta)*g*A51-(Zg*m_nominal-Zf*rho*delta)*g*A55);%theta
(m_nominal*u0*A53+Zuq*u0*A53+Muq*u0*A55+k0*Qc0*Zg*(-Kt1u+Kt2u-Kt3u)*A51);%q
0;%psi
(-m_nominal*u0*A52+m_nominal*Zg*u0*A54+Yur*u0*A52+Lur*u0*A54+Nur*u0*A56)];

Bq=[(u0^2*zb1*A53+u0^2*zb1prim*A54-paght1*u0^2*zb1*A55);%beta1
(u0^2*zb2*A53-PATS1*u0^2*zb2*A55);%beta2
(u0^2*(yd3-yd1)*A52-u0^2*(yd1prim+yd3prim)*A54+(yd1pp+yd3pp)*u0^2*A56+A56*yd2pp/(rho+PI+Dh^2)...
...*(k0*Qc0*(Kt0-Kt1Qc+Kt2Qc-Kt3Qc)));%delta1
(k0*(Kt0-Kt1Qc+Kt2Qc-Kt3Qc+Qc0*(Kt1Qc/(2*Qc0)-Kt2Qc/Qc0+Kt3Qc*3/(2*Qc0)))*A51);%Qc
];

Ar=[ 0;%x
(2*Xuu*u0*A61+k0*Qc0*(-Kt1u+Kt2u-Kt3u)*A61);%u
0;%y
(Yuv*u0*A62+Luv*u0*A64+Nuv*u0*A66-u0*(yd3-yd1)*A62);%v
0;%z
(Zuw*u0*A63+Muw*u0*A65-u0*(zb2+zb1)*A63+PATS1*u0*zb2*A65+paght1*u0*zb1*A65);%w
((m_nominal-rho*delta)*g*A62-(Zg*m_nominal-Zf*rho*delta)*g*A64);%phi
(Yup*u0*A62+Lup*u0*A64+Nup*u0*A66);%p
(-(m_nominal-rho*delta)*g*A61-(Zg*m_nominal-Zf*rho*delta)*g*A65);%theta
(m_nominal*u0*A63+Zuq*u0*A63+Muq*u0*A65+k0*Qc0*Zg*(-Kt1u+Kt2u-Kt3u)*A61);%q
0;%psi
(-m_nominal*u0*A62+m_nominal*Zg*u0*A64+Yur*u0*A62+Lur*u0*A64+Nur*u0*A66)];

Br=[(u0^2*zb1*A63+u0^2*zb1prim*A64-paght1*u0^2*zb1*A65);%beta1
(u0^2*zb2*A63-PATS1*u0^2*zb2*A65);%beta2
(u0^2*(yd3-yd1)*A62-u0^2*(yd1prim+yd3prim)*A64+(yd1pp+yd3pp)*u0^2*A66+A66*yd2pp/(rho+PI+Dh^2)...
...*(k0*Qc0*(Kt0-Kt1Qc+Kt2Qc-Kt3Qc)));%delta1
(k0*(Kt0-Kt1Qc+Kt2Qc-Kt3Qc+Qc0*(Kt1Qc/(2*Qc0)-Kt2Qc/Qc0+Kt3Qc*3/(2*Qc0)))*A61);%Qc
];

Ax = [0 1 0 0 0 0 0 0 0 0 0 0];
Ay = [0 0 0 1 0 0 0 0 0 0 u0 0];
Az = [0 0 0 0 0 1 0 0 -u0 0 0 0];
Aphi = [0 0 0 0 0 0 0 1 0 0 0 0];
Atheta = [0 0 0 0 0 0 0 0 0 1 0 0];
Apsi = [0 0 0 0 0 0 0 0 0 0 0 1];

%matrice de la representation d’etat


As = [Ax; Au’; Ay; Av’; Az; Aw’; Aphi; Ap’; Atheta; Aq’; Apsi; Ar’];

%[beta1, beta2, delta1, Qc, 1]


Bs = [0 0 0 0; Bu’; 0 0 0 0 ; Bv’; 0 0 0 0 ; Bw’; 0 0 0 0 ; Bp’; 0 0 0 0 ; Bq’; 0 0 0 0 ; Br’];

Cs = eye(12);
Ds = zeros(12,4);
Eq = [u0;0; 0; 0; 0; (m_nominal-rho*delta)*g; 0; 0; 0; 0; 0; 0];
Annexe 3 : Résultats de simulation avec le correcteur H∞ : zooms

0.8

0.6

0.4

0.2

0
0 5 10 15 20 25 30 35 40 45 50

Fig. 3.3 – u (vitesse longitudinale) obtenue en simulation avec le correcteur H∞ sur


le modèle linéaire (en bleu) et sur le modèle non linéaire (en vert) ainsi que consigne (en
rouge)

42

41

40

39

38

37

36

35

34
90 95 100 105 110 115 120 125 130 135 140

Fig. 3.4 – z (altitude) obtenue en simulation avec le correcteur H∞ sur le modèle


linéaire (en bleu) et sur le modèle non linéaire (en vert) ainsi que consigne (en rouge)
Annexe 4 : Résultats de simulation avec le correcteur LP V polytopique : zooms

1.4

1.2

0.8

0.6

0.4

0.2

0
0 5 10 15 20 25 30 35 40 45 50

Fig. 3.5 – u (vitesse longitudinale) obtenue en simulation avec le correcteur LP V sur


le modèle linéaire (en bleu) et sur le modèle non linéaire (en vert) ainsi que les consignes
(en rouge)

45

40

35

30

25

20

15

10

−5
0 20 40 60 80 100 120

Fig. 3.6 – z (altitude) obtenue en simulation avec le correcteur LP V sur le modèle


linéaire (en bleu) et sur le modèle non linéaire (en vert) ainsi que les consignes (en rouge)
Annexe 5 : Correcteur LP V polytopique avec + ou - 70% de variation sur la masse

Fig. 3.7 – Réponses temporelles obtenues avec le correcteur LP V polytopique pour u


(vitesse longitudinale, z (altitude), p (vitesse de roulis) et q (vitesse de tangage). Simula-
tion sur le modèle linéaire (en bleu) et sur le modèle non linéaire (en vert) ; consigne en
rouge
Bibliographie

A. Pedro Aguiar, A. M. P. (2002). Dynamic Positioning and Way-Point


Tracking of Underactuated AUVs in the Presence of Ocean Currents. In
Conference on decision and control.

A. Pedro Aguiar, João P. Hespanha, A. M. P. (2007). Switched seesaw control


for the stabilization of underactuated vehicles. Automatica, 43 :1997–2008.

Apkarian, P. (1997). On the discretization of LMI-synthesized Linear


Parameter-varying Controllers. automatica, 33 :655–661.

Apkarian, P. (1998). Advanced Gain-Scheduling Techniques for Uncertain


Systems. IEEE Transactions on control systems technologiy, 6 :21–32.

BIANNIC, J.-M. (1996). Commande robuste des systèmes à paramètres va-


riables. PhD thesis, ENSAE.

C. S. Chin, M.W.S. Lau, E. L. G. S. (2006). A robust controller design method


and stability analysis of an underactuated underwater vehicle. Internatio-
nal Journal of Applied Mathematics and Computer Sciences, 16 :345–356.

C. Silvestre, A. P. (2004). Control of the INFANTE AUV using gain schedu-


led static output feedback. Control Engineering Practice, 12 :1501–1509.

Cervin, A. (2003). Integrated Control and Real-Time Scheduling. PhD thesis,


Lund Institute of Technology.

Daniel Simon, David Robert, O. S. (2005). Robust control/scheduling co-


design : application to robot control. In IEEE Real Time and Embdded
Technology and applications Symposium.

Fossen, T. I. (1994). Guidance and control of Ocean Vehicles. John Wiley &
Sons Ltd.

36
Henriksson, D. (2006). Resource-Constrained Embedded Control and Com-
puting Systems. PhD thesis, Department of Automatic Control Lund Uni-
versity.

N.E.Leonard, D.A. Paley, F. L. R. S. F. D. F. R. D. (2007). Collective motion,


sensor networks, and ocean sampling. Proceedings of the IEEE, 95 :48–74.

Pierre Apkarian, Pascal Gahinet, G. B. (1995). Self-scheduled H∞ Control


of Linear Parameter-varying Systems : a design Example. Automatica,
31 :1251–1261.

Robert, D. (2007). Contribution à l’interaction commande / ordonnance-


ment. PhD thesis, INPG.

Sala, A. (2005). Computer control under time-varying samplin period : An


LMI gridding approach. automatica, 41 :2077–2082.

Santos, A. S. (1995). Contribution à la conception des sous-marins auto-


nomes : architecture des capteurs d’altitude, et commande référencées cap-
teurs. PhD thesis, Ecole nationale supérieure des Mines de Paris.

Z. Feng, R. A. (2004). Reduced order H∞ control of an autonomous under-


water vehicle. Control Engineering Practice, 12 :1511–1520.

Zin, A. (2005). Sur la commande robuste de suspension automobiles en vue


du control global de chassis. PhD thesis, INPG.

Vous aimerez peut-être aussi