• Aucun résultat trouvé

État de l’art des principaux autopilotes pour drones

Dans le document en fr (Page 36-39)

4.7 Boucle externe : commande de la position

1.5.1 État de l’art des principaux autopilotes pour drones

Il existe un nombre très important de solutions visant au guidage, à la navigation et à la com- mande des drones, appelées “autopilotes”. Un autopilote consiste en une partie électronique et une partie logicielle. Classiquement, le développement de ces deux parties se fait de manière conjointe. Après un temps où chaque laboratoire développait son propre autopilote, depuis les années 2010 la tendance est clairement à la mise en commun et au partage des développements17, autant électroniques que logiciels.

Depuis quelques années, les différentes architectures logicielles ont atteint un degré d’abs- traction et de standardisation permettant leur compatibilité avec un maximum de plateformes électroniques, processeurs ou capteurs. De nombreuses initiatives ont ainsi été lancées par dif- férentes équipes de recherche dans le sens de la standardisation : la plateforme DroneCode18 (de Lanerolle, 2015), les protocoles de communication UAVCAN (Kirienko et al., 2015) et MAV- Link19(Meier et al., 2013) ou encore le support du système ROS (Robot Operating System) (Qui- gley et al., 2009). La frontière entre les différents autopilotes libres est ainsi de plus en plus floue car ils partagent des bases de codes conséquentes20.

1.5.1.1 Une multitude de systèmes : évolution comparée sur dix ans

S’il existe des systèmes propriétaires performants (on peut mentionner par exemple ceux pro- posés par le leader chinois des drones de loisirs, DJI), les projets d’autopilotes “open-source” ont l’avantage de la flexibilité de la partie logicielle comme de la partie électronique, et d’être constamment testés et améliorés par une communauté d’utilisateurs, de chercheurs et de dé- veloppeurs. En effet, le code source de ces projets est publique, et en général accessible sur des plateformes de gestion de code telles que “GitHub” ou “BitBucket”. Cela signifie que n’importe qui peut contribuer au projet21, mais également créer très facilement une version dérivée du projet initial (appelée fork). Ces versions dérivées peuvent parfois prendre le dessus sur le projet initial si elles sont plébiscitées par la communauté. Cela rend parfois confus l’historique des différents projets, et il est difficile d’avoir une vue d’ensemble sur les projets actifs.

17. Grâce à des initiatives comme le projet Paparazzi, développé à l’ENAC de Toulouse (Brisset et al., 2006), qui visait très tôt à un partage des efforts de développement.

18. DroneCode est une organisation liée à la Fondation Linux visant à favoriser le développement collaboratif de logiciels libres pour les drones, dans le but de fournir une solution complète, fiable et flexible d’autopilote pour drones. Elle fait le lien entre les développeurs et l’industrie. Les projets de référence de DroneCode sont PX4, Pixhawk, MAVLink et QGroundControl (Tridgell, 2015). D’autres projets sont également inclus : UAVCAN, RTPS, ROS Gazebo Simulator, etc.

19. Le protocole de communication MAVLink développé dans les années 2010 à l’ETH de Zürich est aujourd’hui utilisé dans la grande majorité des autopilotes. Ce protocole permet de standardiser les communications entre l’auto- pilote et d’autres systèmes (station-sol, processeur de calcul déporté, système de télémétrie...).

20. A titre d’exemple, la carte électronique préférentielle du projet ArduPilot est à présent issue du projet Pix- hawk/PX4, sur laquelle la partie logicielle s’intègre comme une tâche temps réel spécifique de la base logicielle PX4.

21. Les contributions se font via des pull request, c’est-à-dire une proposition de modification qui est soumise à l’étude et validée par la communauté le cas échéant. Ce terme, ainsi que les termes commit ou fork sont des termes techniques issus de l’anglais et utilisés également en français.

Nom Site internet Code source

