NAO navigation et communication avec des IOT

NAO navigation et communication avec des IOT

Projets 1ère Année DUT GEii – promotion 2017

 

Nao sur RoboTino

 

 

 

 

 

Sommaire :

 

  • Membres de l’équipe

  • Introduction

  • Présentation du projet

  • Matériel à disposition

  • Cahier des charges

  • Gestion de projet

  • Développement

  • Problèmes rencontrés

  • Bilan financier

  • Conclusion

 

 

Membres de l’équipe

 

Jérôme Willig, Marco Sangwa ainsi que Théo Schublin, trois étudiants en première année de DUT GEII (Génie électrique et informatique industrielle) à l’IUT de Mulhouse, ont travaillés sur le projet « NAO navigation et communication avec des IOT » et vous présente dans ce document le fruit de leur travail.

Introduction

 

Au début du second semestre de la première année, tous les élèves exerçants cette poursuite d’études sont amenés à réaliser un projet qui leur est imposé. Les heures de travail sont comprises dans l’emploi du temps et comptent à peu près une soixantaine d’heures. Ces périodes sont très importantes car elles sont très intensives. Cela nous permet d’acquérir de nombreuses compétences et de nous perfectionner dans plusieurs domaines tels que la programmation et la connectivité, mais aussi d’apprendre le langage python ainsi que le logiciel Chorégraphe pour piloter NAO.

 

Présentation du projet

 

Le projet sur lequel nous avons travaillé a en fait déjà été utilisé l’année dernière par les anciens élèves. Mais n’ayant pas été totalement fini, nos professeur ont rajoutés des éléments pour combler et affiner le projet.  Pour ce faire nous disposons d’un robot NAO, d’un RoboTino ainsi que la connexion internet de la classe.  Le but étant que NAO se déplace dans l’enceinte du bâtiment B pour présenter et amener les visiteurs extérieurs dans la salle souhaitée. Le robot NAO étant beaucoup trop lent, nous le plaçons sur RoboTino qui lui se déplace plus aisément. NAO devra donc prendre les informations dont il dispose autour de lui et diriger RoboTino suite à celles-ci grâce à la connexion dont nous disposons.

 

Matériel à disposition

 

Afin de mener à terme ce projet qui nous a été proposé, l’IUT nous met un certain nombre de matériel que nous pouvons utiliser. Nous disposons d’un robot NAO, d’un robot RoboTino ainsi que d’un serveur positionné dans la classe, disponible pour tous les groupes de travail. De plus, un budget maximum nous est imposé, ce dernier ne doit pas dépasser 200 euros. Cependant dans le cadre de notre projet, cet argent ne nous sera pas utile car nous ne faisons que de la programmation. En attendant le déroulement du projet, nous vous proposons une petite présentation des robots.

Le robot NAO :

 

Le département GEII dispose de 4 robots NAO. Ce dernier est un robot dit « humanoïde », équipé de 25 degrés de libertés, ce qui le rend unique et très proche des mouvements de l’homme. Développé par Aldebaran Robotics, une entreprise française, en 2006, il procède une multitude de capteurs qui le rende autonome tel que quatre capteurs à ultrasons sur son torse, huit capteur de pression, 2 cameras Haute Définition (1280 × 960 pixels), deux bumpers aux pieds pour ressentir le moindre obstacle.  Le robot a pour cerveau un naoqi, ce qui est un noyau linux. Un peu moins utilisé, il possède également une centrale inertielle avec un accéléromètre ainsi que deux gyromètres et le tout pour un poids total de 4,8 kg. Le robot se programme grâce au logiciel « Chorégraphe », et en utilisant principalement le langage python. Pour mieux comprendre son anatomie, voici ci-dessous une image pour comprendre d’avantage.

i

 

Le RoboTino :

 

Ce robot, bien que moins expliqué est toutefois tout aussi important puisqu’il sert de support pour NAO. Avec ses trois roues omnidirectionnelles, il offre une conduite remarquable ainsi qu’une précision à en couper le souffle. Ses neufs capteurs infra-rouges lui permettent d’éviter tout obstacle qui pourrait se mettre sur son chemin. Doté d’une caméra sur l’avant, il pourrait observer son trajet, cependant nous n’allons pas utiliser la camera puisque c’est le NAO, situé sur le RoboTino qui enverra les informations. Ce robot se programme grâce au logiciel « RobotinoView » en utilisant principalement les langages C et C++.

