NAO show lumineux



Résumé

 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.

projetnao

Introduction

Ce projet est destiné à l’IUT de Mulhouse et en particulier le DUT GEII dans le cadre de notre projet de semestre 2 mais aussi lors des portes ouvertes afin  d’attirer les potentiels futurs étudiants.

Sommaire

Le Projet

Le Cahier des Charges

Les Ressources

La Mise en oeuvre

L’organisation du projet

Vidéo & Montage

Perspectives

Conclusions

 

 

Le Projet

L’objectif est d’utiliser les ressources de l’année dernière telles que le début de programme pour les projecteurs ainsi que le compte rendu de projet afin d’approfondir le travail de synchronisation et de réseau. Nous devons cette année réaliser une nouvelle chorégraphie en prenant en compte de la mise à jour de l’environnement de développement des NAO (Chorégraphe 2.1.3) et de vouloir établir une liaison directe entre le robot NAO et le projecteur via le serveur UDP. L’objectif final étant la réalisation d’un clip vidéo mettant en avant le savoir-faire des élèves de GEII tout en restant ludique et de manière a donner envie aux étudiants potentiels qui iront aux portes ouvertes de venir en GEII.

Notre équipe est composée de  Loann Dreyer , Chargé des projecteurs et de la synchronisation et de Antoine Schellhorn, Chef de projet chargé du NAO et de la synchronisation.

12421885_10207862303189044_2060312725_o

Le Cahier des Charges

 Les fonctions du projet

pieuvre

Comme on peut le voir sur ce diagramme, l’objectif est de faire une vidéo , ses fonctions principales sont d’être a la fois ludique et de montrer nos compétences, nos contraintes sont  un budget de 200€, une musique et une chorégraphie éthique et tout publics, l’intégrité du robot, un environnement limité mais très complet : la salle B19, et la sécurité qui ne nécessite pas de grandes précautions sachant que le robot est en mode « asservi » et que le rendu final sera de toute manière une vidéo.

Contraintes au niveau des projecteurs

Tout d’abord il y a des contraintes d’alimentation pour faire fonctionner les projecteurs il faut alimenter le serveur DMX avec une tension de 7 Volts en DC, brancher les projecteurs, vérifier que toutes les alimentations soit bien fonctionnelles et qu’il n’y ait pas de mauvais branchement.

Il y a des contraintes techniques telles que faire bouger les projecteurs à tel ou tel endroit, créer toutes les variables pour faire fonctionner les différentes fonctions des projecteurs telles que la couleur, les gobos…

Puis des contraintes de sécurités telles que la fixation des projecteurs à la barre métallique pour qu’ils ne tombent pas ou alors qu’il n’y a pas de court-circuit dans le système.

Egalement des contraintes de chauffe car il faut attendre un certain temps avant que les projecteurs soient réellement en état de fonctionner.

Enfin des contraintes de prix car si il y a un problème sur les projecteurs, leur prix étant largement supérieur au budget on ne peut se permettre de les remplacer.

Contraintes aux niveau du robot NAO

Tout d’abord il y a les contraintes d’alimentations telles que la batterie qui a une durée donc il n’est pas toujours autonome, il faut le laisser charger au moins pendant 30 minutes pour qu’il soit fonctionnel pendant 1h30.

Aussi des contraintes de réseau comme le routeur qui doit être opérationnel pour qu’on ai du wifi, dans le cas échéant la mobilité est réduite par le câble éthernet.

Puis des problèmes de connexion car le robot peut ne pas arriver à se connecter avec le wifi ou autre malgré  le bon fonctionnement du routeur ou du logiciel chorégraphe pour lancer les programmes.

Enfin des contraintes de sécurité, lorsqu’on teste une nouvelle position il faut toujours le sécuriser en mettant ses mains près de lui pour pas qu’il tombe, son poids de 7 kilos dû a son éléctronique embarquée est une contrainte car si il heurte quelque chose il peut avoir des bosses ou un trou, niveau équilibre on ne peut lui demander des choses trop complexe car il y a énormément de chance qu’il tombe et qu’il se casse quelque chose à cause de son poids.

Et a nouveau des contraintes de prix car si il y a un problème sur le robot NAO, le prix étant largement supérieur au budget on ne peut se permettre de le remplacer.

