Arcalabs DroneInSphero

Arcalabs DroneToSpheroEvolution

 

 

 

 

 

 

 

 

 

 

 

 

AR.Drone2.0 VS SPHERO


Vous connaissez surement l'AR.Drone fabriqué par Parrot ?! Vous connaissez peut-être également Sphero, la balle robotique créée par Orbotics ?!

Nous avons décidé de réunir leurs fonctionnalités afin de proposer une nouvelle expérience de pilotage du drone !! Tout cela bien sûr en utilisant LabVIEW !! 

 

L'AR.Drone Parrot :

Ce drone se pilote habituellement à l'aide d'un smartphone sous Android ou iOS. Cependant les ingénieurs de Parrot ont ouvert son API et en fournissent les détails sur leur site internet.

 

Sphero : 

Sphero se pilote également grâce à un smartphone sous Android ou iOS. Les ingénieurs d'Orbotics ont également ouvert le code du firmware du Sphero et en donnent les détails sur leur site internet.

 

Le défi :

Beaucoup de projets ont déjà été réalisées sur ces deux interfaces. Cependant aucun ne regroupe l'ARDrone, le Sphero et la puissance de NI LabVIEW !!

Nous avons donc décidé de créer un programme permettant de piloter l'ARDrone à l'aide du Sphero. Ce dernier sera donc détourné de son utilisation première et sera utilisé comme 'télécommande' du drone !

LabVIEW sera utilisé pour faire communiquer ces 2 objets ludiques entre eux et afficher toutes les données utiles au contrôle de l'AR.Drone !

 

 Les premiers essais :

Sphero :

Aucune bibliothèque de controle du Sphero sous LabVIEW n'existait au début du projet. Nous avons donc créé entièrement la notre à partir de l'API de communication Bluetooth fournie par les développeurs d'Orbotix.

Sphero communique selon 2 modes : synchrone et asynchrone. Chaque requête 'synchrone' envoyée au Sphero implique une réponse directe de celui-ci (système de 'handshaking'). Les requêtes 'asynchrones' quant à elles déclenchent une réponse su Sphero seulement quand celui-ci peut y répondre. Par exemple, lorsque l'on déclenche la détection de collisions, le Sphero renvoie une trame spécifique seulement quand une collision est détectée.

 

Il a donc fallu développer une couche de communication permettant de gérer aussi bien les réponses synchrones qu'asynchrones du Sphero et que leur décodage. En effet, toutes les trames 'synchrones' se décodent de la même facon. Par contre chaque trame 'asynchrone' possède un formalisme particulier.

Le défi à ensuité été de pouvoir se servir du Sphero non pour ses capacités motrices mais pour ses capteurs et sa capacité à streamer en continu leur valuer. Notamment les signaux issus de son IMU (Inertial Measurement Unit). Ce capteur permet de connaitre la position du Sphero sur 3 axes par rapport à une origine prise à son démarrage.

 

Pour valider notre bilibothèque et le décodage les signaux en provenance de l'IMU nous avons donc développé cette petite interface qui permet de controler la position de 2 'yeux' 3D en fonction de la position du Sphero.

 

AR.Drone:

Pour commencer notre développement nous avons pu télécharger une API LabVIEW pour l'AR.Drone sur le site de LabVIEW Hacker. Afin de prendre en main cette bibliothèque et voir ce que nous pouvions faire avec le drone, nous avons de décidé de créer un gamepad sous LabVIEW permettant de contrôler l'AR.Drone avec un clavier d'ordinateur.

Gamepad

Le drone communique par le biais d'une liaison TCP/IP, supportée nativement par LabVIEW. Les données de contrôle sont envoyées régulièrement au drone, et les informations en provenance de ses capteurs sont reçues de manière asynchrone. En effet, lorsqu'il est stable, il envoie de données à peu près toutes les 100 millisecondes ; lorsqu'il est en mouvement, cet intervalle de temps peut descendre en dessous de 10 millisecondes.

Nos premiers essais :

Combinaison ARDrone / Sphero

Le Sphero utilisant une connexion Bluetooth et l'ARDrone le WiFi, un PC fera la passerelle entre les deux objets. Le logiciel développé avec LabVIEW permet la communication avec le Sphero et le drone, ainsi que l'affichage des données issues de leurs capteurs.

dronesphero4

L'intéraction entre le Sphero et l'ARDrone se passe en 6 étapes :

  1. Contrôle du sphéro pour aligner son positionnement par rapport à l'utilisateur (étape d'initialisation, fexécutée une seule fois au lancement du programme)
  2. Récupération des données des différents capteurs du Sphero (IMU, collision, accelerations)
  3. Traitement des données pour les convertir en ordre pour l'ARDrone (Pitch, Roll, Yaw, Décollage/Atterissage)
  4. Envoi des ordres de mouvement à l'ARDrone
  5. Récupération des données émises par l'ARDrone (vitesses linéaires, altitude, position)
  6. Affichage des données capteurs de l'ARDrone sur des contrôles spécifiques, animation d'un modele 3D de l'ARDrone en fonction de sa position, affichage des données Sphero

L'architecture logicielle mise en place permet de décorreller le contrôle de l'ARDrone et du Sphero, et l'affichage des données. Chacune de ces parties sont lancées dans leur propres threads (process), la communication entre chacun est réalisée par des événements. Chaque partie est donc indépendante, seul l'abonnement aux événements générés par les threads voisins les lient entre eux.

 GeneralSoftwareArchitecture

 

 

Démonstration lors des NI Days 2014 :