Robots danseurs

De Learning Lab Environnements Connectés
Sauter à la navigation Sauter à la recherche

Projet du module Robots Communicants de Telecom Saint-Etienne 2018/2019.

Sujet

L'utilisateur doit pouvoir commander un robot "maître" à distance au moyen d'une baguette. Deux robots esclaves doivent, en temps réel, imiter les mouvements du maître.

Objectif du projet

Créer une "baguette magique" permettant de donner des ordres de façon fluide et intuitive à un robot-maître qui doit ensuite transmettre les ordres qu'il reçoit à un couple de robot-esclaves

Diagrammes fonctionnels

Diagramme fonctionnel d'odre 1
Diagramme fonctionnel d'odre 2

Spécifications fonctionnelles

Spécifications fonctionnelles
Fonction principale Diriger des robots avec une baguette
Fonction secondaire 1 Établir une communication entre les robots
Fonction secondaire 2 Empêcher les ordres non voulus
Fonction secondaire 3 Implémenter un feedback physique à la baguette
Fonction secondaire 4 Implémenter un feedback lumineux à la baguette
Fonction secondaire 5 Implémenter un feedback lumineux aux robots
Fonction secondaire 6 Implémenter un feedback sonore aux robots
Fonction secondaire 7 Créer des chorégraphies

La Baguette

La baguette sert à contrôler le robot maître par le biais de ses mouvements.

Elle doit donc pouvoir:

  • Mesurer les amplitudes et directions de ses accélérations linéaire et rotative
  • Traiter l'information pour en faire des ordres compréhensible par le robot-maître
  • Pouvoir communiquer avec le robot-maître via le protocole BLE
  • Donner un feedback physique à l'aide d'un vibro-moteur placé au niveau de la poignée de la baguette
  • Donner un feedback visuel à l'aide d'un ruban de LEDS fixé sur la baguette

Composants électroniques utilisés

Carte de contrôle

ESP32 Thing

La carte Sparkfun esp32 thing a été retenu en raison de sa communication BLE malgré sa grande taille comparé à la carte Arduino Teensy.

Cette carte est alimentée via une batterie de 3.6V et 600mAh.

La carte de contrôle et l'appareil de mesure communiquent ensemble par communication I2C.








Appareil de mesure

Gyromètre retenu : Pololu AltMU-10 v4 (avec ses axes)

Le type de capteur retenu est le gyromètre, il permet de mesurer les accélérations linéaires et angulaires des trois directions de l'espace.

Deux gyromètres sont en compétition, la Pololu AltMU-10 v4 et le Grove IMU 10DOF v1.1