Contraintes liées a l’environnement de travail

Tout d’abord il ne faut pas endommager la piste en faisant tomber le robot NAO, il faut que la piste soit bien plate pour que le robot NAO n’aille pas sur une bosse et tombe. On ne peut pas déplacer la piste

Au niveau de la salle il faut que la pluie ne puisse pénétrer la salle car cela risque d’endommager les systèmes variés qui ne sont pas dans des endroits isolés de la pluie. Il faut que la salle soit chauffée et étanche pour que les personnes qui vont voir le robot n’aient pas froid et puissent apprécier la chorégraphie.

Contraintes aux niveaux de la chorégraphie

Il faut une chorégraphie qui plait à tout le monde, se mettre d’accord sur une musique qui est libre de droit et qui permet de faire plein de choses aux niveaux robot et projecteurs et pas un simple rythme avec les mêmes mouvements ou la même lumière tout le temps. On nécessite également une synchronisation entre le robot NAO et les projecteurs.

Contraintes aux niveaux fonctionnements des robots NAO ET des projecteurs

Logiciel SPYDER pour contrôler les projecteurs : Il faut d’abord importer différents fichiers et créer toutes les variables pour que le projecteur réalise les changements de rythme ce qui permet de faire des différentes danses ou de modifier l’allure des projecteurs

Logiciel Chorégraphe pour contrôler le NAO : Pour effectuer un mouvement précis du robot NAO il faut bien choisir l’angle de rotation de chaque membre et faire différents blocs pour les différentes choses que le robot puisse réaliser dans un ordre précis.

Contraintes de musique

La musique doit plaire à tout le monde, nous avons décidé de choisir Jibbs – Chain Hang Low (Crizzly & AFK Remix) car elle est pleine d’énergie et contient beaucoup de changements de rythme ce qui permet de faire des différentes danses ou de modifier l’allure des projecteurs

Budget

Pour le projet, le matériel mis à notre disposition par l’IUT de Mulhouse a une valeur importante,

Le robot Nao coûte 5 000 €, Les projecteurs 3 500€ l’unité donc 7 000€ sans compter les fixations et un coût supplémentaire de 300€ pour le réseau. Nous avons donc plus de 12 300€ de matériel à notre disposition. Et en plus de cela nous avons 200€ de budget pour d’éventuels frais supplémentaires comme du décor.

Les Ressources

 Le Nao
nao

Le NAO est un robot humanoïde français, autonome et programmable, développé par la start-up française Aldebaran Robotics, située à Paris. Il a été lancé fin 2006 et a connu plusieurs évolutions depuis. La version que nous utilisons dans le cadre de notre projet est celle présentée a gauche , c’est a dire la plus récente. Afin de mener a bien notre chorégraphie nous n’avons pas l’utilité de toutes les fonctions innovantes et variées du robot mais nous avons tenté d’en utiliser un maximum. Nous avons pu profiter des hauts-parleurs pour la synchronisation , la musique étant émise par le robot les mouvements peuvent être modifiés en accord avec la musique. Ces derniers sont facilités par les 25 degrés de liberté de mouvement chose assez inédite pour un robot humanoïde ce qui nous laisse un grand loisir a la création, il ne faut cependant pas oublier le poids du robot qui limite tout de même l’équilibre. L’émetteur w-ifi nous permet d’envoyer les trames au projecteur et donc de contrôler les effets de lumière avec le NAO, le recepteur wi-fi permet de contrôler le NAO sans fil ce qui rend les tests de la chorégraphie plus aisés. Les capteurs ne sont pas utilisés car le robot fonctionne en mode « asservi » il suit les mouvements qui lui sont donnés et applique simplement, mais les capteurs de collision et d’équilibre restent actifs afin de limiter les accidents. Le capteur tactile de la tête est également utilisé pour le lancement du programme et pour un éventuel lancement synchronisé du programme sur deux robots.

 

 Le logiciel Chorégraphe

a annoter

Nous utilisons la version 2.1.3 du logiciel Chorégraphe développé par aldebaran robotics, vous pouvez voir ci dessus le programme final qui se lit de la gauche vers la droite en suivant la ligne noire.

