UNIVERSITE NICE SOPHIA-ANTIPOLIS  04/06/2012MASTER         PROJET D’ANNEE : DEVELOPPEMENT POUR LE1 MIAGE        ROBOT ASPI...
RésuméCe rapport présente le projet d’année de quatre étudiants en MIAGE (Méthodes InformatiquesAppliquées à la Gestion de...
Table des matières1     Introduction ........................................................................................
1 IntroductionLa robotique est lensemble des techniques permettant la conception, la réalisation de machinesautomatiques o...
2 L’environnement de travail : Le Pôle SIS (Signal, Images et  Systèmes)Notre projet prenait place à Sophia Antipolis, au ...
3 Descriptifs des éléments techniques3.1 IRobot et RoombaRoomba est une gamme de robots aspirateurs automatiques et       ...
3.2 KinectLe dispositif de capture d’images surmontant le Turtlebot est à la base un accessoire de jeux vidéo :le Kinect, ...
3.3 Configuration « Turtlebot » du RoombaAfin d’augmenter encore les capacités sensitives du Roomba, il est possible de co...
3.4 Robot Operating System (ROS)Le principe de fonctionnement de ROS est le suivant : chaque programme ROS est appelé node...
4 Élaboration du cahier des chargesDe par sa nature singulière, à mi-chemin entre l’électronique et l’informatique et notr...
4.1 Télésurveillance et téléopération du robotL’objectif principal défini par le cahier des charges est la capacité pour u...
5 Calendrier prévisionnelAfin de planifier au mieux la réalisation du projet, nous avons décidé d’un découpage du travail ...
Le calendrier prévisionnel est le suivant :Fig. 7 Planning prévisionnel     13                                   DEVELOPPE...
6 Travail réalisé6.1 Approche du projetCe projet se démarque par le fait qu’il ne s’agit pas d’un projet purement informat...
6.2 Choix technologiques6.2.1   Choix du framework de développementAfin de faciliter le développement et de nous extraire ...
Afin de pouvoir décider quel environnement adopter, nous avons établis des critères ainsi et avonsévalués chacun des frame...
6.2.2   Choix du langage principal de développementROS ne nous impose pas un langage de développement en particulier (il e...
6.3 Installation et configuration du Turtlebot6.3.1   Installation et configuration matérielleComme vu précédemment, le Tu...
Malheureusement il s’est avéré impossible de faire fonctionner le Kinect dans un système virtualisé,son driver « open ni »...
6.3.2.3 Configuration réseauUne fois résolus les problèmes de communication USB avec le Turtlebot, un autre point délicat ...
6.3.2.4 Scripts de configurationUne fois les communications USB et réseau établies, une question clé fut la configuration ...
6.4 Apprentissage de l’API et Développement6.4.1   Les différentes bibliothèques utiliséesPour la capture des images du Ki...
6.4.2     L’implémentationDans GTK+, tout élément affiché à l’écran est widget. En effet, une fenêtre (GtkWindow), unconte...
L’enregistrement des images du Kinect est géré avec openCV, notamment grâce à la fonctioncvSaveImage. Cet enregistrement e...
6.6 Réalisation des objectifs6.6.1    Illustration des résultats                                                          ...
Il est également possible de récupérer                                                                    le flux monochro...
6.6.2     Fonctionnalités réaliséesPar rapport au cahier des charges original, le tableau ci-dessous montre quelles ont ét...
7 Calendrier effectifLe calendrier de réalisation effectif est différent du calendrier prévisionnel. Du retard a été pris ...
-              Janvier      Février         Mars                 Avril Mai                S3 S4 S1 S2 S3 S4 S1 S2 S3 S4 S1...
7.1 Cause des retardsLes retards constatés par rapport au calendrier initial et les différences dans le déroulement duproj...
7.2 Problèmes rencontrésNous avons rencontré plusieurs problèmes lors du déroulement du projet :-   Le sujet de notre proj...
8 ConclusionNous avons étés très enthousiasmés par ce projet de robotique qui nous a permis de lierinformatique et monde r...
9 Table des illustrationsFig. 1 Le robot aspirateur Roomba ..................................................................
10 Annexes     Cahier des charges     Cookbook pour le développement  34                             DEVELOPPEMENT POUR ...
Upcoming SlideShare
Loading in...5
×

Rapport projet UniceBot

1,332

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,332
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
43
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Rapport projet UniceBot

  1. 1. UNIVERSITE NICE SOPHIA-ANTIPOLIS 04/06/2012MASTER PROJET D’ANNEE : DEVELOPPEMENT POUR LE1 MIAGE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » Rapport | Antoine Boulinguez, Régis Canioncq, Shyn-Yuan Cheng, Sébastien Lagneau
  2. 2. RésuméCe rapport présente le projet d’année de quatre étudiants en MIAGE (Méthodes InformatiquesAppliquées à la Gestion des Entreprises) à Nice, dans le cadre de leur second semestre de Master 1 :Antoine BOULINGUEZ, Régis CANIONCQ, Shyn-Yuan CHENG et Sébastien LAGNEAU.Le présent document est la synthèse technique et méthodologie du projet d’année d’AntoineBoulinguez, Régis Canioncq, Shyn-Yuan Cheng et Sébastien Lagneau, dans le cadre du Master 1MIAGE - Université de Nice Sophia Antipolis, année 2011/2012.Ce projet informatique a été l’occasion d’aborder un domaine faisant la jonction entre l’informatiqueet l’électronique : la robotique. C’est dans ce domaine que nous avons notemment été amené àdévelopper une application permettant le pilotage à distance d’un robot.Le robot en question se nomme Turtlebot et est composé d’un robot-aspirateur (iRobot Roomba) etd’un dispositif de capture audio et vidéo (Microsoft Kinect). Les possibilités qu’offrent les deuxappareils composant le sujet du présent projet d’année sont multiples et les technologies logicielleset matérielles permettant de travailler avec sont difficiles à maitriser. Les buts du projet sont donc demaitriser aussi bien l’aspect matériel que l’aspect logiciel pour proposer une application permettantde manipuler le robot à distance.La particularité de ce projet est d’avoir lieu à Sophia Antipolis, dans les locaux du laboratoire I3S,sous la direction de M. Andrew COMPORT et de M. Gilles MENEZ, le Turtlebot ne pouvant pas quitterce laboratoire. 2 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  3. 3. Table des matières1 Introduction ..................................................................................................................................... 42 L’environnement de travail : Le Pôle SIS (Signal, Images et Systèmes) .......................................... 53 Descriptifs des éléments techniques ............................................................................................... 6 3.1 IRobot et Roomba ................................................................................................................... 6 3.2 Kinect ....................................................................................................................................... 7 3.3 Configuration « Turtlebot » du Roomba ................................................................................. 8 3.4 Robot Operating System (ROS) ............................................................................................... 94 Élaboration du cahier des charges ................................................................................................ 10 4.1 Télésurveillance et téléopération du robot........................................................................... 115 Calendrier prévisionnel ................................................................................................................. 126 Travail réalisé................................................................................................................................. 14 6.1 Approche du projet ............................................................................................................... 14 6.2 Choix technologiques ............................................................................................................ 15 6.2.1 Choix du framework de développement....................................................................... 15 6.2.2 Choix du langage principal de développement ............................................................. 17 6.3 Installation et configuration du Turtlebot ............................................................................. 18 6.3.1 Installation et configuration matérielle......................................................................... 18 6.3.2 Installation et configuration logicielle ........................................................................... 18 6.4 Apprentissage de l’API et Développement............................................................................ 22 6.4.1 Les différentes bibliothèques utilisées .......................................................................... 22 6.4.2 L’implémentation .......................................................................................................... 23 6.5 Tests et optimisation ............................................................................................................. 24 6.6 Réalisation des objectifs ........................................................................................................ 25 6.6.1 Illustration des résultats ................................................................................................ 25 6.6.2 Fonctionnalités réalisées ............................................................................................... 277 Calendrier effectif.......................................................................................................................... 28 7.1 Cause des retards .................................................................................................................. 30 7.2 Problèmes rencontrés ........................................................................................................... 318 Conclusion ..................................................................................................................................... 329 Table des illustrations.................................................................................................................... 3310 Annexes ..................................................................................................................................... 34 3 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  4. 4. 1 IntroductionLa robotique est lensemble des techniques permettant la conception, la réalisation de machinesautomatiques ou de robots. Il s’agit pour le robot d’effectuer des tâches prédéterminées parl’homme, de manière autonome, une fois les directives connues (lave-linge, lave- vaisselle, robot-aspirateur, etc.).Les avancées dans ce domaine ont permis d’assister à la création de robots pouvant imiter la marchehumaine, pouvant guider les hommes pour diverses informations (robots-hôtesses ou instituteurs),ou encore pouvant servir d’animal de compagnie.L’acquisition d’images et de séquences d’images remonte à des décennies, voire des siècles. Lestechnologies permettant ces acquisitions ont changé, évolué au fil du temps, ayant pourconséquence d’améliorer la qualité des images saisies.Jusqu’à il y a quelques années, la question de l’interprétation des images saisies trouvait desréponses encore très floues. Il s’agissait, soit d’images saisies par un dispositif A et traitées plus tardpar un dispositif B (sous l’assistance de l’homme), soit traitées par l’homme lui-même. Mais n’étaitpas encore étudiée la possibilité d’analyser les images, ou séquences d’images saisies par undispositif, indépendamment de l’homme.Le fait de pouvoir saisir des images ou séquences d’images, et ensuite de pouvoir les analyser pourpouvoir en tirer des informations pouvant revêtir un intérêt certain ou prendre des décisions, est unedes définitions possibles de la vision.On peut noter, dans de nombreux cas de figure, qu’il n’est pas impossible d’établir un lien entre larobotique et la vision (notamment dans le cas de robots pouvant imiter la marche humaine, de tellesorte qu’ils puissent percevoir d’éventuels obstacles et agir en conséquence). La vision pouvant êtreune aide précieuse pour certains types de robots, étudier la possibilité de lier robotique et visionpeut constituer une avancée technologique intéressante.Pour notre projet, il s’agit de permettre à un robot aspirateur (Roomba) de voir ce qui l’entoure grâceà un dispositif de capture vidéo comme le Kinect. 4 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  5. 5. 2 L’environnement de travail : Le Pôle SIS (Signal, Images et Systèmes)Notre projet prenait place à Sophia Antipolis, au sein du laboratoire de recherche I3S, (laboratoired’Informatique, Signaux et Systèmes de Sophia-Antipolis). Ce laboratoire est organise en quatrepôles : - COMRED : COMmunications, Réseaux systèmes Embarqués et Distribués ; - GLC : Génie du Logiciel et de la Connaissance ; - MDSC : Modèles Discrets pour les Systèmes Complexes ; - SIS : Signal, Images, Systèmes.Notre projet concerne le dernier pôle, dont le domaine de connaissances s’étend sur trois axes : lessignaux, l’imagerie et les systèmes. C’est sur le troisième axe qui nous intéresse sur ce projet, celui-cise penchant sur trois types d’activités : - Condor – Drones ; - SIM : System Identification and Modelling (Identification de systems et conception) ; - ANM : Autonomous Navigation and Mapping (Navigation Autonome et Cartographie).Notre projet porte sur la troisième activité, celle-ci ayant pour contributeurs, par ordrealphabétique : - M. COMPORT Andrew ; - M. MENEZ Gilles ; - M. THIERRY Eric ; - Mme TORRES DOLORES RENDAS Maria João.Les maitres d’ouvrage, ceux qui encadrent notre projet sont les deux premiers cités : M. COMPORT etM. MENEZ. 5 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  6. 6. 3 Descriptifs des éléments techniques3.1 IRobot et RoombaRoomba est une gamme de robots aspirateurs automatiques et Fig. 1 Le robot aspirateur Roombaautonomes commercialisée depuis 2002 par la société iRobot. Cettesociété technologique américaine, fondée en 1990, est spécialiséedans la conception et la vente de robots ménagers mais aussimilitaires.À ce jour, plus de 5 millions Roomba ont été vendus et de plusieursdéclinaisons et versions du Roomba ont été développées. Le Roombaest alimenté par une batterie rechargeable. Il peut être fourni avecune station daccueil à laquelle il est capable de revenir pour serecharger à la fin de son cycle de nettoyage.Depuis 2005, la société iRobot a choisi d’intégrer une interface physique et logicielle à leurs Roombapour que chacun puisse développer ses propres projets autour de la technologie iRobot. Cetteinterface nommée iRobot Roomba Serial Command Interface (ou Roomba SCI), est un protocolepermettant aux développeurs de piloter le robot via son port série.SCI inclut des commandes capables de contrôler toutes les capacités motrices et comportementalesdu robot (moteurs, aspirations, haut parleurs, LED, etc.), mais aussi de capturer les donnéescollectées par les capteurs positionnés sur le robot. Grâce à SCI, les utilisateurs peuvent donc ajouterdes fonctionnalités au comportement de base du Roomba mais aussi créer de toute nouvellesapplications pour le robot.Un site internet recense diverses applications utilisant le robot Roomba pour d’autres usages que lenettoyage : http://hackingroomba.com/. On y retrouve par exemple des applications utilisantRoomba comme un instrument de musique. 6 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  7. 7. 3.2 KinectLe dispositif de capture d’images surmontant le Turtlebot est à la base un accessoire de jeux vidéo :le Kinect, développé par Microsoft. À l’origine connu sous le nom de « Project Natal », cet accessoirepermet à la base aux possesseurs d’une console Microsoft Xbox360 d’interagir avec leur console, viala voix (micro) ou via divers mouvements (caméras de détection de profondeur, infrarouge etcouleur).Fig. 2 La camera Microsoft KinectUn pilote open-source du dispositif Kinect a vu le jour en 2010, malgré l’avertissement de Microsoft,qui ne tolérait pas la moindre modification de son produit commercialisé avec des techniquesempêchant la rétro-ingénierie. Ce pilote a ensuite été porté sur ROS (Robot Operating System), cequi permet aux robots pouvant être pilotés avec (dont le Turtlebot) de pouvoir bénéficier de lavision.Fig. 3 Pattern du laser infrarouge Kinect 7 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  8. 8. 3.3 Configuration « Turtlebot » du RoombaAfin d’augmenter encore les capacités sensitives du Roomba, il est possible de construire une versionaméliorée communément appelée Turtlebot. Cette dénomination décrit la combinaison d’unRoomba avec un périphérique Microsoft Kinect. C’est un Roomba dans sa configuration Turtlebotque nous utiliserons pour le projet.Le Turtlebot est conçu par Willow Garage, un laboratoire de recherche en robotique, qui auradéveloppé entre autres ROS (Robot Operating System) et OpenCV (bibliothèque graphiqueinitialement développée par Intel) qui sont deux applications open source, et qui aura égalementconçu des robots comme PR2 (robot doté de deux bras) ou Texai (destiné à la visio-conférence). A iRobot Roomba 521. B Périphérique de capture vidéo 3D Microsoft Kinect. C Ordinateur embarqué dédié au contrôle du robot. D Structure du Turtlebot. Batterie dédiée à l’alimentation de la Kinect. Carte adaptateur Port Série/USB .Fig. 4 Vue densemble du Turtlebot 8 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  9. 9. 3.4 Robot Operating System (ROS)Le principe de fonctionnement de ROS est le suivant : chaque programme ROS est appelé node etpeut communiquer avec d’autres nodes en s’inscrivant à ce que l’on appelle des topics et enéchangeant des données à travers ce topic. Il est possible avec ROS, de savoir quels nodescommuniquent entre eux au travers de quels topics en utilisant un outil intégré dans le framework :le rxgraph. En voici un exemple ci-dessous :Fig. 5 Graphe des noeuds ROSLes ellipses représentent des nodes et les flèches, des topics. Dans cet exemple, nous pouvonsnotamment remarquer que le nœud teleop_turtle communique avec le nœud turtlesim au travers dutopic turtle1/command_velocity, le premier node permet de piloter un Turtlebot et le second est unutilitaire permettant de faire une simulation de pilotage d’un Turtlebot. On peut donc logiquementdéduire de ce graphe que le premier node envoie des données au second au travers du topic précité.Le développement d’applications et la téléopération du robot se fait au travers de deux versions duframework ROS : - Une version « netbook » à installer sur l’ordinateur embarqué, et qui permet de téléopérer le robot ;Une version « workstation » à installer sur d’autres ordinateurs, pour y développer des applications àtester sur le robot.Pour développer sous ROS, il est nécessaire d’utiliser un terminal pour y lancer ROS et ainsi utiliserles commandes terminal de ce framework (par exemple roscreate-pkg [package_name] [depend1][depend2] [depend3] pour créer un package ROS avec ses éventuelles dépendances). Il est ensuitepossible de développer sous un IDE (comme Eclipse ou Code Blocks), pour faciliter l’écriture du code,mais il faudra ensuite compiler « à la main » (c’est-à-dire, via le terminal, avec la commanderosmake) pour pouvoir créer les exécutables du ou des programmes que l’on développe.Il est ensuite possible, à partir des ordinateurs de développement, de tester les applicationsdéveloppées pour Turtlebot : ces ordinateurs sont connectés sur un réseau ad hoc, le même quel’ordinateur embarqué sur le robot, et communiquent avec ce dernier pour qu’il puisse téléopérer lerobot. 9 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  10. 10. 4 Élaboration du cahier des chargesDe par sa nature singulière, à mi-chemin entre l’électronique et l’informatique et notre manqued’expérience dans ce domaine, il a été difficile de déterminer des objectifs fonctionnels initiaux pourle projet. Le matériel support qui nous a été confié était inconnu, notamment pour les usages quipouvaient rentrer dans le cadre de notre projet. De plus, il fallait également découvrir et prendre enmain la plus part des outils et des technologies utiles au développement d’applications exploitant lescapacités motrices et sensorielles du robot.De plus, nous nous sommes rendu compte que l’éventail des possibilités offertes par le matériel étaittrès large. Beaucoup d’applications pouvaient être implémentées pour le Turtlebot, et il nous étaitdifficile de déterminer les objectifs que l’on pouvait fixer et l’application finale que l’on voulaitobtenir, car beaucoup d’applications étaient intéressantes à implémenter, le choix a donc étédifficile.La première étape dans la réalisation du cahier des charges a été de découvrir et de prendre en mainle robot. L’objectif premier à donc été d’être capable de connaitre le potentiel du matériel afind’élaborer des objectifs pour le CdC.La seconde étape était de se familiariser avec les outils de développement, qui nous permettaientd’utiliser le potentiel du matériel et de déterminer la faisabilité des objectifs fixés en premier lieu.Nous avons identifié plusieurs fonctions à implémenter dans la réalisation de notre projet, desfonctions principales et des fonctions complémentaires.Pour ce qui est des fonctions principales : - Mise en tension et hors tension du robot à distance ; - Pilotage du robot à distance ; - Affichages des images acquises et exploitation de celles-ci.Pour ce qui est des fonctions complémentaires : - Navigation autonome du robot ; - Retour à un point de départ sur ordre de l’utilisateur. 10 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  11. 11. 4.1 Télésurveillance et téléopération du robotL’objectif principal défini par le cahier des charges est la capacité pour un utilisateur de piloter lerobot à distance tout en observant ce que le robot voit grâce à la caméra 3D Kinect.Les trois fonctions de service principales pour cet objectif étaient les suivantes : - F1 : Pilotage du robot à distance (téléopération) - F2 : Affichages des informations capturées par le Kinect et exploitation de ces informations - F3 : Mise en marche/arrêt du robot à distanceLe diagramme ci-dessous décrit l’environnement global permettant la mise en œuvre desfonctionnalités citées.Fig. 6 Réseau du Turtlebot Ordinateur maître utilisé Internet pour piloter le robot à distance Transmission des commandes VPN Ordinateur esclave embarqué pour piloter le robotDans sa configuration Turtlebot, le Roomba est commandé par un ordinateur esclave embarqué sursa structure. Ce dernier reçoit les ordres de commande depuis un ordinateur maître distant. Tousdeux sont connectés à internet par Wifi et sont reliés ensemble via un réseau privé virtuel (VPN). 11 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  12. 12. 5 Calendrier prévisionnelAfin de planifier au mieux la réalisation du projet, nous avons décidé d’un découpage du travail en« work packages » comme suit :WP1 Recherche et développements - conduit par Régis - T1.1 Prise en main du robot, installation des environnements de développement - T1.2 Prise en main et étude du framework ROS - T1.3 Prise en main et étude du Kinect - T1.4 Mise en projection des connaissances et des capacités acquises afin d’identifier les développements futurs.WP2 Conception et implémentation des applications identifiées - conduit par ShynPour chaque application - T2.1 Analyse et conception du système - T2.2 Implémentation - T2.3 Tests (tests "unitaires" et sur simulateur)WP3 Mise en production et tests - conduit par Sébastien - T3.1 Élaboration des scénarios de test grandeur nature (en fonction des cas d’utilisation, avec critères de réussite) - T3.2 Mise en production des applications sur le robot - T3.3 Gestion des tests grandeur nature des applications - T3.4 Rédaction de rapport dexécution des tests (cas d’utilisation, description de l’environnement lors des problèmes, comment reproduire le problème, diagnostique envisagé, etc.).WP4 Gestion de projet et livrables - conduit par Antoine - T4.1 Gestion de l’équipe et suivi de projet - T4.2 Rédaction des documents techniques - T4.3 Rédaction des documents liés à la gestion de projet - T4.4 Mise à jours des outils utilisés pour la gestion de projet (google project, agenda, etc.) 12 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  13. 13. Le calendrier prévisionnel est le suivant :Fig. 7 Planning prévisionnel 13 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  14. 14. 6 Travail réalisé6.1 Approche du projetCe projet se démarque par le fait qu’il ne s’agit pas d’un projet purement informatique. Il s’agissaitégalement d’un projet électronique et robotique, puisque le sujet de notre projet est un robotaspirateur surmonté d’un dispositif de vision. Ce projet était également une sorte de « sujet libre »dans le sens où aucune application précise ne nous était demandée au départ. C’était donc à nousd’imaginer et d’implémenter les fonctionnalités qu’on allait donner au Turtlebot au travers de notreapplication, tout en utilisant au mieux les capacités du Turtlebot dans son ensemble (Roomba, Kinectet les possibles interactions entre eux).Ce projet touchait donc à plusieurs secteurs, et les manières d’exploiter le sujet de notre projetétaient très nombreuses, ce qui rendait notre projet particulièrement singulier.Il aura donc fallu dans un premier temps apprivoiser le Turtlebot, faire des tests, puis essayer de lepiloter par ordinateur. Il s’agissait là de faire l’état des lieux des capacités et des fonctionnalitésnatives du Roomba afin d’être capable d’identifier les développements possibles.Dans un second temps, il fallait se familiariser avec les frameworks qui permettaient de développerdes applications sur le Turtlebot. On en a identifié deux : PyRoomba, et ROS, qui nous était indiquéau départ. Comme notre choix pour ce projet s’est porté sur le second, il nous aura fallu apprendre àmaitriser l’environnement qu’il offre (ce choix avait néanmoins ses contraintes, comme le fait qu’ilnous était imposé de travailler sous Linux, ou encore le fait qu’il faille choisir le langage C++, qui bienqu’il ne nous était pas imposé, était recommandé pour pouvoir mieux traiter les flux de donnéesqu’envoie le Kinect).Enfin, il aura fallu imaginer, puis implémenter une application pour le Turtlebot. Cette applicationconsiste dans un premier temps à proposer une interface de commande complète pour piloter àdistance ce robot avec la possibilité d’enregistrer la séquence d’images captée par le Kinect. Dans unsecond temps, des pistes ont été explorées pour exploiter les séquences d’images enregistrées (parexemple, la génération d’un itinéraire, puis reproduction de celui-ci grâce à la vision). 14 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  15. 15. 6.2 Choix technologiques6.2.1 Choix du framework de développementAfin de faciliter le développement et de nous extraire du protocole série bas niveau, nous avonsidentifié deux « frameworks » encapsulant l’interface SCI nous permettant d’interagir avec le robot :PyRoomba et Robot Operating System (ROS).  PyRoomba :PyRoomba est un ensemble de modules Python développés spécialement pour contrôler les Roombad’iRobot. Ces modules pythons sont capables d’exploiter toutes les fonctionnalités motrices etsensitives du robot.  ROS :ROS quant à lui est un Framework plus global se comportant comme un système d’exploitation, ils’agit en fait d’un système d’exploitation distribué sur plusieurs machines. Il se charge del’abstraction du matériel physique et fournit un ensemble d’outils et de bibliothèques utiles audéveloppement d’applications robotiques. ROS est compatible avec un grand nombre de robots estnotamment avec le Roomba et sa configuration Turtlebot. ROS est la plateforme officiellement« fournie » avec un Turtlebot. La majorité des bibliothèques sont développées en Python ou en C++.  Visual studio - .net :Il s’agit du bien célèbre framework de développement de Microsoft ainsi que son IDE. Depuis Mars2012 la bibliothèque kinect officielle sous .net est disponible aux développeurs.Il aura donc fallu donc faire un choix en ce qui concerne le framework de développement. Notrechoix s’est porté sur ROS, car celui-ci est complet, même s’il est contraignant à utiliser. ROS n’estdisponible en version stable que sur Ubuntu et ses distributions « sœurs » (nous avons choisiXubuntu, pour sa légèreté et sa simplicité d’utilisation). 15 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  16. 16. Afin de pouvoir décider quel environnement adopter, nous avons établis des critères ainsi et avonsévalués chacun des framework. Il en résulte la matrice suivante :Matrice des critères de prise de décision du framework PyRoomba ROS Visual studioSystèmeInstallation / configuration +++ --- ++Compatibilité des drivers - + +Support réseau + +++ -Puissance de traitement ++ +++ --« Embarcabilité » ++ +++ ---Gestion de plusieurs robots - ++ --ProgrammationDiversité des langages de programmation - ++ ++API existante Kinect --- +++ ++API existante roomba ++ +++ ---Tutoriels et exemples - + +Complexité + --- ++Support au développement --- ++ ++EvolutivitéPossibilité d’évolution et potentiel - +++ +Effet d’expérience, notoriété en robotique -- +++ -Développements spécifiques au Turtlebot - +++ -Compatible avec l’environnement de + ++ ---l’équipe (OS, drivers, langage)Evaluation (somme des + et des -) -11 29 -2C’est donc ROS qui a été choisi pour le développement de notre application. 16 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  17. 17. 6.2.2 Choix du langage principal de développementROS ne nous impose pas un langage de développement en particulier (il est possible de coder enpython, en C++ et en Java, grâce à un portage expérimental), cependant, comme nous utilisonségalement un dispositif d’acquisition d’images, le Kinect, la meilleure option était le langage C++,pour optimiser le traitement des flux de données envoyés par celle-ci (le C++ étant un langage trèspuissant, une évolution du langage C rétro compatible avec celui-ci, mais aussi difficile à maitriser àcause de sa permissivité, notamment au niveau de la gestion mémoire).Nous utilisons également des scripts en BASH (Bourne Again SHell) pour configurer les ordinateurs dedéveloppement et de pilotage du robot.La matrice qui nous a permis de décider quel langage de programmation nous allions utiliser est lasuivante : Python C/C++ JavaComplexité ++ -- +++Puissance de traitement + +++ -Richesse de l’API + +++ -Support de l’API - ++ -Exemples, tutoriels - + -Configuration / compilation + - --Expérience + + ---Résultat 4 7 -6C’est donc le C/C++ qui a été choisi pour développer notre application. 17 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  18. 18. 6.3 Installation et configuration du Turtlebot6.3.1 Installation et configuration matérielleComme vu précédemment, le Turtlebot est un assemblage de: - Un dispositif de vision Microsoft Kinect ; - Un robot aspirateur Roomba ; - Une plaque électronique de connexion au Roomba qui fournit une interface USB ; - Un ensemble d’armatures tubulaires et de plateaux supportant le Kinect et l’ordinateur.Il peut être commandé chez Willow Garage, une entreprise américaine qui développe du matériel etdes logiciels open sources pour la robotique. Il est livré en pièces détachées et doit être assemblé à laréception. Au démarrage du projet, l’I3S nous a fourni un robot déjà monté et théoriquement prêt àêtre interfacé avec un ordinateur.Il nous a cependant été nécessaire d’apporter, avec l’aide de l’équipe I3S une modification : l’ajoutd’une batterie 12v pour permettre une alimentation autonome du Kinect, qui était trop gourmandpour se satisfaire de la batterie d’origine du Turtlebot.Le Turtlebot s’interface à un ordinateur via deux interfaces fournies : - Un port USB relié au Kinect (camera) ; - Un port USB relié au Roomba (base aspirateur motrice).Nous aborderons la découverte de certains problèmes matériels qui a eu lieu pendant laconfiguration logicielle comme décrit ci-après.6.3.2 Installation et configuration logicielleLe choix de la plateforme de développement ayant été fait, une première étape indispensable étaitl’installation et configuration des systèmes d’exploitation supportés par ROS.6.3.2.1 Installation du système d’exploitation et de ROSLe système pour lequel les binaires ROS ont été précompilés est Linux Ubuntu (et ses déclinaisonsKubuntu et Xubuntu).Nous disposions de deux laptops fournis par l’I3S sous Ubuntu ainsi que de nos laptops personnelsfonctionnant sous Windows. Afin de pouvoir travailler efficacement en dehors des locaux de l’I3S,nous avons donc entrepris, sur nos ordinateurs personnels, l’installation d’Ubuntu via une machinevirtuelle (Virtual Box). 18 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  19. 19. Malheureusement il s’est avéré impossible de faire fonctionner le Kinect dans un système virtualisé,son driver « open ni » ne le supportant pas.C’est donc en dual-boot que nous avons dû installer Ubuntu sur nos PC personnels.6.3.2.2 Communication USB avec le TurtlebotNous avons dû également faire face à un problème important : malgré le suivi à la lettre desinstructions d’installations de ROS pour Turtlebot, il nous a été impossible pendant une longuepériode de faire fonctionner l’interface USB relié au Roomba du Turtlebot dont la vocation est lacommande de ses roues et moteurs.Dans un premier temps, après un examen matériel attentif, nous avons découvert un défaut desoudure de ce port (spécifique type DIN/PS2 modifié). Nous avons donc refait la soudure.Malgré ce défaut écarté, nous échouions toujours dans l’établissement d’une connexion avec lesfonctions motrices du Turtlebot. Nous avons alors examiné d’autres moyens de communicationspouvant confirmer le bon état du port en excluant un éventuel problème d’installation/configurationde ROS.L’utilisation du terminal putty a pu nous montrer que le port répondait positivement àl’établissement d’une connexion. Puis c’est en python avec Pyroomba (alternative à ROS) que nousavons finalement réussi à affirmer que le port fonctionnait bien. Nous avons, à cette occasion, étudiéles commandes motrices au niveau le plus bas, celui de la transmission d’octets en USB.Alors que nous allions renoncer à l’utilisation de ROS, système pourtant officiellement préconisé parl’assembleur du Turtlebot. Nous avons pu, par expérimentation et analyse du driver de ROS (écrit enpython) déterminer que c’est celui-ci qui était à l’origine du problème.La solution était donc de modifier ce driver pour brider la connexion à 19200 bauds au lieu de 57600bauds, vitesse normalement supportée par le Turtlebot. La connexion à 19200 bauds fonctionnedonc bien sous ROS avec le Turtlebot, sans entrainer de désagréments particuliers.Il peut paraitre étonnant que le système ROS préconisé par l’assembleur du Turtlebot ne marche passans modification. Notre hypothèse est celle-ci : il existe différentes déclinaisons du Turtlebot, lemodèle de Roomba embarqué peut différer en fonction de sa date d’achat, voir même du paysd’achat (en effet notre version a été achetée chez un assembleur européen et non pas chezl’assembleur officiel US Willow Garage). 19 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  20. 20. 6.3.2.3 Configuration réseauUne fois résolus les problèmes de communication USB avec le Turtlebot, un autre point délicat étaitla configuration réseau des ordinateurs.Basiquement le Turtlebot sous ROS requiert les ordinateurs suivants pour fonctionner : - Un NETBOOK embarqué, disposant d’une autonomie suffisante et d’un poids et encombrement réduits. Cet ordinateur embarqué a pour rôle la capture et la retransmissions des images du Kinect et des instructions motrices du Roomba ; - Un ordinateur dénommé « workstation », distant du Turtlebot et ne nécessitant pas d’être mobile ou autonome. Son rôle est de télécommander le Turtlebot et effectuer un éventuel traitement des données reçues ; - Les deux machines tournant sous linux (Ubuntu) et exécutant le système ROS se doivent d’être en réseau.Etant donné l’encombrement important des machines fournies par l’I3S (trop lourdes et trop grossesou batterie HS) le choix a été fait d’utiliser un netbook appartenant à un des membres de notreéquipe projet pour l’embarquer sur le Turtlebot. On notera cependant la fourniture par l’I3S d’unMacBook Air qui aurait pu convenir si l’installation de ROS (à compiler soit même sur mac) étaitfacilement réalisable dans le temps imparti (car expérimentale).Malgré la présence de nombreux réseaux dans les locaux de l’I3S, il s’est avéré difficile de lesexploiter. Le tableau ci-dessous résume les difficultés rencontrées. Réseau Exploitabilité RaisonWifi Eduroam Aucune Déconnexions intempestivesWifi Unice-hot spot Aucune Ports bloquésWifi I3S Partielle VPN obligatoire Difficulté d’obtention des identifiants Débit irrégulierFilaire I3S Aucune Blocage des adresses mac non référencéesDans un premier temps, nous avons donc optés pour l’établissement d’un réseau ad-hoc entre lamachine embarquée « Turtlebot » et la machine distante « workstation ». L’établissement d’un telréseau dépend fortement des systèmes d’exploitation utilisés et il n’était pas rare de devoir passerplus d’une heure pour y parvenir. Cela ne fut pas sans conséquences sur notre productivité.Nous avons donc finalement pu nous procurer un routeur wifi indépendant afin de réaliser uneconnexion réseau fiable et enfin pouvoir expérimenter nos développements logiciels. 20 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  21. 21. 6.3.2.4 Scripts de configurationUne fois les communications USB et réseau établies, une question clé fut la configuration desvariables d’environnement ROS (différentes sur chacune des machines en fonction de laconfiguration réseau) ainsi que l’exécution dans un ordre précis et avec un timing efficace de tous lesprocessus (dénommés « nodes » dans ROS) nécessaires au bon fonctionnement des équipements.Ces configurations et exécutions étant assez longues et rébarbatives, nous avons créés des scriptsshell linux (bash) automatisant ces tâches. Ces scripts sont garnis d’une interface utilisateur (en modetexte) facilitant grandement leur utilisation. Il est à noter qu’ils incorporent le patch du driver ROSainsi que la résolution de nombreux problèmes rencontrés durant ce projet et non documentés parle fabriquant. Leur mise au point a été continue durant toute la durée du projet.Ils garantissent une bonne initialisation des machines embarquée et distante permettant ainsi de seconcentrer sur les problèmes de développement d’application. 21 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  22. 22. 6.4 Apprentissage de l’API et Développement6.4.1 Les différentes bibliothèques utiliséesPour la capture des images du Kinect ainsi que la commande des déplacements du Roomba, ROSfournit les drivers nécessaires, transmet les données capturées par le Kinect à notre programme etachemine nos commandes de déplacement vers le Roomba.Pour le calcul (gestion des différents encodages) et l’affichage image par image de la vidéo en tempsréel capturée par le Kinect et transmis par ROS, nous utilisons la bibliothèque graphique OpenCV.Spécialisée dans la lecture, l’écriture et le traitement d’images et de vidéos, cette bibliothèque nepropose cependant pas la possibilité de faire une « belle » interface graphique complète avecnotamment une barre d’outils et un menu.C’est pourquoi, il nous fallait une autre API pour créer une fenêtre avancée dans laquelle envelopperla vidéo du Kinect traitée par OpenCV. Nous avions donc eu le choix entre deux API : Qt ou GTK+.Nous avons donc testé les deux API au travers de deux programmes qui affichaient la vidéo duKinect. Il se trouvait alors que GTK+ était le plus simple à utiliser. En effet, le nombre de lignes étaitbeaucoup plus conséquent pour faire la même chose dans Qt. C’est donc GTK+ que nous avons choisipour l’affichage de la fenêtre de notre application.Enfin, il nous fallait faire parler le robot au travers des haut-parleurs de l’ordinateur embarqué.L’utilisateur devait pouvoir écrire un message depuis le workstation, choisir un son à jouer, et lerobot se chargeait de le dire ou de le jouer. Pour cela, nous avons décidé de faire un nœud ROSdifférent de notre programme (ou nœud) principal, utilisant le stack ROS audio_common. Ce stackpropose plusieurs packages pour la gestion de la capture et de la sortie audio. Audio_play est lenœud qui souscrit au topic « robotsound », il est lancé sur l’ordinateur embarqué par le Turtlebot.Tandis que notre nœud « Unicebot_Talker » publie les messages contenant les données des sons àjouer dans ce topic. Cette publication s’effectue lorsque l’utilisateur choisit un son à jouer ou écritune phrase à faire dire à notre robot. Notons que l’interface pour l’écriture des phrases et le choixdes sons prédéfinis est différente de celle de notre nœud principal (sous GTK). En effet, cetteinterface est le terminal de Linux. 22 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  23. 23. 6.4.2 L’implémentationDans GTK+, tout élément affiché à l’écran est widget. En effet, une fenêtre (GtkWindow), unconteneur (GtkHBox, GtkVBox, GtkLayout etc.), une barre d’outils (GtkToobar), etc. sont deswidgets. Ainsi, ce sont tous des objets GtkWidget par relation d’héritage.La gestion de l’affichage est gérée par GTK+ dans une boucle indépendante dédiée. Dans notre cascette gestion s’effectue sur un unique thread différent de celui qui gère les traitements de notreprogramme. En effet, la fonction GtK_Main() permet de lancer cette boucle et donc l’affichage de lafenêtre. De plus, cette boucle émet et reçoit des « signaux » (évènements) par rapport à nos widgets(click de souris, appuie sur un bouton, la fenêtre perd le focus, la fenêtre se ferme etc.). Letraitement de ces signaux s’effectue dans des callbacks et ce n’est qu’après l’exécution de cescallback que le contenu des widgets GTK+ est rafraîchi.Ceci a été une source de difficultés car nous devions modifier le contenu des widgets dans la callbackd’un évènement ROS (émis pour chaque image que le Kinect génère). En effet, il a fallu trouver unmoyen de forcer le rafraîchissement de l’affichage des widgets que nous modifions. Ce moyen est deforcer l’itération de la boucle principale de GTK+.Concernant l’affichage en temps réel des images émises par le Kinect, nous nous abonnonsinitialement à un topic ROS « /camera/rgb/image_color » permettant ainsi de recevoir les donnéesdu Kinect. Ainsi pour chaque image reçue, une callback est appelée. Dans cette callback, les donnéessont initialement traitées avec OpenCV, en faisant conversions nécessaires selon l’encodage del’image (Bayer, Flotant etc.). Ainsi nous obtenons une IplImage (objet OpenCV) dont nous devonsconvertir en GtkImage pour l’afficher. ROS OpenCV GTK+ Emission données Conversion AffichageFig. 8 Pipeline de rendu du flux KinectVoici la hiérarchie des widgets GTK+ de notre application : Fig. 9 Rendu du flux kinectFig. 10 Hierarchie des widget GTK+ implémentés 23 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  24. 24. L’enregistrement des images du Kinect est géré avec openCV, notamment grâce à la fonctioncvSaveImage. Cet enregistrement est déclenché au clic sur un des boutons de la barre d’outils. UnGtKFileChooser permet de choisir le chemin d’enregistrement.Pour le contrôle du Roomba à la souris, nous utilisons les évènements GTK+ « motion-notify-event »,« button-press-event » et « button-release-event» qui sont émis par la fenêtre. Ainsi dans le callback,selon la position de la souris dans la fenêtre, nous publions un message sur le topic ROS« turtle1/command_velocity » avec les informations d’angle et de vitesse de déplacement. Cecipermet ainsi de commander le déplacement du robot. De même, nous capturons les évènementsclaviers de la fenêtre GTK+ pour gérer les commandes claviers de déplacement du robot.Enfin, la flèche indiquant la direction en cours du Roomba est dessinée grâce à OpenCV.6.5 Tests et optimisationAu fur et à mesure de notre avancée dans le développement, nous avons effectué divers tests afin des’assurer du bon fonctionnement de notre programme.Notre protocole de test est le suivant : Tout d’abord, nous testons en local (seulement la machineTurtlebot), puis nous testons avec la machine Workstation connectée en VPN à la machine Turtlebotet enfin, si tout se passe bien, nous embarquons le PC Turtlebot et faisons sortir le robot de la sallede travail pour effectuer une plus grande distance.Le premier bug pour lequel nous avions eu des problèmes était une fuite mémoire lors l’affichage desimages du Kinect sous GTK+. Il a fallu comprendre la gestion mémoire d’OpenCV (cvRelease après uncvCreate) pour résoudre ce problème.Les autres problèmes majeurs étaient le manque de réactivité du contrôle des déplacements durobot, ainsi que le nombre d’image par seconde reçus du Kinect à distance très faible. Cela induit uneimpossibilité de contrôle à distance le robot. Pour régler le problème de contrôle des déplacements,nous avons rajouté un timer ROS permettant de republier l’état en cours (angle et vitesse dedéplacement) toutes les dixièmes de secondes.Concernant le problème de fluidité de la vidéo du Kinect lorsque l’on est en réseau VPN, nous avonsdécouvert que le package ROS « image_transport » possédait un plugin« compressed_image_transport » qui pouvait intercepter les images brutes du Kinect depuis untopic ROS, les compresser au format jpeg et ensuite les republier dans le même topic ROS. Pourl’utiliser, il y avait deux choses à faire. D’une part, sur le Turtlebot, demander à ROS de compresserles images reçues et de les republier, grâce à la commande : « rosrun image_transport republishcompressed in:=/camera/rgb/image_color _image_transport:=compressed rawout:=/camera/rgb/image_color ». D’autre part, sur le workstation, il fallait indiquer dans lesparamètres d’appel de la fonction subscribe que nous recevons des images compressées. 24 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  25. 25. 6.6 Réalisation des objectifs6.6.1 Illustration des résultats Ci-contre l’interface principale du logiciel réalisé et exécuté sur une machine distante (non embarquée) pour le téléguidage du Turtlebot. Un des flux d’images transmis par le Kinect est affiché en temps réel, après conversion, sur l’interface GTK. Ici c’est le flux couleur qui est récupéré. C’est grâce à la souris ou au clavier, on peut diriger le Turtlebot via l’interface et ainsi lui faire explorer son espace de navigation.Fig. 11 Interface du Turtlebot en mouvement avec flux couleurLa flèche verte au centre (ci-dessus) estl’illustration du vecteur de déplacementdu Turtlebot.Sa taille est fonction de la vitesse et sonorientation correspond à celle duTurtlebot. En cas d’arrêt c’est un cerclerouge qui est affiché (ci-contre). Fig. 12 Interface du Turtlebot à larret 25 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  26. 26. Il est également possible de récupérer le flux monochrome du Kinect ainsi que le flux illustrant les données de profondeur.Fig. 13 interface avec flux monochromeL’enregistrement des flux transmisest possible, soit en mode image parimage comme le montre le dossierreprésenté ci-contre, soit en modevidéo.Ces flux peuvent ainsi être stockéspour une utilisation ultérieure ;éventuellement par les algorithmesde reconstitution 3D ou de guidageautonome développés par l’équipeI3S. Fig. 14 Flux sauvegardé image par image Parmis les développements réalisés, c’est le menu de configuration et demarrage du Turtlebot, développé en script shell linux (bash) qui est représenté ici.Fig. 15. Interface texte de configuration ROS 26 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  27. 27. 6.6.2 Fonctionnalités réaliséesPar rapport au cahier des charges original, le tableau ci-dessous montre quelles ont été lesfonctionnalités réalisées par rapport aux fonctionnalités initialement prévues. Toutes les fonctions deservice principales ont été développées. On note une évolution du cahier des charges en ce quiconcerne les fonctionnalités complémentaires qui n’ont pas été réalisées mais remplacées par denouvelles, après réexamen de la faisabilité technique et temporelle de celles-ci.Fonction EtatF1 Pilotage du robot à distance (télé-opération) RéaliséeF2 Affichages des informations capturées par le Kinect et Réalisée exploitation de ces informationsF3 Mise en marche/arrêt du robot à distance Réalisée (dépendante de l’environnement réseau)C1 Navigation autonome du robot Non réaliséeC2 Retour à un point de départ sur ordre de l’utilisateur Non réaliséeC3 Enregistrement des flux vidéo pour traitement postérieur RéaliséeC4 Faire parler le Turtlebot Réalisée 27 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  28. 28. 7 Calendrier effectifLe calendrier de réalisation effectif est différent du calendrier prévisionnel. Du retard a été pris et aempêché la réalisation complète du work package WP3.WP1 Recherche et développements - conduit par Régis - T1.1 Prise en main du robot, installation des environnements de développement - T1.2 Prise en main et étude du framework ROS - T1.3 Prise en main et étude du Kinect - T1.4 Mise en projection des connaissances et des capacités acquises afin d’identifier les développements futurs. - T1.5 Implémentation et mise à jour de scripts de configuration de l’environnementWP2 Conception et implémentation des applications identifiées - conduit par Shyn et Sébastien - T2.1 Analyse et conception de l’application de téléopération - T2.2 Implémentation de l’application de téléopération - T2.3 Analyse et conception de l’application de communication - T2.4 Implémentation de l’application de téléopération - T2.5 Mise en production et testsWP3 Mise en production et tests - conduit par Sébastien - T3.1 Élaboration des scénarios de test grandeur nature (en fonction des cas d’utilisation, avec critères de réussite) - T3.2 Mise en production des applications sur le robot - T3.3 Gestion des tests grandeur nature des applications - T3.4 Rédaction de rapport dexécution des tests (cas d’utilisation, description de l’environnement lors des problèmes, comment reproduire le problème, diagnostique envisagé, etc.).WP4 Gestion de projet et livrables - conduit par Antoine - T4.1 Gestion de l’équipe et suivi de projet - T4.2 Rédaction des documents techniques - T4.3 Rédaction des documents liés à la gestion de projet - T4.4 Mise à jours des outils utilisés pour la gestion de projet (google project, agenda, etc.) 28 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  29. 29. - Janvier Février Mars Avril Mai S3 S4 S1 S2 S3 S4 S1 S2 S3 S4 S1 S2 S3 S4 S1 S2 S3 S4WP1 - Recherche et développementT1.1T1.2T1.3T1.4T1.5WP2 - Conception et implémentation des applications identifiéesT2.1T2.2T2.3T2.4WP3 – Mise en production et testsT3.1T3.2T3.3T3.4WP4 - Gestion de projet et livrablesT4.1T4.2T4.3 1T4.4Fig. 16 Planning effectif1 - Rendu du cahier des charges 29 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  30. 30. 7.1 Cause des retardsLes retards constatés par rapport au calendrier initial et les différences dans le déroulement duprojet sont principalement dus à trois facteurs :La nature du projet La nature du projet proche de la recherche a conduit à un fort investissement de temps dans le domaine de la recherche et du développement. N’ayant conduit dans notre cursus que des projets dont nous maîtrisions le domaine et les technologies, nous avons sous-estimé le temps nécessaire à la prise en main globale du projet. De ce fait on observe un écart dans la répartition du temps entre le planning initial et le planning final.Les difficultés rencontrées Le domaine abordé (la robotique) et les technologies utilisées dans cedans la réalisation projet nous ont parfois posé des difficultés techniques annexes à l’analyse et au développement, entrainant ainsi des retards dans certaines tâches.Le contexte du projet La localisation du projet à Sophia-Antipolis a été incontestablement une difficulté supplémentaire dans l’organisation du travail et l’avancement du projet. 30 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  31. 31. 7.2 Problèmes rencontrésNous avons rencontré plusieurs problèmes lors du déroulement du projet :- Le sujet de notre projet, le Turtlebot, ne pouvant quitter l’institut de l’I3S, il nous aura fallu nous déplacer à Sophia pour pouvoir tester le robot et travailler dessus. Nous avions décidé que nous irions essentiellement sur place en étant au moins deux, mais à cause de nos emplois du temps respectifs plutôt chargés et qui ne correspondaient pas beaucoup, il nous était difficile de pouvoir travailler fréquemment sur le projet durant les premières semaines ;- Lors de nos premiers essais avec le robot, il nous était impossible de le faire fonctionner avec ROS, à cause d’un problème de branchements. Il aura été finalement possible de faire fonctionner le Turtlebot avec ROS en s’assurant qu’il était connecté dans un type précis de branchements (ttyUSB0) ;- Le framework ROS était s’est parfois avéré difficile à installer et à utiliser suivant les configuration matérelle et logicielle des machines et ce, malgré la présence de tutoriels en anglais sur le site officiel de ROS. Nous avons dû essayer plusieurs fois de l’installer sur nos ordinateurs respectifs (problèmes de paquets, d’ordre d’installation) pour pouvoir mettre en place notre environnement de développement et ainsi, commencer à implémenter notre application ;- Le Turtlebot était difficile à manier au départ, car plusieurs programmes sur nos ordinateurs empêchaient aux services que proposaient ROS de se lancer correctement, et donc de fonctionner. Il aura fallu élaborer un script de démarrage de la téléopération du robot, en arrêtant tout ce qui empêchait les programmes présents sur ROS de fonctionner au préalable, puis en lançant les services que l’on voulait utiliser pour la téléopération du robot (exemples : image de profondeur, image RGB, dashboard de contrôle du robot et pilotage du robot grâce aux touches du clavier d’un ordinateur distant) ;- Étant donné que le Turtlebot est constitué d’un robot aspirateur Roomba et d’une Kinect, la batterie du Turtlebot devait être capable d’alimenter les deux appareils. Or, la Kinect est très énergivore, et ses besoins dépassent de très loin les capacités de la batterie du robot. Cependant, il était tout de même possible d’alimenter la Kinect avec, mais les performances de celle-ci était bien moindres, et l’autonomie du Turtlebot diminuait considérablement également. Il aura fallu ajouter une seconde batterie pour la Kinect, et réarranger les branchements pour rendre le tout autonome, ce qui aura impliqué une manipulation du matériel à laquelle on n’est pas habitués ;- Le langage de programmation utilisé pour ce projet, le C++, est un langage très puissant, mais aussi très permissif sur l’aspect de la gestion de la mémoire, ce qui fait que le moindre problème dans l’application peut entrainer une surcharge de la mémoire vive, ce qui peut être dangereux. De plus, sont utilisées conjointement dans notre projet deux bibliothèques, Gtk et OpenCV, et le manque de documentation pour celles-ci nous a fait perdre un temps précieux dans l’implémentation de notre application. 31 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  32. 32. 8 ConclusionNous avons étés très enthousiasmés par ce projet de robotique qui nous a permis de lierinformatique et monde réel. Ce fut l’occasion de se confronter à l’écart important qu’il peut y avoirentre théorie logicielle et réalité physique.Notre ambition, après avoir « essuyé les plâtres » du Turtlebot, est que notre application constitueune base saine sur ce matériel, pour le support des applicatifs de plus haut niveau du pôle SIS del’I3S, tels que la cartographie 3D de l’intérieur de bâtiments et la navigation autonome. On pourraitégalement envisager une utilisation plus ludique avec plusieurs Turtlebots qui interagirait entre euxsous forme de jeu.Enfin malgré les nombreuses difficultés rencontrées, nous avons acquis des notions pour ledéveloppement d’applications de robotique grâce à ROS et dans le domaine du traitement designaux visuels.Nous espérons avoir à nouveau l’opportunité de mettre ces connaissances en pratique dans ledomaine de la robotique. 32 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  33. 33. 9 Table des illustrationsFig. 1 Le robot aspirateur Roomba .......................................................................................................... 6Fig. 2 La camera Microsoft Kinect ........................................................................................................... 7Fig. 3 Pattern du laser infrarouge Kinect ................................................................................................. 7Fig. 4 Vue densemble du Turtlebot ........................................................................................................ 8Fig. 5 Graphe des noeuds ROS................................................................................................................. 9Fig. 6 Réseau du Turtlebot..................................................................................................................... 11Fig. 7 Planning prévisionnel ................................................................................................................... 13Fig. 8 Pipeline de rendu du flux Kinect .................................................................................................. 23Fig. 9 Rendu du flux kinect .................................................................................................................... 23Fig. 10 Hierarchie des widget GTK+ implémentés................................................................................. 23Fig. 11 Interface du Turtlebot en mouvement avec flux couleur .......................................................... 25Fig. 12 Interface du Turtlebot à larret .................................................................................................. 25Fig. 13 interface avec flux monochrome ............................................................................................... 26Fig. 14 Flux sauvegardé image par image.............................................................................................. 26Fig. 15. Interface texte de configuration ROS ....................................................................................... 26Fig. 16 Planning effectif ......................................................................................................................... 29 33 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU
  34. 34. 10 Annexes  Cahier des charges  Cookbook pour le développement 34 DEVELOPPEMENT POUR LE ROBOT ASPIRATEUR ROOMBA « TURTLEBOT » M1 MIAGE – BOULINGUEZ, CANIONCQ, CHENG, LAGNEAU

×