Critères de choix retenus (triés par ordre d'importance):

  1. la fiabilité du capteur (absence de valeurs aberrantes)
  2. la taille (il doit être facile à intégrer sur la baguette)
  3. la facilité de programmation
  4. la précision (dans le cas où la vitesse de la baguette serve au pilotage du robot)

Finalement c'est le Pololu qui a été retenu en raison de sa très petite taille par rapport au capteur Grove.

Bouton poussoir

Bouton poussoir retenu

Nous avons fait le choix d'ajouter un bouton poussoir sur notre baguette pour que celle-ci sache quand est-ce que nous voulons envoyer des ordres ou pas. Ce qui permettra à l'utilisateur de pouvoir garder la baguette en main sans devoir faire attention à ses mouvements ou sans devoir éteindre la baguette lorsque nous ne voulons pas envoyer d'ordre.

Ce bouton nous permettra également de déterminer dans quel mode nous voulons guider le robot maître (qui sera expliqué plus bas).



Vibreur

Vibro-moteur retenu : grove vibro moteur 1.3

Un vibreur a été ajouté à la baguette pour avoir un retour sur le bon envoie de l'instruction. Attention, la vibration est seulement ici pour dire qu'une instruction a été envoyée avec succès et non pas pour notifier sa bonne réception sur le robot maître. Par conséquent, il se peut que la baguette vibre sans pour autant que le robot maître interprète correctement les ordres et les réalise.






Ruban de led

Ruban de leds retenu : NeoPixel ADA1507 RGB 1m 144 leds

Un ruban de LED est enroulé autour de la baguette pour coller au mieux au coté ludique des robots.

Ses fonctionnalités sont :

Dans le mode manuel :

  • Prendre une couleur différente pour chaque ordre
  • Plus l'ordre est maintenu plus le nombre de led illuminées augmente
  • Si on envoie un ordre différent, les led "redescendent" rapidement avant de "remonter" dans une autre couleur
  • Si le bouton est relâché les led "redescendent" et sont par conséquent toutes éteintes.

Dans le mode automatique :

  • Eclairage en arc-en-ciel pour la chorégraphie 1
  • Eclairage fluide avec des changements de couleur pour la chorégraphie 2


La bande de led est alimentée via une batterie de 5V différente de la batterie alimentant l'ESP32.

Les différents modes

Mode manuel

Ce mode permet de synchroniser les robots aux mouvements de la baguette. C'est le mode utilisé par défaut lorsqu'on alimente la baguette.

La liste des ordres est la suivante (s'enclenche en maintenant appuyé le bouton poussoir pendant l'action en cours) :

  • Coup vers l'avant: fait avancer le robot
  • Coup vers l'arrière: fait reculer le robot
  • Coup vers la droite: fait aller le robot vers la droite
  • Coup vers la gauche: fait aller le robot vers la gauche
  • Rotation droite: fait tourner le robot dans le sens horaire
  • Rotation gauche: fait tourner le robot dans le sens trigonométrique

Une fois que le bouton poussoir est relâché, cela sera interpréter comme un stop et les robots devront s'arrêter.

Mode automatique

Ce mode permet de lancer une chorégraphie sans tenir compte des mouvements de la baguette. Celui-ci est activé à l'aide d'une combinaison de mouvements et d'appuis sur le bouton poussoir.

Nous avons la possibilité de lancer deux chorégraphies au choix :

  • Chorégraphie 1 : Coup vers la gauche de la baguette + appui court sur le BP
  • Chorégraphie 2 : Coup vers la droite de la baguette + appui court sur le BP

Afin d'éviter qu'une chorégraphie se répète en boucle, un simple appui sur le bouton poussoir arrêtera la chorégraphie une fois celle-ci terminée.

Pour les deux chorégraphies, le robot maître lancera une musique en même temps (voir plus bas).

Rendu final de la baguette magique

Conception

La baguette modélisée sous Solid


La baguette a été modélisée sur SolidWorks puis imprimée en 3D.


Fabrication/Assemblage

La baguette vue en coupe avec les composants


La baguette


En ce qui concerne les différents programmes (tests + final) et les schémas de câblage, se rendre sur : [Documentation technique]

Le Robot-Maître

Photo du robot-maître

Composants

  • Moteur: Mabuchi rk-370-CA
  • Carte de contrôle: Arduino Teensy et Sparkfun esp32 communicant ensemble par UART
  • Interface de puissance: Carte fournie par TSE
  • Batterie : 8 piles de 2500mAh (soit 20Ah en tout) de 5V
  • Régulateur de tension : Traco Power

Programmation

Le code des robots sera séparé en trois parties distinctes :

  • la commande du robot
  • la communication

Des interruptions sont utilisées par le programme pour récupérer les informations générées par les roues codeuse afin de soulager le processeur.

La commande du robot

Schéma de communication global

Les moteurs sont pilotés via différentes fonctions:

  • Avancer
  • Reculer
  • Aller à droite
  • Aller à gauche
  • Aller en biais en haut à droite
  • Aller en biais en haut à gauche
  • Aller en biais en bas à droite
  • Aller en biais en bas à gauche
  • Rotation dans le sens trigonométrique
  • Rotation dans le sens anti trigonométrique

La communication

Le robot-maître reçoit ses ordres de la baguette par bluetooth.

La communication avec les robot-esclaves se fait via une communication Wi-Fi, le robot-maître crée un serveur auquel se connecte les robot-esclaves pour récupérer leurs ordres.

Les Robot-Esclaves

Photo d'un des robot-esclaves

Composants

  • Moteur: Hennkwell HG37D670WE12-052
  • Carte de contrôle: Arduino Teensy
  • Interface de puissance: Carte fournie par TSE
  • Batterie : 8 piles de 2500mAh (soit 20Ah en tout) de 5V

Programmation

Le programme des robot-esclaves est exactement le même que celui du robot-maître, à la différence près qu'il a été adapté pour fonctionner avec 3 roues et non quatre.

Les robot-esclaves reçoivent exactement les mêmes ordres que ceux reçu par le robot-maître étant donné que le programme est le même pour les 3 robots.

Amélioration à apporter

La baguette

- Trouver un moyen plus optimal d'acquérir les mouvements pour effectuer des gestes plus souples (avoir un meilleur algorithme ou mieux exploiter le capteur en jouant sur l'accéléromètre et le gyroscope).