La première partie en haut a gauche est une initialisation, après un contact sur la tête NAO lance son programme, il initialise la communication et les projecteurs a travers un programme python (premier rectangle rouge), puis se lève, une temporisation est utilisée afin de veiller a la bonne synchronisation des actions.

La seconde boite python ( second rectangle rouge) lance un clignotement des projecteurs qui accompagne les premiers mots de Nao et le début de la musique lors duquel la boîte « twinkle » lance un clignotement continu des yeux.

Le second rectangle bleu contient donc le début de la mise en scène, le départ de la musique, mais également la timeline « Chroégraphie » encadrée en gris et rouge contenant a la fois des blocs pythons et des poses qui sont synchronisés et se succèdent sur la timeline, ce bloc met le Nao en vie pendant les 2 minutes de danse. Tout du long les yeux du nao changent de couleur grâce a la boite « Random eyes » qui suit la boîte « Twinkle ». Après la chorégraphie le NAO s’asseoit entouré d’un logo « GEII » (Boite sponsor).

Le NAO reste assis et il ya une temporisation permettant la synchronisation avec la fin de la musique. Après cela le programme continue dans le 3ème rectangle bleu où le NAO remercie son public avec un signe de la main et une phrase de remerciements ses yeux changent a nouveau de couleur et après un cours delai permettant la fin des actions lancées, le NAO termine son programme et éteint ses moteurs (hexagone rouge).

Le dernier rectangle en bleu clair contient des boites permettant d’asseoir ou de lever le robot en cas de besoin et un petit mouvement de salut pour les presentations aux futurs élèves.

Ce logiciel est plutôt intuitif même si il nécessite un certain temps de prise en main et permet de visualiser les mouvements du NAO avant de le faire danser ce qui ajoute plus de sécurité avant les essais , même si il n’empêche qu’il y a des précautions a prendre sachant que le NAO pèse 5 kilos et n’as pas un équilibre parfait.

 L’open DMX Ethernet (ENTTEC)

Avant de commencer à vouloir manipuler les projecteurs avec les différentes fonctions que je citerai plus tard, il y a tout d’abord 2 prises à brancher  à proximité du bureau.

geii1

Ensuite il y a un boitier open DMX Ethernet (ENTTEC) qui faut alimenter avec une tension de 7 volts en DC pour cela on utilise un générateur de tension qu’on va régler pour qu’il alimente l’open DMX avec une tension de 7 volts en DC.

Pour vérifier qu’il est bien alimenté, il y aura des petites LED qui vont s’éclairer pour signaler que l’open DMX est bien sous tension  et fonctionnel.

geii1

 

L’ODE(Open DMX Ethernet ) sert à convertir un protocole Art-net qui permet la communication avec le DMX 512(les projecteurs) pour les faire bouger à notre guise.

 

 

Les Projecteursgeii

Les caractéristiques du projecteur :

  • lampe à décharge à haut rendement, 250 Watts, 2000 heures
  • 12 filtres dichroïques (filtres servant à la séparation des couleurs) interchangeables
  • 7 gobos rotatifs et amovibles
  • prisme tournant interchangeable à 3 facettes
  • mise au net motorisée
  • gradateur intégral (permet de modifier l’intensité de la couleur)
  • noir ultra rapide et effet stroboscopique
  • optiques traitées

Le MAC 250 Entour ou Krypton est configuré en usine pour une utilisation en 230 V/ 50 Hz.

On le voit souvent dans des concerts de grandes stars ou encore lors de festivals…

Pour le logiciel Spyder qui permet de contrôler les projecteurs nous avons utilisé les variables de bases crées l’année dernière et nous les avons modifiés pour la réalisation de notre chorégraphie.

Les fonctions de bases sont dans FctProjForNAO_v3 qui doit être à chaque fois devant une fonction comme ci-dessous

Ex : FctProjForNAO_v3.couleur(channels,ip,OP0,OP1,1,0)

Les différentes variables

channels : cette variable comporte le code respectant le protocole art-net, c’est cette variable qui est modifié en fin de chaque fonction et qui est envoyé aux projecteurs pour choisir le projecteur de droite ou de gauche ou même les deux à la fois.

Ip : c’est l’adresse ip du receveur des informations (le module ENTTEC en l’occurrence).

