Le centre inertiel
Le centre inertiel est une des composantes les plus importantes du drone. Il permet de recuperer les angles dโorientation ainsi que les vitesses angulaires. Le centre inertiel contient trois capteurs ou deux capteurs : un gyroscope, un accelerometre et un magnetometre si lโon parle dโun centre inertiel a 9 degres de liberte. Le magnetometre nโest pas inclus lorsque lโon parle dโun centre inertiel a 6 degres de liberte. Le gyroscope mesure la vitesse angulaire du drone. Ce capteur a lโavantage de ne pas etre trop bruite et nโest pas influence par le champ electromagnetique. Lโintegration directe pour avoir les angles dโorientation est deconseillee. Lโintegration cumule en effet les erreurs au cours du temps. Un decalage entre lโangle actuel et lโangle mesure se fera au cours du temps. Lโ accelerometre mesure lโacceleration lineaire exercee par le drone. Ce capteur mesure correctement lโacceleration si le dispositif ne vibre pas fortement. Les accelerometres sont tres sensibles aux forces exterieures ce qui peut causer des erreurs dโinterpolation (Woodman (2007)). Ils ne peuvent donc pas etre utilises pour recuperer directement la position en integrant deux fois ou etre utilises uniquement pour trouver les angles dโorientation.
Les capteurs ne peuvent individuellement mesurer les angles dโorientation du drone. Une solution proposee dans la litterature est de faire une fusion de capteur (sensor fusion en anglais). Cette methode permet de combiner les informations donnees par les deux capteurs en meme temps afin dโavoir un resultat plus precis sur les angles dโorientation. La fusion de capteur peut se faire de differentes manieres. Lโutilisation du filtre complementaire a ete utilisee dans de nombreuses recherches (Euston et al. (2008) ; Mahony et al. (2005)). Le filtre complementaire permet de donner un poids entre la valeur fournie par lโaccelerometre et la valeur du gyroscope. Il peut etre cependant difficile a avoir de bons resultats, le filtre etant trop simpliste. Le filtre de Kalman a ete beaucoup utilise pour ce genre de probleme et est considere comme une reference (Kalman et al. (1960) et Grover & Hwang (2012)). Une comparaison entre le filtre de Kalman et le filtre complementaire a ete faite par Higgins (1975). Le filtre de Kalman peut cependant etre complique a realiser lorsque lโon utilise des modeles non lineaires.
Le filtre de Kalman etendue doit etre utilise (Marins et al. (2001)). Le temps dโexecution et la complexite de lโimplementation de ce filtre peuvent devenir problematiques. Dโautres solutions existent, notamment lโutilisation de systeme flou (Sung (2003)). Ce projet utilisera cependant le filtre utilise par Madgwick et al. (2011). Ce filtre se base sur les quaternions afin dโeviter les problemes lies aux angles dโEuler. Il utilise un algorithme simple et rapide dโexecution. Lโutilisation de ces algorithmes sur le gyroscope et lโaccelerometre fonctionne correctement lorsque les experiences se font sur un repere local. Les drones sont cependant beaucoup utilises a lโexterieur avec comme coordonnees une position precise par rapport a la Terre. Il faut alors connaitre la direction du drone par rapport a celle-ci. On utilise pour cela le magnetometre avec le gyroscope et lโaccelerometre. On parle alors dโun ensemble AHRS (Attitude and Heading Reference System). Les filtres evoques precedemment peuvent etre utilises pour ajouter le magnetometre.
Fonctionnement thรฉorique du drone
Le quadcopter est constitue de 4 moteurs permettant dโorienter le drone (Figure 2.1). Les vitesses ฯ1 et ฯ3 des moteurs M1 et M3 vont dans le sens inverse des aiguilles dโune montre et les vitesses ฯ2 et ฯ4 des moteurs M2 et M4 dans le sens des aiguilles dโune montre. Le quadcopter peut sโorienter de differentes manieres : la configuration dite en plus, dans laquelle le nez du drone se situe en face du moteur M1 et la configuration en croix (ou cross en anglais) ou le nez se trouve entre les moteurs M1 et M2. Une rotation positive de lโangle en lacet sโeffectue en augmentant les vitesses des moteurs M2 et M4 par rapport aux vitesses des moteurs M1 et M3. Une augmentation des vitesses des moteurs M1 et M3 par rapport aux vitesses des moteurs M2 et M4 produira une rotation en lacet negative. Lorsque le drone est dans une configuration en croix, la difference de vitesses des quatre moteurs est utilisee pour effectuer une rotation en roulis ou en tangage. En effet, une augmentation des vitesses des moteursM1 etM4 par rapport aux vitesses des moteursM2 etM3 permet dโavoir une rotation en tangage positive et inversement pour une rotation negative. Une augmentation des vitesses des moteurs M1 et M2 par rapport aux vitesses des moteurs M3 et M4 realise une rotation positive en roulis et inversement pour une rotation negative.
Lorsque le drone est dans une configuration en plus, la difference de vitesses de deux moteurs est utilisee pour faire les rotations en roulis et en tangage. Une augmentation de vitesse du moteur M1 par rapport a M3 fera une rotation positive en tangage. Une augmentation de la vitesse du moteur M4 par rapport a M2 fera une rotation positive en roulis. Deux reperes principaux sont utilises pour decrire le mouvement du drone. Le repere {i} represente le repere inertiel. Il est fixe par rapport a la Terre. Le repere {b} represente le repere du corps du drone. Lโaxe z du le repere {b} est toujours normal au corps du drone. Le repere {b} a ete pris de sorte a etre dans une configuration en croix. Lโorientation du drone peut etre representee de manieres differentes. On peut, en effet, utiliser les quaternions (Jia (2016)) ou les angles dโEuler. Contrairement aux angles dโEuler, les quaternions nโont pas besoin dโavoir des reperes auxiliaires pour etre decrits proprement. Ils peuvent aussi eviter le phenomene, dit blocage de cadran (ou gimbal lock en anglais), qui enleve deux degres de liberte au drone. Ce phenomene ainsi que les quaternions seront expliques plus en detail dans la suite de ce chapitre.
Dรฉtermination de la position du drone
On peut, a partir de (5.7), retrouver une coordonnee dans le repere inertiel en millimetre pour un pixel donne dans le repere {c}. On doit cependant traiter lโimage recue de sorte a pouvoir isoler le drone de lโenvironnement. On pourra alors recuperer le centre du drone comme point de reference afin de recevoir une coordonnee unique dans le repere {c}. On peut utiliser, pour isoler le drone, un algorithme appele soustraction de lโarriere-plan (Background subtraction dans la litterature (Sobral & Vacavant (2014))). Le principe de cet algorithme est demontre dans la Figure 5.3. La Figure 5.4 presente un example dโimage de reference a savoir un arriere plan. On peut alors, une fois lโimage de reference generee, mettre lโobjet dont la position doit etre mesuree devant la camera (Figure 5.5). La Figure 5.6 montre le resultat de lโalgorithme. Cet algorithme fonctionne sous plusieurs conditions. Lโenvironnement et la camera doivent etre fixes pendant toute lโexperimentation. Les objets nโappartenant pas a lโenvironnement doivent etre des objets dont lโon souhaite mesurer. Les objets doivent etre suffisamment grands pour ne pas etre confondus avec du bruit. Des recherches sur ce domaine ont ete menees afin de corriger ces problemes (arriere-plan dynamique, prise en compte de plusieurs cameras…). Les solutions complexifient cependant les algorithmes et peuvent augmenter le temps de calcul de la position.
Lโutilisation de lโalgorithme classique pour notre projet est suffisante etant donne lโenvironnement utilise pour les experimentations (enclos ferme dans un laboratoire). Une synthese des differentes techniques sur la soustraction de lโarriere-plan a ete faite par Bouwmans (2014). On utilise, pour realiser la soustraction de lโarriere-plan, la matrice Ia generee par la Kinect. Afin de faciliter les calculs, il peut etre preferable de normaliser les images de la profondeur pour avoir des valeurs comprises entre 0 et 1. La matrice Ia genere du bruit. Une portion du bruit peut etre filtree facilement en placant les valeurs en dessous de 0.01 a 1 lorsque lโimage est normalisee (Algorithme 5.1). On peut choisir une profondeur maximale arbitraire selon lโattente de lโexperimentation. Ceci permet notamment de ne pas traiter des objets etant dans le champ de vision de la Kinect, mais nโetant pas dans la zone dโexperimentation. Du bruit produit par les capteurs de la Kinect peut modifier les valeurs des elements de la matrice de profondeur. On risque alors de comparer lโimage actuelle avec du bruit, on aura alors produit une mauvaise image de reference. Pour pallier a ce probleme, la generation de lโarriere-plan ne se basera pas sur une image, mais sur plusieurs (Algorithme 5.2). Le nombre dโimages doit etre suffisamment grand pour avoir un resultat optimal (une centaine dโimages doit etre produite). La difference entre lโimage actuelle et lโarriere-plan peut alors etre faite. Il est necessaire dโutiliser des images binaires pour traiter lโimage. La matrice finale aura alors une valeur de 1. On choisira alors de mettre a 1 les elements de la matrice dont la valeur est superieure a une certaine limite et a 0 si ce nโest pas le cas. Cette limite est determinee arbitrairement. Elle doit etre suffisamment elevee pour pouvoir differencier les objets du bruit, mais suffisamment faible pour differencier les objets a lโarriere-plan. Du bruit peut tout de meme exister (Figure 5.7). On utilise alors la morphologie dโouverture qui consiste a faire une erosion entre lโimage generee et une forme geometrique (ici un carre contenant de dimension 3 pixels par 3 pixels) suivi dโune dilation (Figure 5.6). Une explication plus poussee peut etre lue en suivant Dougherty & Lotufo (2003).
|
Table des matiรจres
INTRODUCTION
CHAPITRE 1 REVUE DE LITTรRATURE
1.1Introduction
1.2Le quadcopter
1.3Les moteurs utilisรฉs
1.4Le centre inertiel
1.5La carte รฉlectronique
1.5.1NAVIO
1.5.2Erle-Brain
1.5.3Pixhawk
1.5.4Autres
1.6Unitรฉ de gestion de vol
1.6.1PX4
1.6.2Ardupilot
1.7Technologies dรฉveloppรฉes pour rรฉcupรฉrer la position
1.7.1Vision par ordinateur
1.7.2Capture des mouvements
1.7.2.1Optitrack
1.7.2.2Vicon
1.7.2.3Kinect
1.8Commandes utilisรฉes pour contrรดler un quadcopter
1.8.1Commandes linรฉaires
1.8.2Commande non linรฉaire par backstepping
1.8.3Commande par mode glissant
1.8.4Linรฉarisation entrรฉe-sortie
1.9Conclusion
CHAPITRE 2 MODรLISATION DU QUADCOPTER
2.1Fonctionnement thรฉorique du drone
2.2Changement de repรจre entre le repรจre inertiel et le repรจre du corps du drone
2.3Vitesses angulaires
2.4Relation entre les angles dโEuler et les quaternions
2.5Dynamique du drone
2.6Relation entre les forces et les couples du drone et des moteurs
2.7Conclusion
CHAPITRE 3 MESURE DES PARAMรTRES
3.1Drone basรฉ sur le chรขssis S500
3.2Mesure des moments dโinertie
3.2.1Mรฉthode thรฉorique
3.2.2Mรฉthode expรฉrimentale
3.2.3Mรฉthode par modรฉlisation 3D
3.3Relation entre les forces et les signaux MLI
3.4Conclusion
CHAPITRE 4 COMMANDE DU QUADCOPTER
4.1Structure de la commande
4.2Linรฉarisation du modรจle et conception des contrรดleurs du drone
4.2.1Linรฉarisation entrรฉe-sortie et conception du contrรดleur dโattitude
4.2.2Conception du contrรดleur de position
4.3Conclusion
CHAPITRE 5 DรTECTION DE LA POSITION ET ESTIMATION DE LA VITESSE DU DRONE AVEC LA KINECT2
5.1Modรฉlisation de la Kinect V2
5.1.1Modรจle du stรฉnopรฉ
5.2Dรฉtermination de la position du drone
5.3Estimation de la vitesse
5.3.1Estimation de la vitesse ร lโaide dโun filtre passe-bas de deuxiรจme ordre
5.3.2Estimation de la vitesse ร lโaide dโun filtre de Kalman discret
CHAPITRE 6 PLATFORME DโEXPรRIMENTATION ET VALIDATION DE LA COMMANDE
6.1Simulation
6.2Implรฉmentation
6.2.1Robot Operating System (ROS)
6.2.2Implรฉmentation de la commande sur le Crazyflie
6.2.2.1Protocole de communication du Crazyflie
6.2.2.2Rรฉsultats de lโimplรฉmentation sur le Crazyflie
6.2.2.3Conclusion
6.2.3Implรฉmentation de la commande sur le drone S500
6.2.3.1Protocole de communication Mavlink
6.2.3.2Rรฉsultats expรฉrimentaux du drone S500
6.2.3.3Conclusion
CONCLUSION
RECOMMANDATIONS
ANNEXE I COEFFICIENTS DU FILTRE PASSE-BAS EN DISCRET
ANNEXE II LEMME DE BARBALAT
Tรฉlรฉcharger le rapport complet