Difference between revisions of "Asservissement LQG drone quadrirotor"

From Electrolab
Jump to: navigation, search
(Position du modèle temporel)
(Position du modèle temporel)
Line 141: Line 141:
  
 
On négligera d’entrée le lien direct entre la sortie et l’entrée, représenté par la matrice D. En règle générale il vaut mieux faire comme si on ne l'avait pas vu.
 
On négligera d’entrée le lien direct entre la sortie et l’entrée, représenté par la matrice D. En règle générale il vaut mieux faire comme si on ne l'avait pas vu.
 +
 +
[[File:systeme.png]]
  
 
==== Le correcteur modal ====
 
==== Le correcteur modal ====

Revision as of 14:54, 20 April 2014

Présentation

Retour à User:Mael
La page suivante présente quelques travaux sur les méthodes d’asservissement modale et LQG d’un drone quadri rotor. Le principe détaillé ici est uniquement théorique, je n’ai pas réalisé de drone quadri rotor pour mettre en œuvre cette démarche. Cependant, j’ai mis en pratique ces équations pour la réalisation d’un drone hybride à voilure tournante Projets:Perso:2013:Drone hybride. Les algorithmes sont très similaires, avec juste une problématique dans le cas du drone hybride supplémentaire que j’aborderais plus loin.

Modèle

Les données du modèle

Le modèle retenu pour le drone quadri-rotor est le suivant :

Drone quadri.png

Dans ce modèle, les variables F1 à F4 sont les efforts des actionneurs (moteurs électriques à hélice) sur le drone (corps jaune) par rapport au sol. Les angles α et β sont respectivement les rotations de ce même corps par rapport à y et x.

Deux sous-modèles indépendant apparaissent dès lors que les angles α et β restent petits :

Modele generic.png

Dans le premier cas, on a :

  • θ = α 𝜃 𝛼 ,
  • F i = F 1 subscript 𝐹 𝑖 subscript 𝐹 1 ,
  • F j = F 2 subscript 𝐹 𝑗 subscript 𝐹 2 ,
  • Sur le plan (x,z)

Et dans le second cas :

  • θ = β 𝜃 𝛽 θ = β,
  • F i = F 3 subscript 𝐹 𝑖 subscript 𝐹 3 ,
  • F j = F 4 subscript 𝐹 𝑗 subscript 𝐹 4 ,
  • Sur le plan (x,z)

L’hypothèse des petits angles permet de négliger le couplage des angles l’un sur l’autre. Elle reste vraie tant que C o s ( θ ) θ 𝐶 𝑜 𝑠 𝜃 𝜃 .

On pose également deux variables complémentaires dont l’utilité sera explicitée plus tard :

  • ϕ 1 = F 1 - F 2 subscript italic-ϕ 1 subscript 𝐹 1 subscript 𝐹 2
  • ϕ 2 = F 3 - F 4 subscript italic-ϕ 2 subscript 𝐹 3 subscript 𝐹 4

Les équations d'état

L’étude se positionne sur le modèle générique, sachant que la dynamique est la même pour α 𝛼 et β 𝛽 . C’est d’ailleurs pour cette raison que les quadri-rotor en croix sont les plus simples à asservir.

Pour lier les efforts F i subscript 𝐹 𝑖 et F j subscript 𝐹 𝑗 des actionneurs à l’angle θ 𝜃 , on applique le principe fondamentale de la dynamique pour les rotations, à savoir :

J y θ ¨ = M ( F i ) i - M ( F j ) j subscript 𝐽 𝑦 ¨ 𝜃 𝑀 subscript subscript 𝐹 𝑖 𝑖 𝑀 subscript subscript 𝐹 𝑗 𝑗

Le Principe Fondamental de la Dynamique s’applique au centre de gravité, qui est également le centre géométrique du drone (point 0), on utilise alors la longueur du bras du drone (a) :

