Robots serveurs parisiens : Différence entre versions
(→Évitement des obstacles) |
|||
| Ligne 74 : | Ligne 74 : | ||
===Etape 1 : titre étape 1=== | ===Etape 1 : titre étape 1=== | ||
(Façon tuto) | (Façon tuto) | ||
| + | [[Fichier:WavFilePlayer.ino|vignette|Emission d'une bande audio lors du dépassement d'un seuil sonore]] | ||
| + | |||
===Etape 2 : titre étape 2=== | ===Etape 2 : titre étape 2=== | ||
==Robot opérationnel== | ==Robot opérationnel== | ||
Version du 9 mai 2016 à 16:25
Lors de l'option robotique de deuxième année de Télécom Saint Etienne, nous devons réaliser quatre robots. Le projet a été pensé par les professeurs d'électronique de notre école, M. Eric Verney et M. Thierry Bru, en association avec FABLABouffe. Il s'agit de robots serveurs parisiens, en effet c'est en se basant sur le comportement ingrat des serveurs parisiens que l'idée de ces quatre scénarios est née. Le premier robot est Pépé le porte-plateaux, le deuxième Le Gueulard, le troisième Chaud-Devant et enfin le dernier, Hermès. La description de chacun d'eux est donnée postérieurement.
Le workshop se tiendra sur deux semaines à la Préfabrique de l'innovation à l'ancienne manufacture de Saint Etienne, voir plan d'accès
Sommaire
Partie commune aux robots
Déplacement du robot
- Dans un premier temps on a installé l'environnement Teensy sous Arduino. Puis il suffit de compiler et téléverser le programme suivant :
- Code Teensy asservissement vitesse moteurs ( en K ) : Fichier:TeensyVSL298AsservissementVitesse.zip
A ce stade, le robot fonctionne par l'intermédiaire d'ordres donnés directement via le moniteur série.
- Carte Robot Orange à base de L298 et Teensy : Fichier:PCB Project TeensyRobotL298N Orange.PDF
Suiveur de ligne
Pour notre projet, nos robots doivent suivre une ligne noire tracée au sol. Pour effectuer cette action, on choisit d'utiliser deux capteurs "suiveurs de ligne" QRE1113 composés chacun d'un émetteur IR et d'un photo-transistor.
Après plusieurs tests et ajustements du code Arduino, on arrive à un résultat assez concluant que l'on vous présente dans cette vidéo :
- Code Arduino pour le suiveur de ligne : Fichier:Suiveur de ligne.zip
Évitement des obstacles
- On utilisera pour réaliser cette fonction un capteur à ultrasons SRF08.
- Ce capteur est positionné au millieu et à l'avant du robot et a un angle de détection de 55°.
- le capteur est branché sur le bus I2C de la carte Teensy de commande moteurs (pins 18 (SDA) et 19 (SCL)).
- Capteur à ultrasons SRF08 : Fichier:Capteur SRF08.docx
- Code pour l'arrêt du robot inclus dans le code de suiveur de ligne : Fichier:Suiveur de ligne et arret obstacle.rar
Liaison Wifi
Datasheet synthétique de l'ESP8266 https://cdn.sparkfun.com/datasheets/Wireless/WiFi/ESP8266ModuleV1.pdf
Code Arduino pour communiquer avec l'ESP8266 :
Scénario 1 : Pépé le porte plateau
Présentation du scénario
Ce robot a pour but d’apporter quelque chose à une source de chaleur.
L’idée première et idéale serait que ce robot dispose d’un plateau avec un capteur ultrason. Celui-ci, à son point de départ, recevrait un objet. Le capteur le détecterait alors et il parcourrait la ligne noire formant son parcours à la recherche d’une source de chaleur, donc d’une personne, afin qu’elle lui prenne l’objet. Le robot ne détectant alors plus d’objet sur son plateau, retournerait à son point de départ dans l’attente d’un nouvel objet à servir.
Pour faire fonctionner ce robot nous allons utiliser une seule carte Arduino Teensy responsable de la commande des moteurs, du suivi de ligne, de la détection d'obstacle par capteurs ultrasons et du suivi de personnes par capteur Grid-Eye.
Documentation technique
Etapes de réalisation
Etape 1 : Mise en place du Grid Eye
- On suppose dans un premier temps que l'environnement Teensy est opérationnel sous Arduino.
- Il faut compiler et téléverser le code dédié au Grid Eye : Fichier:Grid-eye.zip
- Ensuite, il faut procéder aux branchements suivant :
Vérifiez bien que le logiciel Arduino détecte la carte Teensy sur le bon PORT
- Si vous le souhaitez vous pouvez visualiser les données directement sur le moniteur série.
- Vous pouvez aussi retrouver l'ensemble de cette étape sur le lien Github suivant : https://github.com/racoon-tse/GridEye-Teensy3.1.git
Etape 2 : Test avec l'interface graphique (GUI)
Etape 3 : Implémentation sur le robot
Robot opérationnel
Scénario 2 : Le Gueulard
Présentation du scénario
Ce robot a pour objectif de faire taire les gens en leur « gueulant » dessus.
Le robot se déplacera comme les autres le long du parcours tracé avec une ligne noire. Ses capteurs, au nombre de deux, seront placés sur les côtés. Lorsque le signal sonore dépassera un seuil donné, le robot se stoppera alors et se dirigera vers la source de bruit. Une phrase préenregistrée sera émise via les haut-parleurs afin de faire taire le perturbateur. Il ne retournera alors sur son parcours que lorsque le bruit sera en dessous du seuil.
Nous utiliserons deux cartes Arduino Teensy pour la réalisation de ce robot : Une responsable de la commande moteurs, du suivi de ligne, de la détection d'obstacles par capteurs ultrasons et de la détection sonore (détection de bruit) et la deuxième responsable de l'envoi de messages audio avec une audio-cape Arduino.
Documentation technique
- Capteur sonore SEN 12642 : Fichier:Résumé datasheet.docx
Etapes de réalisation
Etape 1 : titre étape 1
(Façon tuto)
Etape 2 : titre étape 2
Robot opérationnel
Scénario 3 : Chaud-Devant
Présentation du scénario
Le robot parisien "Chaud-Devant" est un robot suiveur de ligne qui va suivre un itinéraire tracé sur le sol jusqu'à ce qu'il rencontre un obstacle. Le robot va alors s'arrêter et diffuser des messages audios pour qu'on lui libère le passage. Une fois le passage libéré, "Chaud-Devant" reprend sa route.
Ce robot, de la même façon que le robot Gueulard, aura besoin de deux cartes Arduino Teensy pour fonctionner : La première pour gérer la commande des moteurs, le suivi de ligne et la détection d'obstacle par capteurs ultrasons et une deuxième pour l'envoi de messages audio grâce à une audio-cape.
Documentation technique
Partie Motrice
Le déplacement du robot se base sur le code arduino présent au début du wiki. Les capteurs pour la détection de ligne sont des QRE1113.
Datasheet QRE1113 : https://www.sparkfun.com/datasheets/Robotics/QR_QRE1113.GR.pdf
Partie Audio
Pour la partie audio, la solution retenue pour le moment est l'utilisation d'une teensy munie d'un shield audio pour la lecture et la diffusion du message audio. Le message audio, de type .wav, sera enregistré dans une carte SD.
Code pour lancer un message audio préalablement enregistré dans une carte SD (adapté pour le shield audio) : Fichier:Teensy audio.ino.zip
Code pour lancer différents messages audios depuis la carte SD : Fichier:WavFilePlayer.ino.zip
Etapes de réalisation
Montage global
Notre robot suiveur de ligne est composé de deux Teensy 3.2, un shield audio, 2 capteurs suiveur de ligne, 2 télémètres à ultrasons et d'un petit haut-parleur. Les datasheets des différents capteurs ainsi que les sketchs arduino sont disponibles dans la partie "Documentation technique".
Une Teensy va commander le robot et être connecté à tous les capteurs, c'est sur elle que l'on va uploader le programme servant à asservir les moteurs et qui traitera les différentes données communiquées par les capteurs. La deuxième Teensy sera munie du shield audio et connecté à la carte SD contentant les divers messages vocaux. La Teensy "moteur" va relayer l'information des télémètres via un port analogique vers la Teensy "audio", cette information permettra de piloter la diffusion des messages audios.
Etape 1 : Mise en place des capteurs ultrasons
Tout d'abord il est nécessaire de mettre en place vos capteurs ultrasons afin que votre robot puisse détecter un objet se trouvant devant lui. Les capteurs doivent être relié à l'aide d'une liaison i2c à la teensy. (Détails telemetres à venir)
Pour relayer l'information des télémètres, on va intégrer dans le code un analogWrite(pinSortie, 255), qui permet d'envoyer un signal analogique en direction de la teensy audio. On rajoute une boucle if() pour que la teensy moteur n'envoie le signal que si l'objet est suffisamment près.
Etape 2 : Emission du message vocal
Pour cette partie, il est nécessaire d'avoir la librairie arduino "Audio", qui est normalement téléchargée lors de l'installation du logiciel Teensyduino cependant il peut arriver qu'elle ne se soit pas bien installée. Copiez aussi quelques fichiers .wav sur votre carte sd.
Une fois la Teensy connectée au shield audio, téléversez le code arduino "Teensy audio.ino" et testez la lecture d'un unique fichier .wav ainsi que la connection à la carte SD. Si des erreurs surviennent, cela peut être dû à un problème lors du chargement des librairies Audio et SD ou si le micro-contrôleur est branché dans le mauvais sens. Votre fichier .wav doit durer plus de quelques secondes (au moins 5s) sinon il n'a pas le temps d'être traité par la teensy. Si tout fonctionne, téléversez le sketch "WavFilePlayer.ino" qui permet de lire différents fichiers .wav (mais pas de façon simultanée). L'insertion de votre code dans des boucles if() permet de ne diffuser vos messages vocaux que si la teensy audio reçoit un signal de la teensy moteur.
Robot opérationnel
Scénario 4 : Hermès
Présentation du scénario
Ce dernier robot est un robot porteur de messages.
Le robot, tout comme les autres, se déplacera le long du parcours avec dans celui-ci un point de départ. Les clients peuvent enregistrer un son et le charger via internet afin que le robot délivre ce message. Le robot parcourrait alors la ligne noire formant son parcours à la recherche d’une source de chaleur, donc une personne, afin de lui délivrer le message. Il repartirait alors sur la ligne et retournerait à son point de départ. On peut imaginer aussi que les clients passent leur commande via le robot et que celui-ci délivre leur message au point de départ étant les cuisines.
Nous allons donc avoir besoin de trois cartes pour ce robot : Une carte Raspberry Pi1 qui va se charger de la partie communication internet (implémentation d'un serveur web) et deux cartes Arduino Teensy : Une pour la commande moteurs, le suivi de ligne, la detection d'obstacle par capteurs ultrasons et le suivi de personnes par capteur Grid-Eye et une pour l'enregistrement et l’émission de messages audio via une audio-cape Arduino.
Documentation technique
Etapes de réalisation
Etape 1 : titre étape 1
(Façon tuto)
Etape 2 : titre étape 2
Robot opérationnel
- Pour l'organisation :
Après en avoir discuté un peu avec M. Verney, il faudrait séparer les différentes fonctions des robots. Pour cela, il propose d'utiliser plusieurs cartes.
Notre première idée à été de séparer le robot en 3 "parties" :
- Une partie acquisition/activation de la tache (Interaction entre les capteurs et une première carte et/ou interaction avec un actionneur)
- Une partie traitement et gestion (Carte qui récupère et traite les données pour ensuite donner des ordres)
- Une partie commande moteur (Carte Teensy déjà sur le robot)
Cette arborescence est prévu pour éviter les problèmes de cadencement entre les commandes moteurs, l'acquisition et le traitement des données. En plus du fait de permettre d'être plutôt modulable et de ne pas devoir ré-adapter chaque robot en fonction de ce qu'il doit faire.
- Pour le Wiki :
On remplira le Wiki au fur et à mesure, on pensait faire un code couleur en fonction des groupes et donc des différentes taches avec une partie (une couleur pourquoi pas) qui serait réservé à la motorisation (Déplacement et évitement). En plus, le fonctionnement du wiki de l'année dernière nous semblait vraiment sympa (Avec une gestion au jour le jour), et donc on pensait reprendre la même organisation.
Évidement, tout est ouvert à discussion, n'hésitez pas à venir me frapper pour me dire que ça va pas du tout. :)
PS : Les robots vaincront !
Références
Projets du 1er Fablabouffe
- Restube