Sujet de thèse : Commande et localisation embarquée d’un drone en utilisant la vision.
Directeurs de thèse : Pedro Castillo, Isabelle Fantoni.
Bourse MENRT.
Soutenue le 29 janvier 2010 devant le jury :
Ce travail de thèse porte sur l'obtention de lois de commandes non linéaires pour la stabilisation d'un drone, ainsi que sur la localisation en utilisant la vision. Il comporte une grande partie expérimentale, avec notamment la réalisation de plateformes.
Une étude bibliographique des différents types de drones et de leurs lois de commandes a d'abord été menée. Ainsi plusieurs types de lois de commandes (linéaires et non linéaires) ont pu être testées et comparées à l'aide de Matlab xPC Target, sur une plateforme de type avion PVTOL (Planar Vertical Take Off and Landing) en temps réel. Une loi de commande stabilisant un système à n intégrateurs, basée sur des fonctions de saturations où chaque état est séparé a ensuite été proposée. Sa stabilité étant démontrée par une analyse de Lyapunov.
Un prototype de type quadrirotor a alors été construit. En tirant partie de l'expérience précédente de l'équipe sur ce type de plateforme, un grand soin a été apporté à sa réalisation; tant dans les parties mécanique, électronique qu'informatique. Parallèlement, un simulateur pour quadrirotor a été développé. Celui-ci permet de faire tourner le programme du quadrirotor sur un ordinateur grâce à un modèle dynamique. Ainsi, le programme peut être débuggé et testé facilement avant le vol. De plus, le drone simulé est équipé de caméras virtuelles, fournissant alors des images d'un environnement 3D sous OpenGL aux algorithmes de vision à tester.
Des méthodes de traitement d'images ont ensuite été étudiées. Afin de répondre au critère de calcul embarqué, nous avons d'abord étudié une méthode légère de calcul de flux optique à une dimension, permettant à un robot mobile e-puck d'effectuer de l'évitement d'obstacles. Puis, des solutions basées sur la stéréovision mais utilisant des pointeurs lasers ont été proposées. La première technique permet d'estimer l'attitude à partir de trois pointeurs, la seconde permet d'effectuer du suivi de mur grâce à un laser ligne.
Enfin, un schéma de contrôle utilisant un prédicteur et un observateur a été étudié. Cette combinaison prend en compte les éventuels retards dans la boucle de commande, ceux-ci pouvant venir par exemple du temps de traitement vidéo. De plus, le schéma proposé permet d'utiliser efficacement un capteur ayant une période d'échantillonnage élevée (i.e. une caméra) dans une loi de commande plus rapide.
La plateforme choisie est de type quadrirotor, pour sa simplicité de fabrication. Ci-dessous une photo de la dernière version réalisée. (voir toutes les versions).
L'architecture électronique a été conçue de manière modulable. Notamment, elle permet d'utiliser des capteurs inertiels (accéléromètres et gyromètres) dans le but de tester nos propres algorithmes d'estimation d'attitude, tout en laissant la possibilité de connecter une centrale inertielle par port série. De même, le pilotage du drone peut se faire par une radio-commande classique ou via un modem Xbee et un joystick. Par ailleurs, la carte est munie d'un système de mesure de la vitesse de rotation des moteurs afin d'effectuer leur asservissement (voir cette page). Le schéma de l'architecture est représenté ci-dessous.
Les premiers drones réalisés au laboratoire étaient relativement simples et n'avaient qu'une radiocommande pour les contrôler. Cependant cette liaison s'est vite avérée insuffisante. Une liaison par modem a donc été mise au point, grâce à une station sol réalisée avec QT.
La station a été faite de façon à être la plus complète et la plus évolutive possible. Ainsi, elle permet d'afficher à l'aide de graphiques tous les états du drone: commande du joystick, angles d'euler, vitesses angulaires, vitesses de rotations des moteurs, position GPS, vitesses de déplacements latérales, altitude, données provenant du système de vision.
La station permet aussi de changer à la volée tous les gains des lois de commandes embarquées, et de les sauvegarder dans la mémoire non volatile du microcontrôleur.
Le programme du drone a été écrit en C. Le compilateur utilisé est fourni avec un debuggeur, cependant cela nécessite de brancher un câble entre le microcontrôleur et l'ordinateur. Le debug ne peut donc pas être fait en vol, ce qui réduit beaucoup son intérêt. Cette limitation empêche donc de développer des programmes trop complexes car il serait impossible de les debugger en cas de soucis.
Pour palier à ce problème, le code a été découpé en deux parties bien distinctes:
Ce découpage permet d'avoir un code facilement portable sur une autre architecture. Cela permet donc aussi d'exécuter le programme sur un ordinateur, et de faire facilement du debug.
La partie dépendante a alors été adaptée pour l'ordinateur et reliée à un modèle du drone pour pouvoir simuler sa dynamique. Ce modèle calcule donc la position et l'orientation du drone en fonction des consignes des moteurs, et fournit à la partie indépendante les données de la centrale inertielle et du GPS. Enfin, ce simulateur de drone est relié à la station sol via un port série virtuel et un émulateur de modem XBee.
Afin de tester les algorithmes de vision, une représentation 3D du drone et de son environnement a été faite en OpenGL. Ainsi, des caméras virtuelles peuvent être placées dans le drone aux endroits désirés. Les images des caméras sont alors affichées sur l'ordinateur et leur contenu est placé dans un buffer qui sera utilisé par le programme de vision.
La figure ci-dessous montre une image du simulateur lors d'une tâche de suivi de mur. En haut: vue globale du drone et de son environnement. En bas à gauche: caméra embarquée fixant le sol. En bas à droite: caméra embarquée regardant droit devant le drone.