M ( F i ) i = O I F i + M ( F i ) O 𝑀 subscript subscript 𝐹 𝑖 𝑖 𝑂 𝐼 subscript 𝐹 𝑖 𝑀 subscript subscript 𝐹 𝑖 𝑂 Sachant que le moment de F i subscript 𝐹 𝑖 au point O est nul, on peut poser : J y θ ¨ = a . F i - a . F j formulae-sequence subscript 𝐽 𝑦 ¨ 𝜃 𝑎 subscript 𝐹 𝑖 𝑎 subscript 𝐹 𝑗 Et: ϕ n = F i - F j subscript italic-ϕ 𝑛 subscript 𝐹 𝑖 subscript 𝐹 𝑗 D'ou : J y θ ¨ = a . ϕ n formulae-sequence subscript 𝐽 𝑦 ¨ 𝜃 𝑎 subscript italic-ϕ 𝑛 On asservit sur θ 𝜃 à partir de ϕ italic-ϕ car seul ϕ italic-ϕ peut être asservit par rapport θ 𝜃 . En effet, si l’on conserve F i subscript 𝐹 𝑖 et F j subscript 𝐹 𝑗 , il existe une infinité de solution à l’équation (1.3). En effet quel que soit F i subscript 𝐹 𝑖 , on peut trouver un F j subscript 𝐹 𝑗 qui permette d’atteindre l’angle θ 𝜃 de consigne. Ainsi, on utilise la variable ϕ italic-ϕ qui représente l’écart de poussée des deux actionneurs, qui est réellement la variable de contrôle de l’angle. Afin de prendre en compte un modèle proche de la réalité, on va utiliser un modèle du premier ordre pour représenter le moteur : F i ( p ) U i ( p ) = K i 1 + τ i . p subscript 𝐹 𝑖 𝑝 subscript 𝑈 𝑖 𝑝 subscript 𝐾 𝑖 formulae-sequence 1 subscript 𝜏 𝑖 𝑝

Dans ce modèle, K représente le gain de commande entre la commande (entre 0 et 300 pour cet exemple) et la poussée (en Newton) de chaque actionneur.

T i subscript 𝑇 𝑖 représente le retard de la commande. En effet, entre le démarrage de la commande et l’atteinte de cette commande par la système, il va se dérouler un certain temps associée à la dynamique du système.

Dans le cas où les actionneurs F i subscript 𝐹 𝑖 et F j subscript 𝐹 𝑗 sont identiques, avec la même dynamique, il est possible de considérer que la variable θ 𝜃 évolue dans les mêmes conditions, et de poser :

ϕ n ( p ) U n ( p ) = K i , j 1 + τ i , j . p subscript italic-ϕ 𝑛 𝑝 subscript 𝑈 𝑛 𝑝 subscript 𝐾 𝑖 𝑗 formulae-sequence 1 subscript 𝜏 𝑖 𝑗 𝑝

Dans lequel Un est la différence entre les commandes U i subscript 𝑈 𝑖 et U j subscript 𝑈 𝑗 . La commande de chaque actionneur pourra être quelconque, la consigne sur θ 𝜃 sera atteinte dès lors que l’écart de commande U n subscript 𝑈 𝑛 sera respecté.

On posera donc comme équations d'état les deux équations suivantes :

θ ¨ = a J y × ϕ n ¨ 𝜃 𝑎 subscript 𝐽 𝑦 subscript italic-ϕ 𝑛 ϕ ˙ n = - 1 τ i , j × ϕ n + K i , j τ i , j × U n subscript ˙ italic-ϕ 𝑛 1 subscript 𝜏 𝑖 𝑗 subscript italic-ϕ 𝑛 subscript 𝐾 𝑖 𝑗 subscript 𝜏 𝑖 𝑗 subscript 𝑈 𝑛

Commande modale par retour d'état

Position du modèle temporel

La commande par retour d’état est une commande dans laquelle l’entrée du système est reliée à sa sortie par un paramètre fixe, appelé ici K c subscript 𝐾 𝑐 et en règle générale matriciel, dont les valeurs sont associées à certaines caractéristiques attendues du système.

Avant de commencer, on pose le modèle sous sa forme d’état :

