AR. Drone et Urbi (en remote)
Par Jean Charles MAMMANA, vendredi 08 octobre 2010 à 20:33 :: Programmation :: #58 :: rss
Après mes précédentes expérimentations, j'ai voulu étendre les possibilités du drone de Parrot....
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>
$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"
[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] *** ********************************************************
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 là . 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

Commentaires
1. Le samedi 09 octobre 2010 à 14:53, par Max
2. Le samedi 09 octobre 2010 à 16:36, par Frank
3. Le samedi 09 octobre 2010 à 20:27, par psykokwak
4. Le lundi 11 octobre 2010 à 11:25, par danit
5. Le lundi 11 octobre 2010 à 15:30, par psykokwak
6. Le mercredi 13 octobre 2010 à 09:24, par eisdealer
7. Le mercredi 13 octobre 2010 à 09:54, par psykokwak
8. Le mercredi 13 octobre 2010 à 11:37, par eisdealer
9. Le samedi 16 octobre 2010 à 13:29, par Michel
10. Le jeudi 21 octobre 2010 à 21:20, par vears
11. Le jeudi 21 octobre 2010 à 23:47, par lucas
12. Le vendredi 22 octobre 2010 à 15:21, par edm
13. Le mardi 26 octobre 2010 à 11:37, par eddy
14. Le mardi 26 octobre 2010 à 17:49, par psykokwak
15. Le mercredi 03 novembre 2010 à 08:17, par Tom
16. Le dimanche 07 novembre 2010 à 12:45, par vears
17. Le dimanche 07 novembre 2010 à 14:27, par vears
18. Le lundi 08 novembre 2010 à 20:01, par vears
19. Le lundi 08 novembre 2010 à 21:13, par psykokwak
20. Le mardi 09 novembre 2010 à 10:41, par Vears
21. Le mardi 09 novembre 2010 à 18:46, par vears
22. Le mardi 09 novembre 2010 à 19:57, par psykokwak
23. Le mardi 09 novembre 2010 à 20:21, par vears
24. Le mardi 09 novembre 2010 à 20:47, par vears
25. Le vendredi 12 novembre 2010 à 14:56, par Cavin
26. Le mardi 30 novembre 2010 à 20:40, par Wheelo
27. Le mardi 30 novembre 2010 à 20:55, par Wheelo
28. Le mercredi 01 décembre 2010 à 20:24, par psykokwak
29. Le jeudi 02 décembre 2010 à 05:38, par Wheelo
30. Le dimanche 05 décembre 2010 à 05:28, par James
31. Le vendredi 10 décembre 2010 à 18:58, par rezcore
32. Le samedi 11 décembre 2010 à 12:14, par Hessel
33. Le samedi 11 décembre 2010 à 14:03, par psykokwak
34. Le mardi 14 décembre 2010 à 18:56, par shipppo0708
35. Le mercredi 15 décembre 2010 à 15:29, par vanpevi
36. Le samedi 18 décembre 2010 à 12:44, par rob
37. Le lundi 20 décembre 2010 à 18:54, par vanpevi
38. Le lundi 20 décembre 2010 à 22:36, par Watergeek
39. Le samedi 25 décembre 2010 à 05:25, par shipppo0708
40. Le mercredi 29 décembre 2010 à 23:57, par cyrille
41. Le mercredi 05 janvier 2011 à 16:06, par zmarco
42. Le samedi 08 janvier 2011 à 06:06, par Mac
43. Le lundi 10 janvier 2011 à 04:43, par jbalat
44. Le mardi 01 février 2011 à 09:38, par derDoc
45. Le mardi 01 février 2011 à 12:10, par psykokwak
46. Le jeudi 03 février 2011 à 16:52, par derDoc
47. Le jeudi 03 février 2011 à 23:55, par Mac
48. Le dimanche 06 février 2011 à 20:41, par Alexander
49. Le vendredi 11 février 2011 à 15:55, par Alexander
50. Le jeudi 24 mars 2011 à 20:47, par Ckthis
51. Le vendredi 25 mars 2011 à 23:09, par psykokwak
52. Le jeudi 31 mars 2011 à 08:26, par abdrom
53. Le dimanche 10 avril 2011 à 14:17, par guits
54. Le lundi 25 avril 2011 à 23:18, par heapoverflow
55. Le vendredi 29 avril 2011 à 00:13, par heapoverflow
56. Le vendredi 29 avril 2011 à 02:29, par PPCM
57. Le mardi 10 mai 2011 à 18:33, par student
58. Le mercredi 11 mai 2011 à 18:02, par Stingz
59. Le lundi 25 juillet 2011 à 16:37, par G
60. Le mardi 02 août 2011 à 10:13, par Arthur
61. Le mardi 02 août 2011 à 10:58, par psykokwak
62. Le jeudi 11 août 2011 à 15:59, par Arthur
63. Le dimanche 25 septembre 2011 à 15:44, par Giorgio
64. Le samedi 15 octobre 2011 à 15:25, par shift
65. Le mardi 18 octobre 2011 à 10:51, par Plopi
66. Le mardi 08 novembre 2011 à 14:26, par Ampoule
67. Le mercredi 16 novembre 2011 à 22:04, par Jeremy Hurst
68. Le vendredi 30 décembre 2011 à 16:22, par ph68
69. Le mardi 07 février 2012 à 15:25, par Martain
70. Le lundi 20 février 2012 à 02:35, par Tiger
71. Le lundi 04 juin 2012 à 13:56, par Pierrot574
72. Le lundi 04 juin 2012 à 15:28, par psykokwak
73. Le lundi 04 juin 2012 à 23:28, par 74Droneur47
74. Le mardi 05 juin 2012 à 00:36, par psykokwak
75. Le samedi 09 juin 2012 à 19:08, par Pierrot574
76. Le dimanche 10 juin 2012 à 12:04, par psykokwak
77. Le lundi 11 juin 2012 à 12:07, par Wolf
78. Le lundi 11 juin 2012 à 23:09, par Wolf
79. Le mardi 27 novembre 2012 à 21:10, par NecrOx95 [FR]
80. Le mercredi 26 décembre 2012 à 16:56, par Anchor
81. Le jeudi 07 février 2013 à 18:24, par Romain
Ajouter un commentaire