UZH Zürich : les drones autonomes sont capables de battre des FPV racers pilotés par des humains
« Champion-Level Drone Racing using Deep Reinforcement Learning » est une étude de l’université de Zürich en Suisse publiée dans la revue Nature. Elle décrit les recherches menées par le UZH Robotics and Perception Group, dont une partie avait été présentée lors des Swiss Drone Days au printemps 2022 (voir ici). L’équipe a mis au point Swift, un outil de pilotage qui prend le contrôle complet d’un drone de type FPV racer sur un circuit de compétition.
Le but ?
C’est évidemment de confronter un drone contrôlé par un ordinateur avec des appareils pilotés par des compétiteurs humains (qui disposent d’une semaine d’entrainement sur le parcours), les meilleurs de leur discipline pour que le challenge soit plus excitant. Swift fonctionne sur le principe de l’apprentissage par renforcement (RL, reinforcemment learning) et de la captation de données avec l’aide de capteurs à bord du drone.
Comment ?
Le système se « contente » d’un capteur IMU et d’une caméra, pilotés par un Jetson TX2 de Nvidia. Il en tire des données Visual Inertial Odometry (VIO), c’est-à-dire une matérialisation des mouvements par confrontation des données IMU et des images filmées par la caméra. Mais ces données se dégradent avec la vitesse atteinte dans une course de FPV racing. Les informations sont complétées par une détection des segments qui forment les portes dans lesquelles doit passer le drone, via la caméra à bord. Les algorithmes de Swift sont capables, par triangulation des données au passage d’une porte, de connaitre sa position exacte. Le système utilise ensuite un filtre de Kalman pour combiner les données VIO et de passage des portes pour optimiser la trajectoire en produisant des estimations capables d’améliorer les données incomplètes et altérées.
RL
Comme cela ne suffit pas à obtenir une précision suffisante pour faire face à un champion de FPV racing, les chercheurs ont travaillé sur des algorithmes d’apprentissage par renforcement qui étudient les différentes possibilités de vol, évaluent leur pertinence dans la réalité, et ce jusqu’à obtenir des trajectoires optimales. Selon l’équipe, le calcul est effectué en une heure environ.
Le résultat ?
Confrontés aux pilotes Alex Vanover, Thomas Bitmatta et Marvin Schäpper, le racer piloté par Swift s’est distingué par une constance dans les tours de parcours et par des virages plus serrés. Le système autonome n’a pas gagné toutes les courses, mais il en a remporté une bonne partie, et réalisé le meilleur temps.
Source : Nature
Un peu d’approximation technique :
Le système utilse une IMU pour avoir un état du drone par ses accelerations (lineraire ou angulaire), il passe cette info au VIO qui est capable avec les images d’en tirer une vitesse et une estimation de position.
Enfin, on combine le tout dans un filtre de Kalman avec la position des portes connue et la position des portes détectées pour avoir un état complet de l’attitude et de la position du drone dans le circuit. (accels, vitesse, positin).
C’est le même système que sur un drone classique, mais au lieu d’un GPS qui donne un position absolue dans l’espace, le drone estime sa position par rapport à la porte qu’il voit et dont il connait la position par rapport à sa position de départ !
La problématique est que les données qu’on tire de l’IMU et du VIO dérivent dans le temps du fait des approximations mathématique (et des technologies des capteurs). Il faut donc des capteurs absolu pour contrer cette dérive : un gps ou ici, les portes dont la position est connu. La difficulté supplémentaire ici est qu’il faut pouvoir trouver ces portes, et estimer leur positions par rapport au drone avec une seul camera (pas de profondeur).
On notera que les drones tournent sous Betaflight, que les drones autopilotés sont plus lourds (du fait de l’équipement de calcul et vision) et tournent avec une boucle de control à 100Hz ! Pas de boucle fermé sur le control moteurs malgrés BHELI32
Mais la grande nouveauté de l’article, à mon avis, est l’utilisation de la simulation pour générer les trajectoires et corriger la simulation avec un essai réel !
Merci pour le partage