AirSim: un simulateur de drone sous UE4 couplé à Pixhawk

Ceci n’est pas un arti­cle sur un sim­ple sim­u­la­teur de drones… non, cela va beau­coup plus loin. Il s’agit ici de simuler un drone, tout en récupérant un max de don­nées de vol, et en étant cou­plé à un logi­ciel d’auto-pilotage. Bref, cela va être l’occasion pour moi de vous présen­ter Air­Sim qui a été dévelop­pé par Microsoft, mais aus­si le pro­jet Pix­hawk qui est un pro­jet en Open Hard­ware d’un ensem­ble per­me­t­tant de créer son pro­pre drône avec caméra et télé­com­mande et per­me­t­tant de don­ner un peu d’autonomie à ce drone. Vous êtes prêts, car ça va être pas­sion­nant 😉

Le projet AirSim

Bon on va com­mencer par présen­ter Air­Sim, et on revien­dra vers lui à la fin.

Le pro­jet Air­Sim a été lancé par Microsoft pour aider les util­isa­teurs à tester et à entraîn­er des robots et des drones dans un envi­ron­nement virtuel avant de les pilot­er dans le monde réel. Donc, avant tout il s’agit d’un sim­u­la­teur de pilotage de drones , mais l’idée c’est de ne pas for­cé­ment lim­iter l’application aux drones con­ven­tion­nels (pour nous un drone, c’est avant tout une machine volante).

Ce qui ne gâche rien, le pro­jet avec le moteur Unre­al Engine, et il est disponible gra­tu­ite­ment en open source sur Github.

Avant de con­tin­uer, je vous pro­pose de vision­ner cette courte vidéo:

Bon, c’est pas mal, mais ça casse pas des bri­quettes me direz-vous ? C’est qu’en réal­ité, vous venez de voir le som­met émergé de l’iceberg. En fait, c’est beau­coup plus puis­sant que ça, mais ça ne se voit pas tout de suite !

La plate­forme a été conçue pour les chercheurs en intel­li­gence arti­fi­cielle afin de col­lecter les don­nées d’entraînement et men­er des expéri­ences avec les algo­rithmes de deep learn­ing, de la vision par ordi­na­teur et d’appren­tis­sage par ren­force­ment. Bref, les algo­rithmes néces­saires pour avoir un drone autonome au vrai sens du terme.

Donc, oui, on simule un drone d’un coté, mais dans des con­di­tions réal­istes, et surtout, de l’autre, on col­lecte des datas. Con­cer­nant la pré­ci­sion de la sim­u­la­tion, les appli­ca­tions de robo­t­ique en temps réel néces­si­tent un moteur physique tour­nant en haute fréquence, générale­ment autour de 1 KHz. Microsoft a pu attein­dre cette fréquence en déléguant les cal­culs de véri­fi­ca­tion de col­li­sion au moteur graphique Unre­al Engine 4. Pour rap­pel, UE4 repose sur PhysX. Toute­fois, les util­isa­teurs seront en mesure d’implémenter leur pro­pre moteur physique s’il le souhaite.  Si vous voulez plus d’informations à ce sujet, je vous invite à lire le doc­u­ment Aer­i­al Infor­mat­ics and Robot­ics Plat­form (PDF, 20Mo).

Le code de Air­Sim est mul­ti­plate­forme et sup­porte la sim­u­la­tion hard­ware-in-loop avec les con­trôleurs de vol comme Pix­hawk afin d’interagir directe­ment avec l’environnement simulé. La sim­u­la­tion Hard­ware-in-the-loop (« matériel dans la boucle ») est une méth­ode de sim­u­la­tion car­ac­térisée par l’association de véri­ta­bles com­posants, con­nec­tés à une par­tie temps-réel simulée.

La com­pi­la­tion sous Lin­ux et OSX sem­ble fonc­tion­nelle, plusieurs util­isa­teurs ont pu builder et tester sans soucis.

Et c’est main­tenant que notre aven­ture con­tin­ue avec Pix­Hawk… Mais avant cela, mer­ci à Cori­olan de Devel­oppez pour son arti­cle sur lequel je me suis large­ment inspiré pour cette intro­duc­tion.

