Robots danseurs : Différence entre versions
(→Les différents modes) |
|||
| Ligne 103 : | Ligne 103 : | ||
*Rotation droite: fait tourner le robot dans le sens horaire | *Rotation droite: fait tourner le robot dans le sens horaire | ||
*Rotation gauche: fait tourner le robot dans le sens trigonométrique | *Rotation gauche: fait tourner le robot dans le sens trigonométrique | ||
| + | |||
| + | === 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 | ||
== Programmation == | == Programmation == | ||
Version du 20 mai 2019 à 09:26
Projet du module Robots Communicants de Telecom Saint-Etienne 2018/2019.
Sommaire
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
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
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
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):
- la fiabilité du capteur (absence de valeurs aberrantes)
- la taille (il doit être facile à intégrer sur la baguette)
- la facilité de programmation
- 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
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
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.
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 :
- 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
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
Programmation
Fonctionnement
La baguette a été programmée de sorte à contrôler le robot maître manuellement ou automatiquement.
Le mode manuel s'enclenche lorsque l'utilisateur maintient le bouton de la baguette plus d'une demi-seconde environ. Lorsque celui-ci se retrouve dans le mode manuel, il aura la possibilité de contrôler le robot selon les ordres donnés plus bas. Tant que le bouton est maintenu, le dernier ordre envoyé est « gelé » (c’est-à-dire que donner un coup de baguette vers la droite et ne pas envoyer de nouvel ordre va maintenir ce dernier) et il suffit de faire des gestes différents pour envoyer de nouveaux ordres. Le robot maître recevra l'instruction de s'arrêter seulement si l'utilisateur relâche le bouton. Chaque ordre envoyé avec succès sera manifesté par une petite vibration au niveau de la baguette.
Cette fois, si nous voulons que le robot soit en mode automatique (réalisation d'une chorégraphie), il suffit de donner un coup de baguette vers la gauche (chorée 1) ou la droite (chorée 2) tout en ayant le bouton relâché. Cette action aura pour effet de retenir le dernier mouvement (seulement gauche ou droite pris en compte). Un appuie très bref sur le bouton va permettre à la baguette de regarder si l'utilisateur a mis en mémoire une des deux chorégraphies connues. Si c'est le cas, la baguette enverra au robot maître, l'instruction adéquate pour que celui-ci se lance dans une chorégraphie. Dans le cas contraire, on enverra tout simplement un stop au robot maître pour qu'il ne fasse rien.
Une fois que le robot s'est élancé dans sa chorégraphie, la baguette se remet à un état « neutre » (instruction stop préchargée). Pour stopper la chorégraphie, il suffira donc d'appuyer brièvement sur le bouton pour envoyer l'instruction stop ou alors de lui envoyer des instructions en mode manuel comme décrit plus haut. Actuellement, le robot prend le temps de terminer sa chorégraphie avant de s'arrêter ou avant d'effectuer les commandes manuelles envoyées. Dans le cas où le robot s'est élancé dans sa chorégraphie et qu'il ne reçoit pas de nouvel ordre, il continue sa chorégraphie en boucle.
La baguette traite directement l'information issue de ses capteurs, les interprète et les transforme en ordre qui seront directement transmis au robot-maître.
Aspect esthétique
Fabrication
La baguette a été modélisé sur SolidWorks puis imprimé en 3D.
Décorations supplémentaires
Une bande de LED est enroulé autour de la baguette pour coller au mieux au coté ludique des robots.
Ses fonctionnalités sont:
- Prendre une couleur différente pour chaque ordre
- Plus l'ordre est maintenu plus le nombre de led illuminé 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.
La bande de led est alimentée via une batterie de 5V différente de la batterie alimentant l'ESP32.
Le 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
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
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.