Introduction

Jakopter est un projet de bibliothèque, dont le but est de permettre une utilisation aisée et flexible des différentes fonctionnalités offertes par l’AR Drone 2.0 de Parrot.

La bibliothèque est écrite en C, et dispose de bindings Lua.

Concepts généraux

Modules

Jakopter est organisée en modules, chacun remplissant une fonction donnée. Par exemple, un module est dédié à l’envoi de commandes au drone, un autre à la réception du flux vidéo.

Ces modules peuvent produire ou recevoir des données ou des commandes.
Par exemple, le module navdata fournit des informations sur le drone ; le module de contrôle, lui, reçoit des commandes qu’il transmet au drone.

Com_channel: transfert de données entre modules

Pour le passage des données vers et depuis ces modules, des structures com_channel sont utilisées. Un com_channel est une structure de communication très simple :
c’est une zone mémoire de taille fixe, à accès atomique, dans laquelle il est possible de lire et écrire des données à n’importe quelle position.

Les modules susceptibles de recevoir ou de produire des données possèdent un ou plusieurs com_channel(s), et chacun de ces com_channel possède un identifiant (numéro) unique permettant d’y accéder.
Un module peut ainsi mettre à disposition ou lire des données à des positions fixes dans son ou ses com_channel.
Par exemple, le module navdata mentionné plus haut écrit les données de vol, dès qu’elles sont reçues, à des positions précises dans son com_channel. Ces données sont alors à disposition de tout programme hôte utilisant Jakopter.

Ce système permet de réduire le couplage entre les différents modules, et offre une certaine flexibilité à l’utilisateur.
Prenons l’exemple du module vidéo, qui peut utiliser des données de vol pour les afficher en surimpression. Plutôt que d’obtenir directement ces données depuis le module navdata, il les obtient via un com_channel, qu’il conviendra au programme hôte de remplir ou non, avec des données qui peuvent être issues de navdata, ou de n’importe quelle autre source. Cet exemple illustre notre cas.

La page Plateforme Logicielle présente les différents modules de Jakopter, ainsi que les interactions standard entre eux.

Pour la documentation de l’API Lua de Jakopter, voir la page Commandes Lua.