X ˙ = A . X + B . U formulae-sequence ˙ 𝑋 𝐴 𝑋 𝐵 𝑈 Y = C . X formulae-sequence 𝑌 𝐶 𝑋 La variable X représente l’état du système, soit un ensemble de variables qui le caractérise dans le temps, et les matrice A, B et C les matrices du modèle qui le font évoluer dans le temps. X = | α α ˙ ϕ 1 β β ˙ ϕ 2 | 𝑋 𝛼 ˙ 𝛼 subscript italic-ϕ 1 𝛽 ˙ 𝛽 subscript italic-ϕ 2 La matrice A est composée deux deux blocs identiques, en α 𝛼 et β 𝛽 , appelés A α subscript 𝐴 𝛼 et A β subscript 𝐴 𝛽  : A α / β = [ 0 1 0 0 0 a J y 0 0 - 1 τ n ] subscript 𝐴 𝛼 𝛽 0 1 0 0 0 𝑎 subscript 𝐽 𝑦 0 0 1 subscript 𝜏 𝑛

dans lequel n vaut 1 pour α 𝛼 et 2 pour β 𝛽 . D'où :

A = [ A α z e r o s ( 3 , 3 ) z e r o s ( 3 , 3 ) A β ] 𝐴 subscript 𝐴 𝛼 𝑧 𝑒 𝑟 𝑜 𝑠 3 3 𝑧 𝑒 𝑟 𝑜 𝑠 3 3 subscript 𝐴 𝛽

La matrice B assure le lien entre les consignes des actionneurs et l'état :

B = [ 0 0 0 0 K 1 τ 1 0 0 0 0 0 0 K 2 τ 2 ] 𝐵 0 0 0 0 subscript 𝐾 1 subscript 𝜏 1 0 0 0 0 0 0 subscript 𝐾 2 subscript 𝜏 2

Enfin, la matrice C filtre dans le vecteur d'état les variables accessibles en sorties, via les capteurs :

C = [ 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 ] 𝐶 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0

Le vecteur de sortie Y est donc constitué des positions et rotations angulaires autour des axes x et y.

On négligera d’entrée le lien direct entre la sortie et l’entrée, représenté par la matrice D. En règle générale il vaut mieux faire comme si on ne l'avait pas vu.

Systeme.png

Le correcteur modal

Le correcteur modal est une matrice de gain qui permet, dans le modèle en boucle fermée suivant, de positionner les valeurs propres de la matrice d’état du modèle bouclé. En posant :

U = - K c . X formulae-sequence 𝑈 subscript 𝐾 𝑐 𝑋

On obtient le modèle en boucle fermée :

X ˙ = ( A - K c . B ) . X fragments ˙ 𝑋 fragments ( A subscript 𝐾 𝑐 . B ) . X

Dans ce modèle, le choix des valeurs propres de la matrice ( A - K c . B ) formulae-sequence 𝐴 subscript 𝐾 𝑐 𝐵 permet d’obtenir la convergence de l’état X vers son état stable :

  • Dans un temps minimum,
  • Avec un minimum de dépassement.

Le calcul de K c subscript 𝐾 𝑐 se base sur un vecteur propre dont les différentes valeurs sont associées aux variables de l’état. Les valeurs propres choisies, dans le cas temporel, doivent être négatives et à partie imaginaire dans la zone ci-dessous :

Zone VP.png

Les valeurs propres du système, choisies "judicieusement", permettent de caractériser le comportement du système. La zone ci-dessus est la zone optimale dans laquelle on obtient les meilleures performances pour le système. On pose le vecteur V c subscript 𝑉 𝑐 tel que :

V c = [ λ α λ α ˙ λ ϕ 1 λ β λ β ˙ λ ϕ 2 ] subscript 𝑉 𝑐 subscript 𝜆 𝛼 subscript 𝜆 ˙ 𝛼 subscript 𝜆 subscript italic-ϕ 1 subscript 𝜆 𝛽 subscript 𝜆 ˙ 𝛽 subscript 𝜆 subscript italic-ϕ 2

Le calcul de la matrice de retour d'état Kc se fait, en utilisant Matlab, par la fonction :