Ci-dessous un schéma facilitant la compréhension.

 

 

j

 

 

 

Le serveur MQTT :

 

Placé sur le Raspberry, le serveur MQTT sert d’interface entre l’utilisateur et le robot NAO. En effet il permet à ce dernier d’envoyer des ordres que NAO renverra au RoboTino par l’intermédiaire d’une trame UDP,  de plus il permet aussi au robot NAO d’envoyer un message pour confirmer la réception d’un ordre, ce qui fait office de « tchat » entre NAO et l’utilisateur.

Pour se faire, il faut que l’utilisateur télécharge sur son smartphone une application nommée MyMQTT (disponible sur le Play Store d’Android), celle-ci va lui permettre de se connecter sur le serveur MQTT en y entrant l’adresse IP du serveur dans les paramètre « Settings ». Pour qu’un dialogue ai lieu il faut ensuite, s’inscrire sur un « topic » ou sujet de conversation (nous l’avons appelé « nao/tino ») afin d’y envoyer un message en mode « publish » et en recevoir en se rendant dans le « Dashboard » . Dans l’application on peut aussi sauvegarder des messages, ils se retrouvent dans la rubrique « Stored messages ».

Afin que ces aspects du serveur MQTT soit opérationnels, il a fallu coder en python sur le logiciel Choregraphe, les différentes fonctions d’envoie et de réception de messages prédéfinis que le NAO devra transcrire en ordre pour le Robotino.

 

 

Cahier des charges

 

NAO doit être capable d’envoyer des informations à RoboTino, donc capable de lire des informations et de les traduire.

Différents critères :

  • Trouver un dialogue commun entre les deux robots

  • RoboTino doit être capable de contourner un obstacle

  • Possibilité d’écrire à NAO via l’application My MQTT

  • Utiliser les NAO mark pour que NAO se situe dans l’enceinte du bâtiment

  • RoboTino doit être capable de s’orienter dans toutes les directions

  • L’homme doit pouvoir discuter et commander NAO avec sa voix

Pour faciliter la bonne compréhension du sujet, nous avons conçu des diagrammes pour éclaircir toutes les informations :

 

Diagramme Bête à cornes :

 

 

 

Diagramme Pieuvre :

 

 

Image3

 

Diagramme de Gantt :

 

 

m

 

 

 

Gestion de projet

 

Afin de mener notre projet au mieux, d’être ordonné et efficace, nous nous sommes répartis les tâches :

 

  • Jérôme était chargé de programmer RoboTino à l’aide de son logiciel RobotinoView.

 

  • Marco quant à lui était lui chargé de la communication entre les deux robots et de la programmation pour utiliser le serveur MQTT.

 

 

  • Théo était chargé de la programmation des Naomarks ainsi que de la partie gestion de projet.

 

 

Développement du projet :

 

Familiarisation avec les logiciels :

Les logiciels que nous exploitons, Chorégraphe pour NAO et RobotinoView pour RoboTino, sont relativement simples. Pour commencer, nous essayons de programmer NAO de manière simple pour comprendre le système en lui faisant faire des figures etc… Et nous devons avouer que c’est très impressionnant ce que ce robot arrive à faire. Pour l’autre robot c’est pareil, le travail commence d’abord par de la découverte et de la création pour comprendre et manipuler de façon cohérente le robot. Nous avons eu la chance de récupérer de nombreux documents, partagés par nos professeurs, qui nous ont été bien utile notamment pour la découverte du langage python.

Une fois les logiciels bien maitrisés, nous pouvons entrer dans le vif du sujet.

Comme dis précédemment, notre sujet est une suite de l’année dernière, donc certains éléments ont déjà été traités, cependant nous y amenons les modifications nécessaires pour le bon fonctionnement.

Les programmes RobotinoView :

Il est à noter que Jérôme a dû créer toute la base du programme et l’améliorer. Dans un premier temps, le programme de suivi de mur a été récupérer dans les exemples de Festo et a été modifié et adapté. Ce programme est utilisé afin de suivre dans un sens le mur sans embuche, c’est-à-dire que le programme fait en sorte de ne jamais entrer en collision avec un objet, une personne ou quoi que ce soit.

 

 

 

suivi_mur

 

