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.