Calcul de la matrice de retour Kc sur MATLAB
Calculez rapidement la matrice de retour d’état Kc pour un système SISO d’ordre 2 via la formule d’Ackermann, vérifiez la commandabilité et visualisez les pôles en boucle ouverte et en boucle fermée dans le plan complexe.
Calculateur interactif
Matrice A
Vecteur B
Pôles souhaités
Entrez vos matrices et cliquez sur Calculer Kc pour afficher le gain de retour, la matrice de commandabilité et le script MATLAB correspondant.
Guide expert du calcul de la matrice de retour Kc sur MATLAB
Le calcul de la matrice de retour d’état Kc est une étape fondamentale en automatique moderne. Lorsque l’on écrit une loi de commande du type u = -Kc x + r, le but est de modifier la dynamique du système pour obtenir une réponse plus rapide, plus stable et mieux amortie. Dans MATLAB, cette tâche est souvent réalisée à l’aide des fonctions acker, place ou lqr. Pourtant, pour comprendre ce que fait réellement l’outil, il est très utile de savoir calculer Kc à la main, puis de vérifier numériquement le résultat.
Dans sa forme la plus simple, un système d’état continu s’écrit :
x_dot = A x + B u
En appliquant un retour d’état, on obtient :
x_dot = (A – B Kc) x + B r
Le problème central consiste alors à choisir Kc de sorte que les pôles de la matrice A – B Kc coïncident avec les pôles désirés. C’est exactement ce que permet le placement de pôles.
Pourquoi Kc est si important en pratique
La matrice Kc influence directement plusieurs performances du système :
- la stabilité asymptotique du modèle fermé ;
- la vitesse de convergence vers la consigne ;
- le dépassement et l’amortissement ;
- la sensibilité au bruit de mesure ;
- l’effort de commande nécessaire.
Un ingénieur ne cherche pas seulement des pôles négatifs. Il cherche un compromis robuste. Des pôles trop à gauche accélèrent la réponse, mais peuvent aussi augmenter fortement le gain, l’énergie de commande, les saturations et l’amplification des incertitudes. C’est pour cette raison que MATLAB ne doit pas être utilisé comme une simple boîte noire. La qualité du choix des pôles est aussi importante que le calcul lui-même.
Condition indispensable : la commandabilité
Avant tout calcul de Kc, il faut vérifier que le couple (A, B) est commandable. Pour un système d’ordre 2, la matrice de commandabilité est :
C = [B A B]
Si cette matrice est de rang 2, alors le placement de pôles est possible. Si le rang est insuffisant, aucune matrice de retour d’état ne permettra de placer librement les pôles. MATLAB vérifie implicitement cette condition, mais dans une démarche d’ingénierie sérieuse, il faut toujours la contrôler explicitement.
Dans le cas 2×2 mono entrée, la formule d’Ackermann est particulièrement élégante. Si le polynôme caractéristique désiré est :
phi_d(s) = s^2 + alpha1 s + alpha0
alors :
Kc = [0 1] C^-1 phi_d(A)
avec :
phi_d(A) = A^2 + alpha1 A + alpha0 I
Comment relier les pôles souhaités au comportement temporel
Le choix des pôles n’est pas arbitraire. En pratique, on relie souvent leur position à des objectifs temporels. Pour des pôles réels négatifs, la réponse devient rapide et sans oscillation marquée. Pour des pôles complexes conjugués, on contrôle aussi le taux d’amortissement. Un ordre de grandeur utile est le temps d’établissement à 2 %, approximé par Ts ≈ 4 / |sigma|, où sigma est la partie réelle dominante du pôle fermé.
| Pôles fermés | Partie réelle dominante | Temps d’établissement approximatif | Tendance de la réponse |
|---|---|---|---|
| -1 et -2 | 1 | 4,0 s | Réponse modérée, effort de commande limité |
| -4 et -5 | 4 | 1,0 s | Réponse rapide, bon compromis dans beaucoup de cas |
| -8 et -10 | 8 | 0,5 s | Très rapide, gain souvent plus élevé |
| -12 et -15 | 12 | 0,33 s | Exigeant pour les actionneurs, robustesse à surveiller |
Ce tableau illustre une réalité concrète : accélérer la dynamique n’est jamais gratuit. Si vous déplacez les pôles loin à gauche, Kc croît rapidement. Sur un modèle parfait, cela peut sembler excellent. Sur un système réel avec bruit, saturation et délais, cela peut devenir problématique.
Calcul manuel et vérification dans MATLAB
Supposons le système :
A = [0 1; -2 -3], B = [0; 1]
et des pôles souhaités à -4 et -5. Le polynôme désiré est :
(s + 4)(s + 5) = s^2 + 9s + 20
On construit ensuite la matrice de commandabilité, puis phi_d(A), puis on applique Ackermann. Le résultat donne ici un gain Kc de la forme [18 6]. En substituant dans A – B Kc, on obtient bien les pôles demandés.
Dans MATLAB, le script équivalent est très simple :
A = [0 1; -2 -3];
B = [0; 1];
p = [-4 -5];
Kc = acker(A,B,p)
ou encore :
Kc = place(A,B,p)
La fonction place est souvent privilégiée car elle est numériquement plus robuste pour des problèmes plus généraux, notamment quand l’ordre augmente. Pour des études pédagogiques et des systèmes simples, acker permet en revanche de faire le lien direct avec la formule théorique.
Quand préférer LQR plutôt que le placement de pôles
Le placement de pôles impose directement la dynamique souhaitée, mais il ne prend pas explicitement en compte le coût énergétique de la commande. La commande optimale quadratique linéaire, ou LQR, définit Kc en minimisant une fonction de coût de la forme :
J = integral (x’Qx + u’Ru) dt
Avec LQR, on ne choisit plus directement les pôles. On choisit des pondérations sur les états et sur la commande, puis MATLAB calcule un gain qui réalise un compromis souvent plus robuste. C’est très utile quand on veut éviter des gains excessifs.
Impact du conditionnement numérique
Un autre point souvent négligé est le conditionnement de la matrice de commandabilité. Si celle-ci est presque singulière, le calcul de Kc peut devenir très sensible aux erreurs d’arrondi. Ce phénomène apparaît surtout avec des systèmes mal dimensionnés ou avec des variables d’état de tailles très différentes. Dans MATLAB, il est recommandé d’examiner le rang, le nombre de condition et parfois de procéder à une normalisation des états.
| Situation numérique | Determinant ou rang de C | Risque pratique | Action recommandée |
|---|---|---|---|
| C bien conditionnée | Rang complet, determinant nettement non nul | Faible | Calcul direct avec place ou acker |
| C proche de la singularité | Rang complet mais determinant très petit | Moyen à élevé | Redimensionner les états, vérifier les unités |
| C non commandable | Rang insuffisant | Critique | Revoir l’actionnement ou le modèle |
| Pôles trop agressifs | Rang complet | Gains très élevés | Rapprocher les pôles ou passer à LQR |
Procédure recommandée pour un calcul fiable de Kc
- Établir le modèle d’état linéarisé autour d’un point de fonctionnement cohérent.
- Vérifier les dimensions et les unités de A, B, C et D.
- Contrôler la commandabilité avec ctrb(A,B) et rank.
- Choisir des pôles cibles en lien avec le temps de réponse et l’amortissement désirés.
- Calculer Kc avec place, acker ou via Ackermann pour validation théorique.
- Simuler la boucle fermée et analyser l’effort de commande.
- Tester la robustesse avec incertitudes paramétriques et bruit de mesure.
Bonnes pratiques MATLAB
- Utilisez eig(A) et eig(A-B*Kc) pour comparer immédiatement les pôles.
- Vérifiez la commandabilité par rank(ctrb(A,B)).
- Préférez place si vous travaillez sur des ordres plus élevés.
- Ajoutez un préfiltre ou un gain de poursuite si vous voulez annuler l’erreur statique de suivi.
- Combinez le retour d’état avec un observateur quand tous les états ne sont pas mesurés.
Erreurs fréquentes à éviter
Une erreur classique consiste à confondre le signe de la loi de commande. Dans la majorité des ouvrages et dans MATLAB, on écrit la boucle fermée sous la forme A – B Kc. Si vous utilisez par erreur A + B Kc, vous placerez les pôles au mauvais endroit. Une autre erreur fréquente est de choisir des pôles purement sur des critères de rapidité, sans vérifier l’amplitude du signal de commande. Enfin, il faut éviter de travailler sur un modèle non commandable en espérant que MATLAB “trouvera une solution”. Si le système n’est pas commandable, le problème n’est pas numérique, il est structurel.
Ressources académiques et institutionnelles utiles
Pour approfondir la théorie du retour d’état, la commandabilité et le placement de pôles, consultez ces références de qualité :
- University of Michigan, Control Tutorials for MATLAB and Simulink
- MIT, Underactuated Robotics and state space control notes
- NIST, ressources sur les méthodes numériques et la fiabilité des calculs scientifiques
Conclusion
Le calcul de la matrice de retour Kc sur MATLAB n’est pas seulement une opération logicielle. C’est une décision de synthèse qui relie théorie des systèmes, algèbre linéaire, performances temporelles et contraintes physiques. Pour un système d’ordre 2 mono entrée, la formule d’Ackermann permet de comprendre précisément le mécanisme mathématique du placement de pôles. MATLAB permet ensuite de valider, simuler et industrialiser ce calcul avec efficacité. La meilleure pratique consiste à combiner les deux approches : comprendre la formule, vérifier la commandabilité, choisir des pôles cohérents, puis valider le résultat par simulation et analyse de robustesse.