K c = p l a c e ( A , B , V c ) subscript 𝐾 𝑐 𝑝 𝑙 𝑎 𝑐 𝑒 𝐴 𝐵 subscript 𝑉 𝑐

Je ne rentrerais pas ici dans le détail de la fonction <place>. Elle sera étudiée plus tard pour les propriétés de découplage.

L'observateur modal

L’observateur est nécessaire car, même si les valeurs α , α ˙ , β , β ˙ 𝛼 ˙ 𝛼 𝛽 ˙ 𝛽 sont accessibles grâce à la centrale inertielle, il reste à estimer les variables F a subscript 𝐹 𝑎 et F b subscript 𝐹 𝑏 , c’est-à-dire ϕ 1 subscript italic-ϕ 1 et ϕ 2 subscript italic-ϕ 2 .

L’observateur assure le calcul de X ^ ^ 𝑋 , qui est une estimation de X. La commande sera basée sur ce X ^ ^ 𝑋 , et non sur le X qui est inaccessible en totalité.

Observateur.png

L’observateur est alimenté par les sorties du modèles, c’est-à-dire les données issues de la centrale inertielle, et par la commande courante du modèle.

L’observateur est une image du modèle réelle dont on va pondérer l’influence de la boucle fermé, en utilisant une matrice G pour corriger l’état reconstruit à partir des valeurs accessibles. Un choix de valeurs propres du système corrigé par G permet de s’assurer que :

  • L’observateur converge vers le modèle réel,
  • La dynamique de convergence est plus rapide pour l’observateur que pour le modèle réel, sans quoi un retard de commande apparaitrait dans le système.

Le calcul de la matrice de gain de l’observateur se fait, par analogie avec la matrice du correcteur, par la fonction « place » de Matlab :

G c = p l a c e ( A , C , V c ) subscript 𝐺 𝑐 𝑝 𝑙 𝑎 𝑐 𝑒 superscript superscript 𝐴 superscript 𝐶 subscript 𝑉 𝑐

On utilise cependant la transposée de A au lieu de A, la transposée de C au lieu de B, et le vecteur propre V c subscript 𝑉 𝑐 des valeurs propres choisies pour l’observateur.

Les valeurs propres V c subscript 𝑉 𝑐 doivent être choisies à gauche (ie plus négative) :

λ o b s e r v a t e u r < λ c o r r e c t e u r subscript 𝜆 𝑜 𝑏 𝑠 𝑒 𝑟 𝑣 𝑎 𝑡 𝑒 𝑢 𝑟 subscript 𝜆 𝑐 𝑜 𝑟 𝑟 𝑒 𝑐 𝑡 𝑒 𝑢 𝑟

En moyenne, une valeur propre 2 fois inférieure est une bonne estimation pour démarrer.

L'intégrateur modal

Le système augmenté permet d’ajouter deux variables supplémentaires qui sont l’intégrale de α et β. Ces deux variables supplémentaires seront utilisées pour l’étage d’intégration assurant la correction de l’erreur statique.

X ˙ e = A a . X e + B a . U formulae-sequence subscript ˙ 𝑋 𝑒 subscript 𝐴 𝑎 subscript 𝑋 𝑒 subscript 𝐵 𝑎 𝑈 Y = C a . X e formulae-sequence 𝑌 subscript 𝐶 𝑎 subscript 𝑋 𝑒 A a = [ A z e r o s ( 6 , 2 ) - S i . C z e r o s ( 2 , 2 ) ] subscript 𝐴 𝑎 𝐴 𝑧 𝑒 𝑟 𝑜 𝑠 6 2 formulae-sequence subscript 𝑆 𝑖 𝐶 𝑧 𝑒 𝑟 𝑜 𝑠 2 2 B a = [ B z e r o s ( 2 , 6 ) ] subscript 𝐵 𝑎 𝐵 𝑧 𝑒 𝑟 𝑜 𝑠 2 6 C a = [ C z e r o s ( 4 , 2 ) ] subscript 𝐶 𝑎 𝐶 𝑧 𝑒 𝑟 𝑜 𝑠 4 2