DroneCode et PX4

Le pro­jet Dronecode, lancé par la fon­da­tion Lin­ux, a pour objec­tif de réu­nir plusieurs plates-formes open-source de soft­ware et de hard­ware déjà exis­tantes pour aider le développe­ment et l’amélioration des drones.

Ce pro­jet est essen­tielle­ment basé sur les plates-formes des pro­jets ArduPi­lot et PX4. ArduPi­lot a ren­con­tré un impor­tant suc­cès en 2007 lorsqu’il a été soutenu par la com­mu­nauté de DIY­Drone.

PX4 est un pro­jet open-source et open-hard­ware qui four­nit une plate­forme matérielle et logi­cielle clés en main pour implé­menter des appli­ca­tions de pilote automa­tique, qu’il s’agisse d’UAV des­tinés à un usage com­mer­cial, per­son­nel ou académique. Ces deux bases fédèrent plus de 1200 développeurs qui vont désor­mais con­tribuer au développe­ment de Dronecode. Un grand nom­bre d’entreprises et d’organisations par­mi lesquelles Ama­zon, Hob­byK­ing, Hori­zon Ag et Pre­ci­sion­Hawk utilisent déjà ces out­ils.

Pixhawk

Pix­hawk est un pro­jet en archi­tec­ture open-hard­ware per­me­t­tant de fournir aux uni­ver­si­taires, hob­by­istes et indus­triels, un sys­tème matériel per­me­t­tant de con­trôler des drones de façon autonome (ou non), et ce à bas coût, avec une haute fia­bil­ité. Il repose sur PX4.

Voici le “boîti­er de con­trôle” qui a été pro­duit par ce pro­jet:

Voici en gros com­ment cela se rac­corde:

C’est un peu plus par­lant avec de sché­ma. Donc le boîti­er est embar­qué par le drone, com­posé ici d’une bat­terie, 4 moteurs, et un récep­teur pour la télé­com­mande, ain­si que d’un sys­tème de com­mu­ni­ca­tion pour la télémétrie qui peut-être reçue par une tablette. On peut reli­er cela à un cap­teur GPS et une caméra que l’on peut piv­ot­er.

Car­ac­téris­tiques tech­niques:

  • Micro­processeur avancé ARM Cor­tex® M4 32 bits fonc­tion­nant sous Nut­tX RTOS
  • 14 sor­ties PWM/servo (8 avec fail­safe et com­mande manuelle, 6 aux­il­i­aires, com­pat­i­bles haute puis­sance)
  • Mul­ti­ples con­nec­tiques pour des périphériques sup­plé­men­taires (UART, I2C, CAN)
  • Carte microSD pour l’enregistrement des don­nées

Bon, c’est la par­tie matérielle, mais elle est aus­si dotée d’une inter­face logi­cielle et d’une API assez impres­sion­nante.

Le 3DR PX4 Pix­hawk (c’est son nom com­plet, car pix­hawk conçoit d’autres choses) est doté d’un mul­ti­thread­ing inté­gré. Cet envi­ron­nement de pro­gram­ma­tion iden­tique à Unix/Linux, pro­pose des fonc­tions du pilote automa­tique au lan­gage de script Lua pour les mis­sions et com­porte­ments de vol, et une couche con­duc­teur PX4 per­son­nal­isée garan­tis­sant des délais très courts dans tous les proces­sus pour des fonc­tion­nal­ités avancées illim­itées à votre drone. Pix­hawk facilite les nou­veaux util­isa­teurs du sys­tème à décou­vrir le pilotage automa­tique ain­si qu’aux opéra­teurs d’APM et de PX4.

Voici ce qu’il est pos­si­ble de faire:

Il y a donc une recon­nais­sance visuelle des obsta­cles, un com­préhen­sion de l’environnement… il man­querait juste un Lidar pour faire du scan 3D ! Et encore, peut-être qu’en fouinant un peu, tout cela est peut-être déjà prévu — car je ne vois pas com­ment traiter ce sujet com­plète­ment sans une recon­sti­tu­tion fidèle de l’environnement extérieur.

