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.
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.
Le Cahier des Charges
Les fonctions du projet
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
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
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.
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.
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 Projecteurs
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.
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.
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.
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 :
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
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
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)
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.
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
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
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