Minimum-Snap Trajectory
- Aussi appelé: minimum snap trajectory, min-snap
- Catégorie: Planning & manipulation › Trajectory optimisation
- Mots-clés: trajectory-generation, quadrotors, aerial-robotics, motion-planning, optimization
Un chemin lisse passant par des points de passage, obtenu en minimisant l'intégrale du carré du snap, la dérivée quatrième de la position ; la méthode standard pour planifier le vol d'un quadrirotor.
Définition
Une trajectoire à snap minimal (minimum-snap trajectory) passe par une suite de points de passage tout en minimisant l'intégrale du carré de la dérivée quatrième de la position par rapport au temps, appelée snap. Chaque coordonnée est généralement représentée par un polynôme par morceaux, un segment par paire de points de passage, avec continuité imposée sur la position et ses dérivées aux raccords. Comme le coût est quadratique en les coefficients des polynômes et que les conditions de passage et de continuité sont linéaires, trouver les coefficients pour des durées de segments fixées est un programme quadratique, et dans le cas sans contraintes il se résout sous forme fermée.
La méthode est étroitement liée aux quadrirotors. Mellinger et Kumar (2011) ont montré qu'un quadrirotor est différentiellement plat (differentially flat) avec la position et le lacet comme sorties plates : l'état complet et les entrées peuvent être calculés à partir de ces sorties et de leurs dérivées. La direction et l'intensité de la poussée découlent de l'accélération, les vitesses angulaires du corps du jerk, et les accélérations angulaires, donc les couples moteurs, du snap. Minimiser le snap garde donc petites et douces les variations nécessaires des commandes moteur, ce qui rend la trajectoire plus facile à suivre. La même idée à un ordre inférieur donne les trajectoires à jerk minimal, utilisées depuis longtemps pour les mouvements de bras, et les chemins à accélération minimale.
La résolution polynomiale ne couvre qu'une partie du problème. Les durées des segments doivent être choisies séparément, souvent par une optimisation externe ou en mettant le temps à l'échelle jusqu'à ce que les limites de vitesse, de poussée et de vitesses angulaires du corps soient respectées. La solution passe par les points de passage mais n'évite pas d'elle-même les obstacles entre eux ; les planificateurs ajoutent donc des points de passage intermédiaires là où le chemin coupe un angle, ou contraignent chaque segment à un couloir convexe sûr. Les trajectoires à snap minimal sont lisses mais pas optimales en temps, c'est pourquoi les systèmes de course utilisent aussi des planificateurs optimaux en temps fondés sur l'échantillonnage ou sur l'optimisation.
Pourquoi c'est important
La génération de trajectoires à snap minimal est la façon par défaut de transformer des points de passage en références pilotables pour les multirotors. Elle est rapide, bien comprise et se rattache proprement à la dynamique du quadrirotor par la platitude différentielle ; on la retrouve donc dans les autopilotes de recherche, la course de drones et l'inspection aérienne.
Applications principales
- Vol par points de passage et manœuvres agressives de quadrirotors
- Trajectoires de référence pour la course de drones
- Trajets d'inspection et de prise de vue aériennes
- Trajectoires articulaires ou cartésiennes lisses pour manipulateurs (variantes à jerk minimal)
- Raffinement de trajectoire après un planificateur de chemin géométrique
En pratique
Une équipe de course de drones dispose d'une carte des positions des portes sur un circuit. Elle place un point de passage au centre de chaque porte, règle le lacet face à la porte suivante et ajuste un polynôme par morceaux à snap minimal en x, y et z, continu jusqu'au snap à chaque porte. Une allocation temporelle initiale est tirée des distances et d'une vitesse nominale. L'équipe vérifie ensuite la trajectoire par rapport aux limites de vitesse, de poussée collective et de vitesses angulaires du corps, calculées par l'application de platitude, et allonge ou raccourcit les durées des segments jusqu'à ce que chaque limite soit respectée avec marge. La trajectoire obtenue est échantillonnée à la fréquence du contrôleur et transmise à un contrôleur de suivi géométrique, et la même référence sert à générer des étiquettes pour une politique de perception apprise.
Idées reçues
- Le snap minimal est optimal en temps — il minimise un coût de régularité pour des durées de segments fixées, pas le temps de vol
- La trajectoire évite les obstacles parce que les points de passage sont sans collision — les segments entre points de passage peuvent encore couper des angles si l'on n'ajoute pas de contraintes de couloir
- Les limites des actionneurs sont prises en compte automatiquement — les limites de vitesse, de poussée et de vitesses angulaires du corps doivent être vérifiées et imposées par l'allocation temporelle ou par des contraintes
- Le snap minimal est la même chose que la platitude différentielle — la platitude est une propriété du modèle du véhicule ; le snap minimal est un coût parmi d'autres pour planifier des sorties plates
Qui devrait le savoir
- Ingénieurs en robotique aérienne et en autopilotes de drones
- Chercheurs en planification de mouvement
- Développeurs en course de drones et en inspection
- Étudiants en automatique qui étudient la génération de trajectoires
Technologies associées
- Programmation quadratique (Quadratic Programming)
- Splines polynomiales par morceaux (Piecewise Polynomial Splines)
- PX4
- Commande de suivi géométrique sur SE(3) (Geometric Tracking Control on SE(3))
- Couloirs de vol sûrs (Safe Flight Corridors)
Termes associés
- Differential Flatness
- Trajectory Planning
- UAV
- Direct Collocation
- Kinodynamic Planning
- Model Predictive Control
Projets associés
- Drake: MIT robotics toolbox for model-based dynamics, optimization, and control system design
- GTSAM: Factor-graph optimization library powering many modern SLAM backends
- OMPL: Sampling-based motion planning library powering MoveIt and countless robotics applications
- MoveIt 2: Motion planning framework for ROS 2 robot arms, with kinematics and collision checking
- PyRoki: Modular Python toolkit for kinematic optimization across CPU, GPU, and TPU via JAX
- PyPose: PyTorch library for differentiable robotics with deep learning and Lie group optimization