← Réalisations

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]

Exploration RRT* dans un environnement avec obstacles
Fig. 1 - Exploration RRT*: l'arbre couvre l'espace libre et converge vers un chemin optimal évitant les obstacles.

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]

Réponse indicielle du contrôleur en position et en attitude
Fig. 2 - Réponse indicielle du contrôleur: la position (x, y, z) et l'attitude (roll, pitch, yaw) convergent vers la consigne.

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.

Tableau de bord de vol: animation 3D du drone et séries temporelles synchronisées
Fig. 3 - Tableau de bord de vol: l'animation 3D et les courbes de position, d'attitude, de vitesse des hélices et d'erreur de suivi partagent le même curseur temporel.

Deux démonstrations en simulation, issues du dépôt.

Vidéo 1 - Suivi de trajectoire en simulation 3D: trajectoire de consigne et trajectoire exécutée.
Vidéo 2 - Vol simulé avec télémétrie en direct: position et vitesse face à la consigne.

06La stack

CoucheChoix
PlanificationRRT* avec évitement d'obstacles
Trajectoireminimum snap, polynômes d'ordre 7
Contrôlecascade position / attitude
LangagePython, 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

  1. 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.
  2. Mellinger, D., Kumar, V. Minimum snap trajectory generation and control for quadrotors. ICRA, 2011.
  3. Karaman, S., Frazzoli, E. Sampling-based algorithms for optimal motion planning. IJRR, 2011.
Voir le code sur GitHub Me contacter