ArduPilot/APM http://ardupilot.org https://github.com/ArduPilot/ardupilot PX4/Pixhawk http://px4.io https://github.com/PX4/Firmware Paparazzi UAV http://wiki.paparazziuav.org/wiki/Main_Page https://github.com/paparazzi/paparazzi OpenPilot http://www.openpilot.org https://github.com/openpilot/OpenPilot LibrePilot https://www.librepilot.org https://bitbucket.org/librepilot/librepilot TauLabs http://taulabs.org/ https://github.com/TauLabs/TauLabs dRonin http://dronin.org https://github.com/d-ronin/dRonin

MultiWii http://www.multiwii.com https://github.com/multiwii/multiwii-firmware BaseFlight - https://github.com/multiwii/baseflight RaceFlight https://raceflight.net https://github.com/rs2k/raceflight iNavFlight http://inavflight.com https://github.com/iNavFlight/inav Cleanflight http://cleanflight.com https://github.com/cleanflight/cleanflight BetaFlight https://github.com/betaflight/betaflight/wiki https://github.com/betaflight/betaflight AeroQuad http://aeroquad.com https://github.com/AeroQuad/AeroQuad AutoQuad http://autoquad.org https://github.com/mpaperno/aq_flight_control MatrixPilot https://github.com/MatrixPilot/MatrixPilot/wiki https://github.com/MatrixPilot/MatrixPilot

La figure 1.23 donne l’évolution du nombre de contributeurs23sur chaque projet. Cette figure donne des informations sur l’activité des projets (certains projets ne sont plus mis à jour depuis plusieurs mois) et sur leur historique. Un autre bon indicateur de l’activité de chacun des projets est le nombre de commit par semaine24, tracé en figure 1.24.

On peut noter les points suivants :

— Certains projets ont connu une activité importante mais éphémères et n’ont plus d’activité aujourd’hui. C’est le cas par exemple des projets OpenPilot, MultiWii, BaseFlight, etc. — D’autres ont une activité continue depuis de nombreuses années. Le projet Paparazzi (Bris-

set et al., 2006), par exemple, est actif depuis 2005 avec entre 10 et 70 commit par se- maine25. Il a connu un pic d’activité entre 2010 et 2012.

— Les projets PX4 et Ardupilot connaissent une activité croissante depuis leur création pour atteindre plus de 80 commit par semaine depuis 2014. En 2015, plus de 100 000 utilisateurs de ces projets sont recensés (pour la recherche, l’enseignement, par les amateurs ou les professionnels) (Riseborough, 2015).

— Le projet OpenPilot a connu une forte activité durant les deux années suivant sa création, puis un regain d’activité en 2012. Son fork Taulabs a ensuite pris le dessus à partir de 2013. L’un comme l’autre semblent abandonnés aujourd’hui.

— Le projet CleanFlight/BetaFlight connait une croissance très forte depuis 2016, pour at- teindre récemment le niveau d’activité des projets PX4 et Ardupilot. Cela s’explique par l’essor des courses de drones, pour lesquelles ce projet est orienté.

22. Les scripts permettent de récolter un certain nombre de données sur chaque commit, c’est-à-dire chaque modi- fication du code source (nombre de lignes ajoutées ou supprimées, auteurs, date, etc.).

23. Un contributeur est une personne ayant modifié une portion du code source, et dont la modification a été ac- ceptée et incluse dans la branche principale du projet.

24. Un commit est la prise en compte effective d’une modification sur le code source. Cela peut être la correction d’un défaut ou l’ajout d’une fonctionnalité, par exemple.

25. Le projet Paparazzi est en réalité en développement depuis 2003 pour les drones à voilure fixe. Le site d’héber- gement du code source a changé en 2005. C’est le cas pour d’autres projets également.

Figure 1.23 – Nombre de contributeurs au code source des principaux autopilotes pour drones.

Données au 25/04/2017.

