Urbi est une plateforme open source permettant de contrôler des robots ou des systèmes complexes. Le but d'Urbi est de simplifier le développement de programmes et de comportements pour les robots.
Pour plus d'informations sur Urbi, rendez vous sur le site http://www.gostai.com/

J'ai donc écrit un driver Urbi qui permet de prendre le contrôle et de programmer le drone en urbiscript.
On peut contrôler le drone depuis n'importe quelle interface comme par exemple un joystick, une wiimote, une centrale inertielle, un clavier, une souris… Bref, n'importe quoi qui se connecte à un PC sous windows, linux ou mac.
On peut aussi créer sa propre interface graphique en utilisant le logiciel Gostai Lab.


Voici par exemple 2 vidéos de démonstrations :

Celle ci montre comment piloter le drone soit graphiquement, soit programmatiquement en urbiscript


Cette là montre comment écrire un programme (de 25 lignes seulement) en urbiscript qui permet au drone de voler seul en suivant une balle.



Tutorial d'installation


Avant tout,je tiens à préciser qu'il s'agit d'un proof of concept. Le travail effectué est issue d'expérimentations et je ne peux garantir que Urbi ou mon driver soient exempt de bug! Si vous décidez de l'installer pour essayer avec votre drone, c'est à vous de prendre toutes les mesures nécessaire pour qu'en cas de perte de contrôle du drone, celui ci ne provoque pas de dégâts.
En d'autres termes: SI VOUS NE VOULEZ PAS RISQUER DE CASSER VOTRE DRONE, N'ALLEZ PAS PLUS LOIN...



1. Prérequis

Pour tester Urbi avec votre AR. Drone, il vous faut :
  • Un AR.Drone :)
  • Un ordinateur équipé de wifi avec linux.
  • Et c'est tout.


2. Installation

Téléchargez cette archive pour linux x86 ou cette archive pour OSX x86 qui contient Urbi avec le driver pour le drone sur votre ordinateur et décompressez le.
Entrez dans le dossier fraichement décompressé, vous y découvrirez Urbi.
Pour les barbus :
$tar xvjf urbi-sdk-2.3-linux-x86-gcc4-ardrone-1.0.tar.bz2

Pour démarrer Urbi avec le driver AR.Drone, il suffit d'exécuter le script "start.sh"...
Mais avant d'en arriver là, il faut connecter le drone à votre ordinateur en wifi.

Commencez par allumer votre drone. Patientez jusqu'à ce que les leds soient vertes puis appuyer sur le bouton "unpair" situé sous le drone. Les leds devraient clignoter en vert/rouge.

Pour connecter votre ordinateur au drone, vous pouvez passer par le "network manager" de votre distribution linux. Vous devriez le voir dans la liste des réseaux wifi disponible sous le même nom qu'avec votre iPhone.
Pour les barbus, voici la marche à suivre :
$sudo ifconfig wlan0 192.168.1.5/24 up
$sudo iwconfig wlan0 mode ad-hoc essid <le nom de votre drone>

un ping sur 192.168.1.1 permettra de s'assurer qu'on parle bien au drone...


3. Démarrage

Maintenant vous pouvez exécuter le script "start.sh" présent dans le dossier précédemment décompressé.
Urbi va démarrer et charger automatiquement le driver AR.Drone et le démarrer. Si vous êtes bien connecté au réseau wifi du drone, vous devriez voir ceci :
gostai@fuji:~/urbi-sdk-2.3-linux-x86-gcc4-ardrone-1.0$ ./start.sh
[00000187] *** ********************************************************
[00000188] *** Urbi SDK version 2.3 rev. 9a84600
[00000193] *** Copyright (C) 2005-2010 Gostai S.A.S.
[00000193] ***
[00000193] *** This program comes with ABSOLUTELY NO WARRANTY.  It can
[00000193] *** be used under certain conditions.  Type 'license;',
[00000193] *** 'authors;', or 'copyright;' for more information.
[00000193] ***
[00000193] *** Check our community site: http://www.urbiforge.org.
[00000193] *** ********************************************************
[00000236] ARDrone_0x8f88f48
before setLocale()
before ardrone_tool_setup_com(NULL)
before ardrone_tool_init(...)
Starting thread navdata_update
Starting thread ardrone_control
before ardrone_input_add(NULL)
Input device myControl added
Starting thread my_video
Thread navdata_update in progress...
Video stage thread initialisation
[00000243] true
[00000266] *** Waiting connection.
Timeout
[00001206] *** Successfuly connected to the drone :)
[00001236] *** Now, open a new terminal and type "telnet localhost 54000"


Voila, Urbi est démarré et connecté au drone.

Maintenant, tout en laissant le programme tourner, ouvrez un nouveau terminal pour vous connecter sur Urbi en telnet :
gostai@fuji:~$ telnet localhost 54000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
[00010947] *** ********************************************************
[00010949] *** Urbi SDK version 2.3 rev. 9a84600
[00010949] *** Copyright (C) 2005-2010 Gostai S.A.S.
[00010949] ***
[00010949] *** This program comes with ABSOLUTELY NO WARRANTY.  It can
[00010949] *** be used under certain conditions.  Type 'license;',
[00010949] *** 'authors;', or 'copyright;' for more information.
[00010950] ***
[00010950] *** Check our community site: http://www.urbiforge.org.
[00010950] *** ********************************************************


Félicitation, Vous venez de vous connecter dans ce qu'on appel un engine Urbi.
Vous pouvez maintenant taper des commandes Urbi et commencer à piloter/programmer votre drone. :)


3. Premier vol avec Urbi

Faites de la place autour du drone et dans la fenêtre telnet tapez (sur une seule ligne) :
drone.takeoff(); sleep(4s); drone.landing();

Je vous laisse deviner ce que ce programme fait :).


4. Documentation

Maintenant, il est nécessaire d'apprendre à se servir d'Urbi et d'urbiscript pour programmer votre drone.
Pour cela, le plus simple est d'aller consulter la documentation du driver AR.Drone dans le dossier précédemment décompressé "urbi-sdk-2.3-linux-x86-gcc4-ardrone-1.0/share/scripts/" en allant voir les scripts Urbi "drone.u" et "balltracking.u".
Quant à la documentation d'urbiscript, tout se trouve ici : http://www.urbiforge.org/index.php/Main/Docs.

Le script "balltracking.u" est le script mis en œuvre dans la vidéo youtube "balltracking".
Pour faire marcher ce script, il est nécessaire de charger le driver "colormap" qui est l'algorithme de detection de la balle dans l'image de la camera du drone. Ce driver est automatiquement chargé avec le driver AR.Drone par le script "start.sh".
Les drivers sont placés dans le dossier "urbi-sdk-2.3-linux-x86-gcc4-ardrone-1.0/share/uobjects/".

Pour les développeurs qui souhaitent étendre le comportement d'Urbi en codant leurs propres drivers, la documentation est . Vous trouverez les sources à compiler de drivers (tel que celui pour utiliser un joystick) sur le site http://www.urbiforge.org/index.php/Main/Modules


5. Gostai Lab

Gostai Lab permet de construire une interface graphique facilement en "bindant" du script Urbi à des widgets (bouton/text area/sliders/image viewer/...).
Vous pouvez le télécharger ici : http://gostai.com/download/.
Vous pouvez télécharger ici les fichiers ula GostaiLab que j'ai utilisé dans la vidéo balltracking : balltracking.ula et ardrone.ula.
Cela vous permettra de piloter votre drone facilement.


A vous de jouer :)

Thank to derdoc for her built under osx