Ensuite, un entre programme permet de convertir une valeur reçue par le NAO en une fonction (par exemple : avance, recule, stop, etc…).

 

autonome

 

Et le dernier programme permet de choisir entre l’un et l’autre, en fonction des donnés et de la position.

 

prise en main

 

Les programmes Chorégraphes :

Pour les programmes Chorégraphes, nous avons commencé par l’utilisation des Naomarks, pour ce faire, nous avons repris les programmes des étudiants de l’an dernier, mais nous avons ajouté à chaque Naomark une fonction. NAO dis ensuite à voix haute le message qu’il a reçu.

naopython

 

 

Ensuite nous nous sommes débrouillés pour que NAO dise le message qu’il a reçu du serveur MQTT, sauf que dans ce cas, ce n’est pas grâce aux Naomarks mais via l’application Android MyMQTT. En lui envoyant un message via l’application, le robot est capable comme avant, de répéter le message.

Pour se faire, il a fallut coder un bloque de code en python permettant au robot de se connecter sur l’adresse du serveur MQTT puis au topic « nao/tino » (bloque « MQTT subscribe » plus bas) et un autre bloque pour qu’il puisse envoyé des messages de confirmation sur le topic où il est connecté et convertir les message reçus en ordre pour le Robotino (bloque « de » plus bas également). Cependant, dans message que NAO renvoie, le piège est de mettre des accents sur certains mot car le code envoie lors des simulations un message d’erreur.

Image1

 

 

Alors vous allez nous dire oui c’est bien beau mais pour l’instant rien ne se passe…

C’est maintenant que ça commence à être intéressant. Les programmes des robots sont faits, il ne reste plus qu’à les faire communiquer.

Nous nous sommes renseignés et nous avons constatés que le seul moyen de les faire communiquer est d’envoyer des donnés UDP. C’est-à-dire que quand on donne une instruction a NAO, ce dernier le transforme en une valeur et l’envoie au RoboTino. Chaque valeur a une fonction et donc va effectuer une tache.

Capture

 

 

Voici le programme chorégraphe final

photo

 

 

 

Nous vous proposons une illustration qui résume l’intégralité sous forme de vidéo.

 

Problèmes rencontrés

 

Lors de notre projet, nous avons rencontrés différents problèmes, notamment la connexion entre le RoboTino et l’ordinateur, ce problème étant dû à la portée de la clé wifi. De plus la connexion entre le NAOqi (serveur sur lequel se connectent les NAOs) et le NAO est était aussi problématique, en effet, de temps à autre le robot se connectait sur le réseau du RoboTino. Par ailleurs lors de la programmation du dialogue MQTT/NAO, nous nous sommes aperçus que le code ne fonctionnait pas lorsqu’il recevait des message comprenant des caractères avec des accents, ce qui fut problématique durant la phase de codage. Enfin la batterie du RoboTino est aussi problématique car elle est très faible et nécessite qu’on la recharge .

Bilan Financier

Comme annoncé au début de la présentation, nous disposions de 200 euros de budget pour réaliser le projet. Cependant nous n’avons pas eu besoin d’utiliser cet argent puisque nous ne devions que programmer et non créer. Même si l’argent n’a pas été utilisé, la valeur des objets est très élevée puisque le robot NAO coûte à lui seul 5 000 euros et le RoboTino quant à lui à une valeur de 8 000 euros. Ces objet ont donc étés manipulés avec douceur et chouchoutés tout le long du projet.

Conclusion

 

 

Les heures de projet ont été longues et avec beaucoup de rebondissements. Comme dans tous les groupes il y a eu des bons moments comme des mauvais où nous étions au bord du gouffre. Cependant, les règles que nous nous étions dès le début imposés, tels que la communication, les bilans après chaque séances, un dossier de partage, nous ont été capitale au bon fonctionnement du groupe. Bien que le projet n’ait pas pu arriver à son terme suite à des problèmes rencontrés notamment dans le domaine de la communication mais surtout avec la connexion wifi des différents appareils, ce projet a été pour nous tous un plaisir à réaliser. En effet nous avons eu la chance de toucher à plusieurs domaines, mais surtout de se perfectionner dans la programmation mais aussi dans la compréhension des objets connectés.

 

 

 

Capture

 

Théo, Marco et Jérôme vous ont présenté leur projet.