OPO : cette variable contient la valeur du premier octet de donné (0 pour le projecteur 1)

OP1 : cette variable contient la valeur du seizième octet de donné ( 16 pour le projecteur 2 ).

PanProjo00 : cette variable contient la valeur du Pan du projecteur pour la position initiale du projecteur qui était déjà initialisé.

TiltProjo00 : cette variable contient la valeur du Tilt du projecteur pour la position initiale du projecteur qui était déjà initialisé.

x0 : cette variable garde en mémoire la position selon l’axe des ordonnés du projecteur (De gauche à droite).

y0 : cette variable garde en mémoire la position selon l’axe des abscisses du projecteur (du haut vers le bas).

Toutes les fonctions que je vais énumérer ont été réglées par des time.sleep (temps en seconde) pour que chaque fonction se fassent bien l’une après l’autre avec une durée bien précise.

La libraire de fonction

Pour chaque fonction on pourra choisir quel projecteur effectuera la tâche grâce à la variable « choix Projo » :

Choix Projo Projecteur
0 Droite
1 Gauche
2 Droite et Gauche

 

Fonction allumer/éteindre projecteurs :

FctProjForNAO_v3.allumeProjo(channels,ip,OP0,OP1,choixProjo) :Cette fonction allume le ou les projecteur(s).

FctProjForNAO_v3.eteindProjo(channels,ip,OP0,OP1,choixProjo) :Cette fonction éteint le ou les projecteur(s).

 

Fonction MiseAuNet :

FctProjForNAO_v3.MiseAuNet(channels,ip,OP0,OP1,choixNet,choixProjo):

Cette fonction permet de choisir la netteté, il faut changer la variable choixNet avec la valeur correspondante.

ChoixNet Distance pour la netteté
De 0 à 255 De l’infini à deux mètres.

 

Fonction couleur :

FctProjForNAO_v3.couleur(channels,ip,OP0,OP1,choixCouleur,choixProjo) :

Cette fonction permet de choisir la couleur, il faut changer la variable choixCouleur avec le numéro correspondant.

 

ChoixCouleur couleur
1 Blanc
2 Beige
3 Jaune
4 Cyan
5 Rose
6 Vert Clair
7 Violet
8 Rouge
9 Magenta
10 Bleu
11 Orange
12 Vert Foncé
13 Mauve
14 Blanc

 

Fonction déplacement des projecteurs :

FctProjForNAO_v3.bougeProjo(channels,ip,x0,y0,PanProjo00,TiltProjo00,OP0,OP1,pas,vitesseSec,x1,y1,choixProjo) :

Cette fonction permet de déplacer les projecteurs à l’endroit où on le souhaite en fonction du temps.

On peut modifier différentes variables dans cette fonction:

Pas vitesseSec x1 y1
Le nombre d’étapes pour aller à l’endroit souhaité Le temps en secondes pour aller à l’endroit souhaité Coordonnées x de la destination (gauche à droite) en mètre Coordonnées y de la destination (du haut vers le bas) en mètre

 

Vous devez les modifier en fonction des coordonnées de base qui sont intégrés par la fonction :
fonctionProjecteur1.bougeProjo(channels,ip,x0,y0,PanProjo00,TiltProjo00,OP0,OP1,10,1.0,x0[1],y0[1],2) ##projo 1 position départ

fonctionProjecteur1.bougeProjo(channels,ip,x0,y0,PanProjo00,TiltProjo00,OP0,OP1,10,1.0,0.9,1.3,0) ##projo 0 position départ

avec x0=[0.9,1.3] ##[projo droite,projo gauche]

y0=[1.3,1.6] ##[projo droite,projo gauche]

Fonction cercle :

FctProjForNAO_v3.dessineCercle(ip,channels,x0,y0,PanProjo00,TiltProjo00,OP0,OP1,rayon,pas,nombreTour,vitesseSec,choixProjo)

Cette fonction permet de dessiner un cercle avec le(s) projecteur(s)

Pas rayon nombreTour vitesseSec
Nombre d’étapes pour faire un tour. Rayon du cercle en mètre Nombre de tours Vitesse pour réaliser le nombre de tour que vous avez choisi (en seconde)

 

Fonction Gobo :