- Utiliser les 2 cœurs présents sur l'ESP32 pour contrôler d'un côté les jeux de lumières et de l'autre, la gestion d'acquisition, traitement de données, envoie BLE et vibration de la baguette. Cette optimisation permettrait d'avoir un algorithme plus soigné.

- Avoir un feedback visuel au niveau de la télécommande sur les instructions envoyées par la baguette. Exemple : écran LCD qui afficherait les instructions envoyées par BLE.

- Trouver le moyen d'allumer ou éteindre facilement la baguette. Egalement penser à avoir un voyant pour savoir dans quel état est la baguette (on ou off).

- Réduire le temps de latence entre l'envoie des mouvements baguette et l'exécution des mouvements du robot maître.

- Optimiser l'algorithme pour activer le mode automatique ou manuel. En effet, la baguette bascule en mode manuel qu'au bout d'1s environ après appuie et maintien du bouton. Ce qui empêche toute acquisition durant cette temporisation (ne dérange pas dans l'utilisation mais requiert tout de même une optimisation).

- Réduire l'épaisseur de la baguette et l'allonger pour correspondre au mieux au design d'une baguette.

Robot maître ou esclave et communication

- Réduire le nombre des batteries sur les robots (maître et esclave).

- Améliorer l'asservissement des robots.

- Améliorer le mode automatique en implémentant des chorégraphies qui vont avec les musiques.

- Améliorer l'algorithme de mode automatique pour pouvoir interrompre le robot au milieu de sa chorégraphie (à l'heure actuel, le robot termine sa chorégraphie et s'arrête seulement s'il a reçu l'ordre STOP, sinon il continue de danser).

- Mieux gérer le système de musique pour qu'elle se joue que pendant le chorégraphie.

- Implémenter une fonction de "calibrage" qui mettrait le maître dans une certaine position et les esclaves derrière lui (formant ainsi un triangle par exemple). Cette fonction configurera les robots de manière "orchestré" qui permettra un contrôle du robot maître et de ses esclaves cohérent.

- Calibrer les vitesses des robots pour qu'elles soient compatibles lors de leur contrôle.

- Avoir le même nombre de roues motrices sur chaque robot. On a rencontré un problème sur les robots esclaves qui n'ont pas le même comportement que le robot maître pour certaines directions (dû au nombre de roues motrices).

- Réduire le temps de latence de l'envoie des mouvements du robot maître au robot esclave pour plus de cohérence.

- Transmettre l'ordre de chorégraphie du robot maître aux robots esclaves pour que tout le monde danse. Penser à la synchronisation de chaque robot pour avoir une danse cohérente.

Références externes

[Documentation technique]