Le logi­ciel Open Source QGround­Con­trol peut-être con­join­te­ment util­isé avec ce matériel (com­pat­i­bil­ité MAVLink).

Le boîti­er ci-dessus peut être acheté sur inter­net, aux alen­tours de 200€. Vous pou­vez aus­si le con­stru­ire vous-même si vous êtes doué en élec­tron­ique, car les plans sont disponibles. Le reste de l’équipement est assez stan­dard si vous voulez vous lancer dans la con­struc­tion d’un drone. Il faut juste que cela reste com­pat­i­ble avec PX4. Vous pour­riez par exem­ple imprimer le reste des pièces (ailes, pro­tec­tions, etc.) en 3D !

AirSim & le réel

C’est là qu’on revient à Air­Sim. Tout à l’heure, je vous ai mon­tré. L’écran ci-dessous mon­tre com­ment on peut pilot­er le drone simulé sous UE4 à l’aide  d’une con­sole de com­mande. On peut lui don­ner des ordres comme “Démarre les moteurs”, “env­ole toi”, “va à telle posi­tion”, etc.

Si vous voulez tester, il vous fau­dra un compte github et vous ren­dre à cette adresse. Ensuite, vous téléchargez l’archive zip et vous la décom­pressez dans un réper­toire de votre choix.

Il vous fau­dra aus­si Visu­al Stu­dio d’installé (VS2017 unique­ment pour avoir msbuild v15). Je vous fais par­venir un Build (16 mars 2017) si vous n’avez pas le courage de pass­er par cette étape mais que vous comp­tiez tester tout de même. Suf­fit de m’envoyer un email. Et cela n’a pas été sim­ple avec les dépen­dances et les vari­ables d’environnement à con­fig­ur­er…

Bon, créez un nou­veau pro­jet et ajoutez une classe C++ vierge si vous avez lancé un pro­jet Blue­print, puis ajoutez le con­tenu du réper­toire Unre­al (“Plu­g­ins”) dans votre pro­jet. Sortez et relancer. Il y aura une recom­pi­la­tion du plu­g­in et le pro­jet s’ouvrira.

Si vous allez dans les plu­g­ins, vous allez trou­ver:

Ensuite, il suf­fit d’utiliser le GameM­o­de pro­posé: “SimGameM­o­de” et de lancer !

Dans l’exemple ci-dessus, on utilise DroneShell que nous avons com­pilé avec Air­Sim. Ce dernier per­met de pren­dre le con­trôle du drone, avec des com­man­des comme “Arm” (lance les moteurs) ou “take-off”. La liste des com­man­des est acces­si­ble via la com­mande “Help”.

Ensuite, coté UE4, y-a 3 blue­prints à con­naitre — sont acces­si­bles en lis­tant les BP des plu­g­ins dans “Con­tent Brows­er”. Il s’agit de :

  • BP_FlyingPawn : c’est le pawn du drone en ques­tion
  • BP_PipCamera : caméra qui sert à suiv­re le drone en affichant les 3 caméras dans le HUD
  • BP_CameraDirector: qui doit être asso­cié aux 2 précé­dents dans “Details/Pawn”.

Voici quelques copies d’écran pour illus­tr­er:

Pour plus d’infos, vous pou­vez suiv­re cette vidéo:

Pour l’enregistrement des don­nées de vol, vous avez un bou­ton en bas à droite de l’écran. Sinon, la con­fig­u­ra­tion se fait dans “Documents/Airsim/settings.json” :

Voilà, je vous laisse faire vos pro­pres tests et revenir vers moi si vous avez des ques­tions ou des sug­ges­tions. Pour ma part, je compte bien con­tin­uer dans ce sens en acquérant un drone com­pat­i­ble et en faisant des tests plus poussés. En tous cas, c’est un pro­jet à suiv­re de près !

 

 

 

3 commentaires sur “AirSim: un simulateur de drone sous UE4 couplé à Pixhawk

Ajouter un commentaire

Laisser un commentaire

Fièrement propulsé par WordPress | Thème : Baskerville 2 par Anders Noren.

Retour en haut ↑

%d blogueurs aiment cette page :