FctProjForNAO_v3.Gobo(channels,ip,OP0,OP1,choixGobo,RotationTremblement,vitesseTremblement,vitesseRotation,choixProjo)

 

Cette fonction permet de choisir le gobo, il faut changer la variable choixGobo avec le numéro correspondant.

ChoixGobo Motif
1 Rien
2 Eclipse
3 GEII-Barre
4 Ventilateur
5 Ying-Yang
6 Triangle-GEII
7 Cratère
8 Hyptonique

 

On peut ici observer les différent motifs.

geii

On peut aussi modifier d’autres variables pour faire tourner ou trembler les gobos en changeant les variables RotationTremblement et vitesseRotation, vitesseTremblement

RotationTremblement Mouvement vitesseRotation vitesseTremblement
0 Fixe
1 Rotation

3-127 de lent à rapide dans les sens des aiguilles d’une montre.

128-252 lent à rapide dans les sens inverses des aiguilles d’une montre

 

2 Tremblement 1-14 de lent à rapide

Le logiciel Spyder

Pour lancer le programme que vous avez réalisé en python pour faire fonctionner les projecteurs avec les différentes fonction réalisées, vous avez juste a appuyez sur f5 ou allez dans exécution et faire run. À chaque fois que le programme sera fini vous devrez fermer la console qui est active et en rouvrir une autre sinon le programme se lancera en boucle. La console permet de voir si le programme est bien en train de fonctionner sinon elle indique les différentes erreurs sur votre programme.

geii

Sur cette capture de spyder on voit à gauche le programme et en bas a droite la console

Ce logiciel a été utilisé pour la mise au point du programmme qui au final serra lancé par le nao via chorégraphe.

Le protocole de communication

La communication entre le projecteur et le robot NAO sert sert a une synchronisation entre la musique entre le robot NAO et le projecteur ce qui arrive souvent quand on lance simultanément les 2 programmes de façon distincte (NAO avec le logiciel chorégraphe et les projecteurs avec spyder), c’est pour cela qu’on s’est penché vers le coté communication pour ne plus rencontrer ce problème.

Le schéma ci dessous explique les différents interfaces traversés pour la communication entre les deux éléments du projet.

DMx

Nous avons décidé que le robot NAO envoiera les ordres aux projecteurs c’est pour cela qu’on travaillera dans le logiciel chorégraphe.

Tout d’abord il faut réussir a envoyer un fichier python vers chorégraphe car les fonction de base définies par les projecteurs sont dans FctProjForNAO_v3 et pour cela il fallait importer un fichier python vers chorégraphe.

Voici la technique qu’on a utilisée pour faire cela :

geii

Il faut mettre le fichier FctProjForNAO_v3 dans behavior.xar sinon cela ne marchera pas car dans la photo que vous voyez ci-dessus il y a écrit getBehaviorPath(self.behaviorId)) c’est à dire les fichier qui sont dans behavior.xar. Pour cela vous allez cliquer sur la flèche + et import files et prendre FctProjForNAO_v3 puis le glisser dans behavior.xar

geii

geii

Après avoir fait cela vous devrez créer une boite python dans chorégraphe pour cela on ira dans le logiciel chorégraphe et on cherchera la boite python qui sera dans la libraire des boxs en bas a gauche (boite la plus en bas sur la capture).

 

 

Puis taper les différentes fonctions que vous avez utilisées avec le logiciel spyder dans les boites python. comme on peut le voir sur la capture ci dessous

 

geii

Conseil: ne pas mettre les fonctions qu’il y avait au début des programmes oule protocole art-net était défini (le laisser que dans la fonction de base avec les projecteurs) et non celles où il y a les différentes étapes de votre chorégraphie. (photo ci-dessous)

geii

Il faut se servir des keyframes de la timeline dans chorégraphe pour que tout se lance à l’endroit prévu selon votre chorégraphie pour réaliser une bonne synchronisation entre le robot NAO et le projecteur.

geii

On observer donc sur cette capture le travail de synchronisation. Les blocs de chorégraphie situés tout en haut dans la timeline blanche indiquent les différents mouvement a chaque seconde (pour le rythme on choisira le nombre de FPS [Frames per second / images par secondes] que le robot lira). En dessous on voit les différentes keyframes contenant les fonctions. On peut ici observer la transition avec le prisme qui est ouverte dans la timeline, c’est la première fonction de la chorégraphie.

