Synchronisation Humain NAO
Sommaire
Introduction
Nous avons eu la chance de pouvoir réaliser notre projet de quatrième année sur le robot NAO. Il s'agit d'un robot humanoïde programmable. Ses usages potentiels sont très vastes, on peut l'utiliser par exemple comme robot de compagnie.
Présentation du projet
Objectifs
Une collaboration existe avec l’école des sciences de l'art de Cambrais afin d'accompagner des danseurs professionnels en mouvements par des robots NAO.
Notre projet consistait à reproduire en temps réel certains mouvements articulaires humains par le robot NAO, ainsi on a dû trouver des solutions techniques pour que le NAO imite instantanément les mouvements d'un danseur.
Matériel à disposition
- un robot NAO
- logiciels nécessaires à la programmation du NAO (Choregraphe, python sdk, ...)
- une borne wifi
- une wimotte
- un récepteur Bluetooth
Bilan des séances
Séance 1 (4/2/2013)
- Compréhension des objectifs à atteindre
- Découverte des robots NAO.
- Prise en main du logiciel Chorégraphe.
Séance 2 (7/2/2013)
- Découverte des robots NAO.
- Prise en main du logiciel Chorégraphe.
- Tests fonctionnels sur le NAO (position debout, marche, … ).
Séance 3 (11/2/2013)
- Rencontre avec Emmanuelle Grangier, notre contact de l'école des sciences de l'art de Cambrais.
-> Choix de capteurs pour acquérir les mouvements d'un bras.
- Constat que chorégraphe n'est pas adapté au temps réel.
-> En conséquence, approfondissement de la programmation de NAO en Python.
- Contact de l'entreprise Interface-z, nous fournissant les capteurs et la carte d'acquisition.
Séance 4 (14/2/2013)
- Recherche de capteurs pour commencer à tester la fluidité des transferts de données ordinateur -> NAO.
Semaine 9 (25-29/2/2013)
- Récupération d'une wiimote.
- Récupération des valeurs des capteurs de la wiimote (accéléromètres) en temps réel sur l'ordinateur.
Semaine 10 (4-8/3/2013)
- Programmation d'un serveur en python.
- On utilise une socket python pour que l'ordinateur en tant que client du serveur NAO envoie les données des capteurs en continu au NAO.
Semaine 11 (11-15/3/2013)
- Constat qu'un serveur n'est pas nécéssaire, en effet on peut directement envoyer les données au NAO via la borne wifi (en connaissant son adresse IP) par un programme python.
- Réalisation d'un programme permettant d'envoyer des nombres via le terminal pour commander angulairement un moteur du NAO et en particulier les moteur "HEADYAW" et "HEADPITCH" contrôlant l'articulation de la tête.
Semaine 12 et 13(18-29/3/2013)
- Difficultés dans la recherche de librairies permettant d'exploiter la wiimote sous windows.
- On a finalement décidé avec l'accord de M. Merzouki de passer sous linux pour faciliter les transferts des données de la wimote en Bluetooth.
Semaine 14(1-12/4/2013)
- Réalisation d'un programme fonctionnant sous linux avec la librairie "CWIID" et permettant de récupérer les angles "pitch" et "roll".
- Sous LINUX, nous avons installé la librairie du NAO (NAOqi) pour réutiliser le programme déjà fait pour le contrôle du NAO. Nous avons eu de nouveaux problèmes de librairies.
Fin du projet (15/4/2013 -> 3/5/2013)
- En raison du manque de temps restant, nous avons décidé pour avoir une solution présentable d'utiliser deux ordinateurs communicant par socket python, l'un sous windows commandant le NAO comme nous l'avions déjà fait, l'autre sous linux récupérant les données wiimote.
- Nous avons obtenu des résultats médiocres car la wiimote envoie trop de données, et le Nao ne peut les traiter en temps réel.
- Pour limiter les traitements, nous avons mis en place un traitement des données par paliers de 20 degrés.
- Le résultat respecte la notion de temps réel, mais on a constaté qu'il y a des perturbations à corriger.
Améliorations possibles
Notre solution n'est pas optimale après ces trois mois de travail. En effet il faudrait améliorer le filtrage des données pour éviter des perturbations dans la réponse. Il faudrait également contacter Aldebaran Robotics pour obtenir une librairie fonctionnant avec linux 64bits et avoir un matériel moins imposant que celui de la solution sur laquelle nous nous sommes finalement tournés.
Conclusion
En conclusion, nous avons réussi à obtenir une solution quasi fonctionnelle, malgré le temps réduit du à de mauvais choix en début de projet. Ce projet a été satisfaisant, en plus de l'apport personnel des découvertes du langage python et du robot NAO. Les nombreux problèmes que nous avons rencontré nous ont en outre fait progresser et nous ont demandé beaucoup de temps de travail et de recherches pour continuer de progresser et atteindre les objectifs.