Contrôle autonome d'un UAV: du RRT* au minimum snap
Résumé
Simulation 3D d'un quadrirotor et pile de contrôle autonome complète: planification de chemin par RRT* en présence d'obstacles, génération de trajectoires minimum snap, et contrôleur en cascade pour le suivi. L'ensemble est écrit en Python et testé, avec la démarche mathématique documentée dans le dépôt.
01Le problème
Faire suivre une trajectoire à un quadrirotor ne se résume pas à trouver un chemin vers l'objectif. Le chemin doit être réalisable par la dynamique du drone, sans collision, et suffisamment lisse: un quadrirotor se modélise ici comme un système du 4e ordre, la trajectoire doit donc être différentiable au moins quatre fois (vitesse, accélération, jerk, snap).
02Planification: RRT*
Les waypoints sont générés par RRT*, qui explore l'espace libre en présence d'obstacles et raffine progressivement le chemin vers l'optimal, là où le RRT classique s'arrête au premier chemin trouvé. [3]
03Trajectoire: minimum snap
Entre les waypoints, la trajectoire optimale est celle qui minimise le snap (la dérivée quatrième de la position). Elle prend la forme d'un polynôme d'ordre 7, dont les 8 coefficients sont déterminés par 8 conditions aux limites: position, vitesse, accélération et jerk imposés au départ et à l'arrivée.
Chaque condition fournit une équation linéaire: le problème se résout en assemblant une matrice de contraintes 8x8 et en calculant c = A⁻¹ b. De l'algèbre linéaire pure, documentée équation par équation dans le dépôt. [2]
04Contrôle
Le suivi est assuré par un contrôleur en cascade inspiré des travaux du Flying Machine Arena (ETH Zurich): une boucle externe de position qui commande une boucle interne d'attitude, plus rapide. [1]
05Résultats
La simulation s'ouvre sur un tableau de bord de vol: à gauche, une animation 3D du drone avec la trajectoire exécutée face à la référence minimum snap, le chemin RRT et les obstacles; à droite, quatre séries temporelles synchronisées par un curseur temporel: position, attitude, vitesse des hélices et erreur de suivi.
Deux démonstrations en simulation, issues du dépôt.
06La stack
| Couche | Choix |
|---|---|
| Planification | RRT* avec évitement d'obstacles |
| Trajectoire | minimum snap, polynômes d'ordre 7 |
| Contrôle | cascade position / attitude |
| Langage | Python, NumPy |
| Qualité | pytest, couverture mesurée |
@software{uav_autonomous_control,
author = {Vinceslas, Medhy},
title = {3D UAV simulation and autonomous control for path tracking},
url = {https://github.com/Mdhvince/UAV-Autonomous-control},
note = {Open source}
}
07Références
- Lupashin, S., Hehn, M., Mueller, M. W., Schoellig, A. P., Sherback, M., D'Andrea, R. A platform for aerial robotics research and demonstration: The Flying Machine Arena. Mechatronics, 2014.
- Mellinger, D., Kumar, V. Minimum snap trajectory generation and control for quadrotors. ICRA, 2011.
- Karaman, S., Frazzoli, E. Sampling-based algorithms for optimal motion planning. IJRR, 2011.