Une fois ce travail de synchronisation terminé on obtient une chorégraphie synchronisée avec les projecteurs, il ne reste plus qu’à lancer le programme et regarder NAO enflammer le dancefloor.

 

Gestion de Projet

Bete a corne

Nous pouvons observer la bête a corne, qui résume le projet de manière condensée, en effet elle contient les 3 principales informations , le client qui est l’IUT de Mulhouse, les personnes touchées par le projet , c’est a dire les futurs étudiant et également l’intérêt du projet qui est de montrer notre savoir-faire de manière attirante sympathique et non « scolaire » afin d’attirer les futurs étudiants dans notre filière.

Planification

planification

GANTT

Comme on peut le voir ci dessus la prise en main des logiciels et du serveur a été assez rapide, mais la chorégraphie et la fonction de contrôle des projecteurs ont pris une semaine. Quand a la fonction de communication Nao-Projecteurs, c’était la plus grande partie du projet avec presque 4 semaines de travail .L’entretien du site s’est fait sur toute la durée du projet.Le tournage est prévu après les vacances d’avril il se fera sur une soirée, s’en suivra du montage. La musique elle, a été rapidement choisie dès les premières séances.

Vidéo & Montage

Grâce aux enseignants chargés du projet nous avons pu rester dans la salle B19 jusqu’à 21:30 afin de tourner les différents plans avec la camera fournie par ces derniers que nous remercions et de profiter d’une luminosité plus sombre.

Après cela nous avons pu monter les differentes prises de vues et en faire un vidéo tout public grâce au logiciel windows movie maker qui est assez simple d’utilisation,  le montage a été réalisé en cinq heures.

Au final la vidéo a été convertie au format mp4 puis mise sur YouTube , elle est disponible ci dessous

Perspectives

  • Nous étudions une éventuelle Synchronisation entre deux robots Nao

Bilan

Pendant la durée du projet, nous avons rencontré plein de problèmes que nous avons réussi a résoudre concernant les projecteurs , le robot NAO et la communication entre le robot / projecteurs.

Au niveau des projecteurs, il y a eu des problèmes, par exemple l’alimentation du serveur DMX avec une tension de 7 Volts ou réussir a entrer plusieurs variables ou calculer des coordonnées pour qu’on obtienne des choses précises mais au final nous y sommes parvenus. Cela nous a permis de comprendre comment fonctionne les projecteurs et le logiciel spyder en codant en python ce qui était très intuitif.

Du point de vue robot NAO, il y a eu des problèmes comme faire des mouvements précis ou la prise en main du logiciel mais nous avons réussi a surmonter ses problèmes pour montrer que le robot NAO est très proche d’un humain. Cela nous a permis de comprendre le logiciel chorégraphe au niveau mouvement et synchronisation.

La communication entre le robot NAO et les projecteurs est l’endroit ou nous avons eu le plus de problèmes dus à la création la class ArtNet dans les 2 programmes utilisés pour faire fonctionner les 2 projecteurs mais le robot NAO ne comprenait pas la variable donc nous l’avons supprimée dans un des 2 programmes ce qui a permis d’enfin réussir a faire la communication entre le robot NAO et les projecteurs. Cela nous a poussé a la reflexion afin de surmonter ces difficultés et nous a permis d’approfondir a la fois nos connaissances de Nao, des projecteurs et du protocole.

Conclusion

Tout au long de ce Projet nous avons travaillé afin de produire une chorégraphie synchronisée et d’atteindre l’objectif quand a la communication Nao / MAC250 , cela n’as pas toujours été facile mais finalement nous y sommes parvenus, lors des portes ouvertes le robot avait déjà charmé le public alors que le programme était en construction, maintenant qu’il est finalisé il ne laisse plus qu’à laisser NAO opérer et tenter de séduire les futurs étudiants.

Bibliographie

https://community.aldebaran.com/

Documentation constructeur : NAO, MAC250 Krypton

 

Antoine Schellhorn, Loann Dreyer

GEII MULHOUSE 1A 2015-2016

logo-uha-iut