Le projet de localisation des robots Nao a été réalisé par Mathieu GARDIN, apprenti en DUT Génie Electrique et Informatique Industrielle auprès de Endress-Hauser Flowtec AG.
Introduction
Les robots Nao sont une avancée innovante dans la robotique. Grâce à sa panoplie de capteurs et d’articulations mécaniques, il se rapproche des fonctionnalités de l’être humain. On y retrouve entre autre un moyen vocal de répondre à des injonctions, des capteurs pour pouvoir entendre la voix, une fonction « visuelle » pour observer son environnement à l’aide de caméras ainsi que des capteurs permettant aux Naos de marcher. La majorité des fonctionnalités du Nao le destinent à une interaction avec son environnement extérieur. Cependant, à l’heure actuelle, aucun système n’existe pour pouvoir créer une fonction de géo-localisation dans cet environnement. A travers cette présentation, nous allons chercher à développer cette fonctionnalité et ainsi élargir les possibilités du Nao.
Présentation du Sujet
Pouvoir localiser un Nao lors de ces déplacements dans une pièce, tels a été le projet qui nous a été confié par Mr CUDEL. L’intérêt de ce projet résidait de pouvoir localiser à l’aide d’une interface graphique doublé par un serveur de base de données. L’objectif est que le Robot Nao puisse écrire dans la base de donnée et que l’interface graphique située dans un navigateur internet puisse effectuer une demande auprès de la base de donnée et se mettre à jour automatiquement.
Pour la réalisation du projet, on utilisera un raspberry pi 2 model b qui hébergera la base de donnée et sera connecté à l’aide d’une clée 3G sur le routeur pour communiquer avec le robot Nao
Organisation du Projet
La réalisation de ce projet a suivis un ordre précis:
Phase de concept :
Évaluation de la problématique actuelle et des solutions à mettre en place
Réflexion sur les langages de programmation à utiliser
Découverte et Apprentissage de l’utilisation des outils numériques (Raspberry pi 2 model b)
Analyse des fonctionnalités:
Création d’une base de donnée
Création d’une interface graphique
Création d’un moyen de communication entre Raspberry et Nao
Mise à jour automatique de l’interface graphique
Intégration des données spatio-temporel du Robot
Création de la partie design :
Réalisation d’un plan de la pièce
Intégration des balises sur l’environnement graphique
Intégration des fonctionnalités :
Mise en place de la base de donnée
Intégration de l’interface graphique au navigateur Web
Utilisation de la communication entre Robot et Raspberry
Phase de test:
Test des fonctionnalités
Correction des erreurs
Cahier des Charges
Base de donnée
La question de la base de donnée a surtout été conditionné par un choix technologique. MySQL ou SQlite. Dans un premier temps, il était prévu de partir sur une base de donnée en MySQL mais après quelques recherches, il a été montré que l’utilisation de SQlite économiserait les ressources du Raspberry
Interface / Gestion base de donnée
Pour pouvoir créer les bases de données et les organiser, le choix s’est porté sur l’interface Phpmyadmin. Un outil conçu en PHP permettant l’administration des bases de données. Travaillant sur un système Linux, il était plus facile d’utiliser cet outil que de passer par l’invite de commande.
Interface graphique
Pour la création du plan d’une salle de Tp, on a utilisé un logiciel d’architecture appelé Kozikaza, permettant de re-constituer la salle de travaux pratiques avec ces obstacles et ces dimensions
Langages de programmations
Concernant les langages de programmation, plusieurs solutions ont été proposés. On pouvait utiliser un langage python presque exclusivement ou se porter sur des langages de programmation de type Web => PHP, HTML, AJAX, et JAVASCRIPT.
L’objectif de ce projet étant de travailler sur une interface graphique Web, il a été décidé d’utiliser PHP, HTML, AJAX, et JAVASCRIPT
Communication
La communication entre le robot Nao et le Raspberry se fera à l’aide d’un protocole de type UDP. Le robot enverra sa position dans une chaîne de caractère qui sera ensuite traduit par une table de transcodage au niveau du raspberry
Développement
PHPmyadmin
L’utilisation de PHPmyadmin se fait en local sur le raspberry : 127.0.0.1
Sur les besoins de ce projet, il a été demandé 3 types de données:
La première se base sur quel robot Nao envoie les données
La deuxième concerne le jour et l’heure à laquelle les informations ont été envoyés
La troisième nous renseignera sur la position du robot, si il se trouve à la balise 1, 2, 3 ou 4. Ces « balises » seront placés à différents endroits dans la pièce
Dans notre cas, on pouvait créer les tables de données manuellement, une pour chaque information ou programmer en SQL la création automatique de ces tables (visible ci-dessous en rouge). Pour les besoins du test, il a été décidé de créer une auto-incrémentation des données comme détaillés dans le document ci-dessous en bleu.
La table Robot identifie quel Nao a envoyé l’information
La position correspond à quelle balise a été repéré le robot
La date elle nous indique donc la position temporelle du robot
Plan de la salle de travaux pratiques
Le design de l’interface graphique réalisé à l’aide du logiciel d’architecture prend en compte une partie du mobilier de la salle ainsi que ces dimensions.
Dans le cadre du projet, il a été intégré de manière très simple 4 balises numérotés de 1 à 4 avec des couleurs différentes représentant les positions du robot Nao comme montré dans l’image ci-dessous :
Programmation PHP / HTML
La programmation de l’interface graphique et de sa communication avec le raspberry s’est effectué avec code en PHP. Le principe est d’initier la communication en lui donnant les « username » et « password » de PHPmyadmin pour aller lire ce qui est écrit dans la base de donnée
Le reste de la programmation s’effectue en HTML pour pouvoir donner « vie » à l’interface graphique et implémenter les données sur la plate-forme Web
Perspectives / Difficultés rencontrées
Une des premières difficultés a été l’installation et la mise à jour des logiciels sur le raspberry. L’intégration de PHPmyAdmin et du langage SQL à l’aide de la console linux intégrée a montré des réticences et a entraîné une perte de temps importante. La communication UDP qui devait s’ajouter comme partie finale du projet n’a finalement pas pu être réalisée par un manque de temps et une adaptation du code difficile à mettre en œuvre à notre niveau.
Les perspectives si la communication UDP était correctement installée et que le traitement des informations en provenance du Robot Nao se réalisait sans conflit, permettrait une étude de la localisation du robot sur une plus grande échelle. On pourrait travailler sur le bâtiment B en entier et pas juste au niveau de la salle de travaux pratiques.
Par la suite, l’intérêt du projet deviendrait plus prononcé si le raspberry émettrait des ordres de déplacements aux robots Nao. La localisation avec les capteurs du robot permettrait de créer un système d’acquisition quand le Nao arrive à destination.
Enfin en dernier lieu, transformer cette plate-forme Web pour l’intégrer dans une application Android permettant une utilisation mobile du projet.
Bilan
Par ce projet, j’ai eu la plaisir de pouvoir travailler sur des langages de programmation qui m’était jusqu’à lors inconnu. J’ai pu acquérir des compétences de programmation en base de données (SQL), langages Web (Ajax, Jquery, HTML, PHP, Javascript et CSS). Ce défi de travailler dans d’autres langages de programmation était une source de difficultés en plus mais m’a permis de créer un défi personnel pour la réalisation de ce projet.
Il est vrai qu’à l’heure actuelle, la localisation du robot Nao s’arrête à une simulation avec la plate-forme Web et il est toujours décevant d’un point de vue personnel de ne pouvoir mener à 100% la réalisation d’un projet. Mais les bases ont été crées et fonctionnent sans erreur. Pouvoir améliorer ces bases et en faire la naissance de nouveaux projets pour de futurs réalisations justifie le besoin d’un tels projet et surtout son importance dans l’enseignement du GEII.
A ce titre, je tiens à remercier Mr Cudel d’avoir autorisé la réalisation de ce projet même en étant seul dessus. Cela m’a permis de réaliser ce projet personnel de travailler avec des outils Web et pouvoir appréhender le croisement entre Robotique et environnement Web.
L’objectif du projet est de faire danser dans la salle B19 un robot NAO via le logiciel chorégraphe 2.1.3 et d’utiliser un serveur DMX afin que Nao donne les ordres aux projecteurs en synchronisation avec la musique selectionnée au préalable.
Le département GEII de l’IUT de Mulhouse dispose de 4 robots humanoïdes NAO programmables qui sont capables de se déplacer en parfaite autonomie . Néanmoins, leur vitesse de marche reste très limitée. C’est pourquoi, il serait intéressant de pouvoir les asseoir sur un robot beaucoup plus mobile, un RoboTino, lui aussi à la disposition du département au nombre de 2. L’idée est donc de les rendre capables de réceptionner des informations transmises par le NAO afin de pouvoir amener celui-ci à bon port.
Une fois cette tâche établie, la finalité du projet serait de permettre au NAO d’accueillir et de guider des visiteurs au sein du bâtiment B grâce notamment au système de reconnaissance vocale du NAO et de ses différents capteurs.
Introduction
NAO est un robot humanoïde développé par Aldebaran Robotics, une start-up française basée à Paris, c’est un robot équipé de 14 à 25 degrés de liberté (=articulations) suivant les différents modèles proposés par la firme, ceux de l’IUT étant des modèles en ayant 25. Ce robot embarque un noyau linux (baptisé naoqi) ainsi que tout un panel de capteurs dont 4 capteurs ultrasons sur son torse pour l’évaluation des distances, 8 capteurs de pression, 2 caméras et 2 bumpers à ses pieds afin de détecter d’éventuels obstacles. Le tout pour un poids total de 4.8 kg et une hauteur de 58 cm. Il est surtout utilisé en laboratoire ou dans le domaine de l’enseignement comme c’est ici le cas.
En ce qui concerne son robot mobile, il s’agit d’un RoboTino développé par la firme Festo établie en Allemagne à Esslingen. C’est un robot programmable par PC, bardé de capteurs et capable de se déplacer en parfaite autonomie. Grâce à ses 3 moteurs et à ses roues suédoises, RoboTino peut se déplacer dans toutes les directions ainsi que tourner sur lui-même.
Il s’agit donc de notre projet du second semestre durant lequel nous avons travailler à faire communiquer les deux robots et rendre le tout fonctionnel.
Présentation du Sujet
Au cours de notre DUT GEII, nous sommes amenés lors du second semestre de notre première année à travailler sur un projet de notre choix parmi une dizaine de projets qui nous ont été proposés. Une fois le second semestre terminée, l’évaluation s’effectuera au cours d’une soutenance finale que nous avons eu le temps de préparer durant nos cours de conduite projet avec Monsieur ROTH. L’évaluation portera aussi sur notre esprit d’équipe, notre implication et le sérieux dont nous avons fait preuve au cours de toute la durée de notre projet.
Cahier des Charges
Préambule :
La société française Aldebaran Robotics, propose un robot humanoïde NAO autonome et programmable notamment destiné à des activités pédagogiques.
En 2008, la société lance une version academics de son robot afin de permettre son utilisation dans des laboratoires et dans des établissements d’enseignement tels que des universités
Le département GEII de l’IUT de Mulhouse possède ainsi 4 robots NAO au jour d’aujourd’hui.
Présentation :
Ils sont capables de recevoir et de guider des visiteurs potentiels à un endroit donné.
Les robots NAO sont donc des appareils capables de se déplacer de façon autonome au sein de leur environnement, mais leur vitesse de déplacement reste très limitée, restreignant ainsi grandement leur capacité d’accueil de visiteurs.
Le département GEII de l’IUT ayant aussi à sa disposition un robot mobile RoboTino capable de se déplacer en recevant des instructions au sein d’un réseau wifi, NAO doit pouvoir s’atteler à celui-ci et lui transmettre les bonnes informations pour arriver à destination.
Critères généraux :
L’assise de NAO sur le RoboTino doit être suffisamment stable pour assurer sa protection.
Mettre au point un dialogue commun entre les deux robots.
Une signalétique préalablement établie doit être mise en place au sein du bâtiment afin que NAO puisse s’orienter et donc transmettre les bonnes informations au robot mobile.
Critères de fonctionnement :
L’ensemble doit pouvoir se déplacer dans toutes les directions.
L’ensemble doit être capable de détecter et d’éviter un obstacle potentiel, que ce soit un objet ou une personne.
L’ensemble doit arriver à destination.
Critères techniques :
Prise en main du logiciel choregraphe et du langage python (NAO).
Prise en main du logiciel RoboTino view (Robot mobile).
Communication wifi entre les deux robots ou via des Entrées sorties + choix du routeur du robotino ou d’un routeur indépendant.
Utilisation de données UDP.
Bête à cornes:
Pieuvre:
Diagramme de Gantt
Développement
Nous pouvons distinguer plusieurs grandes étapes clés de notre projet, à savoir: (par ordre chronologique)
1°)La mise au point et la réalisation de l’assise:
Après avoir pensé à de multiples systèmes d’assise du NAO sur le Robotino, nous nous sommes décidé pour un système de « chaise » tout simplement, nos autres idées étant beaucoup plus complexes à réaliser et pas forcément plus efficaces. Parmi celles-ci, nous avons pensé à un socle surmonté d’une longue tige où fixer NAO debout dessus (solution pas vraiment stable), un système d’assise mais sans dossier avec un système de renne où NAO pourrait s’accrocher (plus ludique mais très instable elle aussi) ou encore un système d’escalier permettant à NAO de grimper de lui-même sur le robot mobile (solution difficile à mettre en oeuvre, risquée et sûrement très instable une fois de plus donc très vite abandonnée).
La solution de la chaise nous semblait donc être le meilleur choix.
2°)La prise en main des logiciels et du langage python:
Une fois la partie mécanique du projet résolue, nous avons commencé à nous initier à la programmation des deux robots puisque ce fût du matériel et un environnement de travail totalement nouveau pour nous. Nous nous sommes par la suite aussi intéressés aux bases du langages python nécessaire à la programmation de la mise en réseau des deux robots.
L’ensemble de cette période d’initiation a été opérée grâce notamment aux documents constructeurs et des divers tutos mis à notre disposition par nos professeurs tuteurs.
3°)Echanges de données UDP
Après avoir passer les quelques premières séances à nous approprier le projet et ses différents facteurs, nous avons pû commencer à nous attaquer au coeur même du sujet: la communication entre les deux robots.
Nous avons été aiguillé vers une utilisation de données UDP pour ce faire puisqu’il s’agit d’un des principaux protocoles de télé-communication au même titre que les données TCP, l’avantage des données UDP étant leur plus grande simplicité puisqu’elle n’implique pas de » handshaking », cette simplicité qui à le défaut de ne pas garantir la bonne livraison du message envoyé.
C’est ici qu’intervient le langage python puisqu’il nous a permis de programmer un bloc vierge sur Choregraphe à l’origine de la communication entre les deux robots. En effet, ce bloc permet l’envoi de trames UDP du NAO à un serveur localisé sur le pc où le logiciel du robotino est lancé qui, lui, transmet ces trames au robotino afin de lui ordonner tel ou tel déplacement.
Pour être plus précis, nous avons récupérés grâce à un logiciel tiers (spyder) les codes générés par le robotino lors de chacun de ses déplacement (1 déplacement=1 code spécifique), nous avons ensuite fais correspondre chacun de ces codes à une instruction reconnue par le NAO (tout d’abord de type numérique puis de type vocal et enfin grâce au système de Nao Mark) à l’intérieur de ce bloc vierge sur l’interface Choregraphe propre au NAO.
Une fois cette étape établie, le reste de la programmation en python dans ce bloc permet l’envoi de ces codes sur un serveur que nous avons préalablement lancé et configuré sur RobotinoView.
4°)Programmation de chacun des robots
Une fois la communication entre les deux robots établie, nous avons pu finaliser la programmation que nous avions esquissés de chacun de nos 2 robots puisqu’ils étaient jusqu’alors sommairement programmés afin de répondre à des ordres simples.
Notre programme RobotinoView:
Notre programme Choregraphe:
Gestion de Projet
Notre chef de projet est Louis Spiesser et pour ce qui est de la répartition des tâches, nous avons décidé de scinder l’équipe en deux:
Louis et Loïc ont été chargés de travailler sur NAO et son logiciel Choregraphe.
Luigi et Jean-Michel ont quant à eux été chargés de travailler sur le Robotino et son logiciel RobotinoView.
Ressources et bilan financier
Pour ce qui est des ressources utilisées, nous n’avons certes pas eu la nécessité de dépenser les 200 € mis à notre disposition mais nous avons cependant eu accès du matériel très couteux. En effet, nous avions à notre disposition 4 robots NAO valant 5000 € pièce ainsi qu’à deux robotino valant 8000 euros pièce sans compter la matière première et l’outillage fournis par l’IUT et nécessaire à la fabrication de notre assise.
Perspectives
Suite aux problèmes de portée wifi que nous avons rencontrés au cours de notre projet, nous avons été contraints de modifier la finalité de notre projet: A savoir, effectuer un itinéraire donné au sein de la salle B19, alors que notre perspective première était de pouvoir permettre à notre NAO de se déplacer au sein du bâtiment B voire même accueillir et présenter le bâtiment à des visiteurs potentiels.
Conclusion
Dans l’ensemble, notre projet s’est plus ou moins bien déroulé. En effet, nous avons eu pas mal de problèmes notamment au niveau du wifi comme expliqué précédemment mais aussi à d’autres niveau, principalement en ce qui concerne les Robotino puisque nous avons eu des problèmes de fusibles, de batterie et de clé wifi. Malgré cela, nous avons fini dans les temps tout en ayant progressé en programmation (Python) ou en réseau.
Au delà de cet approfondissement de nos connaissances en programmation et de notre initiation au réseau, ce projet nous a permis de développer un esprit d’équipe sur le long terme et d’effectuer un travail en autonomie sur une longue période.
En conclusion, malgré des hauts et des bas, ce fût un projet extrêmement intéressant malgré sa difficulté certaine et nous en tirons néanmoins un très bon souvenir.