Par ces courbes, on peut noter également les nombreux fork des projets. Ainsi, les projets BetaFlight, CleanFlight et iNav ont des ancêtres communs, de même que les projets LibrePilot et dRonin. On peut ainsi tracer les arbres présentés en figure 1.25. Le projet ArduPilot a également connu une évolution ponctuée de fork et de fusions entre projets. En 2010, notamment, les deux jeunes projets ArduCopter et AeroQuad fusionnent pour donner naissance à ArduCopterNG, puis APM, et enfin ArduPilot utilisé actuellement. Enfin, on peut mentionner également le nombre impressionnant de 3330 clones ou fork du projet PX4 dénombrés fin avril 2017.

1.5.1.2 Évolution des architectures électroniques

Historiquement, les autopilotes pour drones miniatures ont d’abord été majoritairement ba- sés sur des microcontrôleurs 8 ou 16 bits. C’était le cas du projet Drone Cigogne26 de l’INSA de Strasbourg, du projet Slugs27de l’université de Californie, de MatrixPilot ou encore GluonPi- lot : tous développés pour les microcontrôleurs 16 bits “dsPIC” de Microchip. Le projet MultiWii comme le projet ArduPilot28 ont été développés au départ pour microcontrôleurs 8 bits de At- mel. Suivant l’évolution des systèmes embarqués, les projets ont été adaptés pour fonctionner sur microcontrôleurs 32 bit (le projet Multiwii devient Baseflight, le projet ArduPilot est adapté pour l’architecture ARM, etc.), sur circuits FPGA (Field-Programmable Gate Array) (comme le pro- jet BeaglePilot, issu de ArduPilotMega) ou encore sur des CoM (Computer-on-Module) capables d’intégrer un système Linux embarqué29. Différentes cartes électroniques sont présentées en fi- gure 1.26. Il existe un nombre très important de variantes de ces cartes, encouragées par la dispo- 26. Développé au départ sur microcontrôleurs 8 ou 16 bits, le projet Drone Cigogne s’est ensuite rattaché aux plate- formes APM de ArduPilot, puis Pixhawk de PX4, à l’instar de nombreux groupes de recherche.

27. Développés principalement pour les drones à voilure fixe, les projets Slugs et GluonPilot ont connu leur pic de développement entre 2008 et 2010, mais ne sont plus mis à jour depuis le début de l’année 2013.

28. Le projet ArduPilot était développé au départ pour les plateformes Arduino (années 2009 à 2012), basées sur des microcontrôleurs Atmel 8 bits, d’où le nom du projet.

29. Le code PX4 est aujourd’hui compatible avec des microcontrôleurs ARM 32 bits, des systèmes Linux embarqués comme Intel Aero Compute ou Raspberry Pi, ou d’autres systèmes embarqués comme la plateforme Qualcomm Snap- dragon dont le processeur “Snapdragon 801” est utilisé également sur de nombreux smartphones.

Figure 1.24 – Nombre de commit par semaine pour codes source des principaux autopilotes pour

drones. Utilisation d’un filtre moyenneur avec une fenêtre glissante sur six mois. Données au 25/04/2017.

nibilité des sources30.

1.5.1.3 Différents degrés d’automatisation

Si les autopilotes présentés ne sont pas égaux en termes d’activité ou de nombre de contri- buteurs, ils ne le sont pas non plus en termes de fonctionnalités et de performances. La grande majorité d’entre eux est développée pour les multicoptères, et en particulier les quadricoptères. Un nombre réduit d’entre eux permet également la commande de drones à voilure fixe ou même de robots terrestres (ArduPilot ou PX4 par exemple). On peut distinguer deux grandes familles : les autopilotes permettant une commande uniquement manuelle du drone (par radiocommande), et les autopilotes permettant également des vols plus ou moins automatisés. C’est le cas des projets Pixhawk/PX4, Ardupilot et Paparazzi qui bénéficient des contributions de chercheurs du monde entier (Bapst et al., 2015; Goppert et al., 2017; Mellinger et Kumar, 2011) ainsi que de par- tenaires académiques et industriels.

Dans le document en fr (Page 36-39)