Commande robuste d`un véhicule sous-marin autonome - GIPSA-Lab

publicité
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 chacun 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 vehicles (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 Modélisation du véhicule sous-marin
1.1 Modèle hydromécanique . . . . . . .
1.2 Mise en oeuvre sous Matlab . . . . .
1.2.1 S-function . . . . . . . . . . .
1.2.2 Création du schéma Simulink
1.2.3 Vérification du modèle obtenu
1.3 Linéarisation du modèle . . . . . . .
1.4 Modèle LPV polytopique . . . . . . .
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
. 4
. 7
. 7
. 8
. 8
. 10
. 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, responsables 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 NEtworked 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 sousmarins (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 principalement 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’évolution 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 trajectoire à 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 Automatique) a pour vocation d’entreprendre des recherches fondamentales et appliquées dans les domaines des sciences et technologies de l’information et de la
communication (STIC). L’institut assure également un fort transfert de technologie 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 enseignantschercheurs, 200 ingénieurs, techniciens, administratifs, 200 doctorants et postdoctorants (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 à reconfiguration 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 systèmes. Il développe des applications dans les secteurs de l’interaction multimodale, des télécommunications, de l’énergie, de l’environnement, des systè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 permanents, 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, automatique 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 sousmarin, qui tient compte des aspects cinématiques, dynamiques et hydrodynamiques 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 correcteur, 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 également 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, contrairement 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
du véhicule, on utilisera un vecteur d’état
le comportement
η(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
Y0
X0
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 dynamique (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 centrifuges. Il est également composé de deux termes : Gd dû aux forces dynamiques, et Ga dû aux forces hydrodynamiques (calculées à partir des coefficients de la matrice d’inertie d’eau ajoutée).
- D(ν) est la matrice des coefficients d’amortissement hydrodynamique (également issue d’estimation donc la connaissance est très approximative).
- Γ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 ).
β2
β1
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 hydrodynamiques (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 sousmarin 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
1.2
Commande robuste d’un véhicule sous-marin autonome
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éfinir 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’algorithme 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 Simulink.
? static void mdlTerminate(SimStruct *S){} clos la S-function. Dans
notre cas aucune procédure particulière est nécessaire donc cette fonction restera vide (mais sa présence est indispensable).
7
ROCHE Emilie
1.2.2
Commande robuste d’un véhicule sous-marin autonome
Création du schéma Simulink
On utilise une S-function pour décrire chacun des comportements présenté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 comportement 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 modè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 systè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 vitesse 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’application 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 échelon à 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 évolution 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 braquages 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 (respect. 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
10
20
30
40
50
60
70
80
90
−0.025
0
100
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)
0.9
10
0.8
0
0.7
−10
0.6
−20
0.5
−30
0.4
0.3
−40
0.2
−50
0.1
−60
−70
0
0
10
20
30
40
50
60
70
80
90
100
−0.1
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
10
0
0
0
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 ailerons 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 systè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 comportement 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 sommets 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’incertitude sur les paramètres hydrodynamiques (qui sont connus avec une erreur
allant jusqu’à 70%). Malheureusement, il y a trop de paramètres pour pouvoir 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)

M −Mmin
Mmax −M
α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écifiques 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
ε
r
+
K
+
+
dy
u
G
+
+
y
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
P
u
z
y
K
Fig. 2.2 – Problème standard
Cette formalisation sert à étudier le transfert entre w (les entrées exogè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 structure 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écifications à 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écifier des performances pour chaque variable du système MIMO (Multi Inputs
Multi Outputs).
Weu 0
. Les coefficients sont
? We est une matrice de la forme :
0 Wez
des transferts du premier ordre :
1
s + wb ε
1
=
= s
Weu
Wez
+ wb
Ms
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 normalisé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 systè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 comportement très proche de celui désiré).
- les fonctions de sensibilité S (sur u et z) qui permettent de visualiser 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 gabarits 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
1/Wez
Su
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 statique 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 vitesse ( 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 longitudinale), 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 performances 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épassement 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
mais :
3.2
Commande robuste d’un véhicule sous-marin autonome
AT1 P + P A1 < 0
AT2 P + P A2 < 0
(3.3)
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érations 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)

Mnominal −Mmin
Mmax −Mnominal
α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 appliquant 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 absorbé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). 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)
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). 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)
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 satisfaisants 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 longitudinale) 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 obtenus 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 exprimé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 :
avec
η˙2 = Jc2 (η2 )ν2
(3.7)

1 sin φ tan θ cos φ tan θ
cos φ
− sin φ 
Jc2 (η2 ) =  0
0 sin φ/ cos θ cos φ/ cos θ
(3.8)

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
0
−mxG
G


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

Gd (ν) = 
0

 m(w + py − qx )
G
G
−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
0
m(w + pyG − qxG )
−m(v − pzG + rxG
0
−Ixz p − Iyz q + Izz r
Ixy p − Iyy q + Iyz r
−m(w + pyG − qxG )
0
m(u + qzG − ryG )
Ixz p + Iyz q − Izz r
0
Ixx p − Ixy q − Ixz r
• 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 :
m(v − pzG + rxG )
−m(u + qzG − ryG )
0
−Ixy p + Iyy q − Iyz r
−Ixx p + Ixy q + Ixz r
0







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 correspondent à 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 correcteur,
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
Ay
Az
Aphi
Atheta
Apsi
=
=
=
=
=
=
[0
[0
[0
[0
[0
[0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0 0
0 0
-u0
0 0
0 1
0 0
0 0];
u0 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
1
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
1
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
−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). Simulation 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 variables. 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. International Journal of Applied Mathematics and Computer Sciences, 16 :345–356.
C. Silvestre, A. P. (2004). Control of the INFANTE AUV using gain scheduled 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 codesign : 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 Computing Systems. PhD thesis, Department of Automatic Control Lund University.
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 / ordonnancement. 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 autonomes : architecture des capteurs d’altitude, et commande référencées capteurs. PhD thesis, Ecole nationale supérieure des Mines de Paris.
Z. Feng, R. A. (2004). Reduced order H∞ control of an autonomous underwater 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.
Téléchargement