SuiveurRFID2011-1 : Différence entre versions
(→Introduction) |
|||
(16 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
− | + | <br/> | |
+ | == Introduction == | ||
+ | <include nopre noesc src="/home/pedago/ppeip/include/video-RobotSuiveurRFID1-2011-iframe.html" /> | ||
+ | Il s'agit ici de modifier la direction du robot en fonction de la puce RFID au dessus de laquelle il passe. Pour ce faire, le robot est équipé d'un capteur RFID afin de lire les puces et d'une boussole pour de le diriger. Lorsque le robot détectera une carte RFID, celle-ci lui indiquera la direction dans laquelle il doit aller, puis il devra avancer et maintenir son cap afin de tomber sur la carte suivante, et ainsi de suite. | ||
+ | <br/> | ||
+ | <br style="clear: both;"/> | ||
− | [[Image: | + | == La construction du robot == |
− | [[ | + | [[Image:IMG_1277.jpg|Le robot en cours de construction|200px|thumb|left]] |
+ | === La première fabrication === | ||
+ | Il s'agit initialement de construire le robot en y incluant les différents composants nécessaires à notre projet, en particulier le capteur RFID et la boussole. Le but n'était pas de suivre le mode d'emploi fourni par le constructeur, puisque notre robot diffère sur différents points. En effet, nous n'avons par exemple pas besoin d'y intégrer un troisième moteur central. | ||
+ | [[Fichier:Robot-actuel.JPG|Notre robot dans l'état actuel (sans les cables)|200px|thumb|right]] | ||
+ | <br/><br/><br/><br/><br/> | ||
+ | === Les modifications apportées === | ||
+ | Lors de l'essai de la boussole, nous nous sommes rendus compte que notre robot n'effectuait pas la tâche souhaitée. Nous avons d'abord pensé à une erreur de programmation, puis avons fini par penser à un problème matériel. En effet, pour fonctionner la boussole a besoin d'être installée à l'horizontale, or nous l'avions placée à la verticale à côté du capteur RFID. Une fois ce changement effectué, l'installation fonctionnait. | ||
+ | <br/><br/><br/><br/> | ||
+ | |||
+ | == La programmation == | ||
+ | === Les débuts === | ||
+ | [[Fichier:RFID-stop.png|Faire avancer le robot jusqu'à ce qu'il passe sur une carte RFID dont le nom est donné en paramètre|200px|thumb|right]] | ||
+ | Lors de nos premières séances, nous nous sommes d'abord familiarisés avec le logiciel Mindstorms NXT utilisé pour programmer notre robot. Les premiers essais ont eu pour but de faire avancer le robot puis de l'arrêter lorsqu'il passe sur une puce RFID avant de le faire redémarrer quelques secondes plus tard. | ||
+ | |||
+ | Au bout de quelques séances, le programme marchait assez bien, mais il était extrêmement répétitif. En effet, nous avions fait un bloc pour chaque puce : les cartes devaient donc être dans un ordre bien précis, et rien ne changeait dans nos différents blocs si ce n'est le nom de la puce et la plage du cap vers lequel se diriger. Par la suite, et avec le conseil de l'un des professeurs, nous avons donc trouvé plus judicieux de tout réunir en un seul bloc puis de sélectionner la direction grâce au nom de la carte RFID stockée dans une variable. | ||
+ | |||
+ | A noter que pour pouvoir créer notre programmes, nous avons dû ajouter deux modules téléchargés sur internet : celui du lecteur RFID et celui de la boussole. Ils n'étaient pas intégrés par défaut à l'interface. | ||
+ | <br/><br/><br/> | ||
+ | |||
+ | === L'algorithme de programmation === | ||
+ | Faire avancer le robot | ||
+ | <br/> | ||
+ | Boucle infinie | ||
+ | <br/> | ||
+ | Lorsque le capteur détecte une puce RFID, s'arrêter dessus et stocker son nom dans la variable "Texte 1" | ||
+ | <br/> | ||
+ | Comparer la variable "Texte 1" avec les différents noms de puces RFID répertoriés | ||
+ | Selon le nom de la puce, une valeur va être attribuée à la variable "Nombre 1" et une valeur à la variable "plage_bas" | ||
+ | <br/> | ||
+ | Boucle tant que "on ne passe pas au dessus d'une autre puce RFID" | ||
+ | Si le cap actuel est compris dans la plage allant de "Nombre 1" à "plage_bas" alors | ||
+ | Avancer tout droit | ||
+ | Sinon | ||
+ | Si le cap actuel est inférieur à "Nombre 1" alors | ||
+ | Tourner à droite | ||
+ | Sinon | ||
+ | Tourner à gauche | ||
+ | Fin si | ||
+ | Fin si | ||
+ | Fin de la boucle tant que | ||
+ | <br/> | ||
+ | Fin de la boucle infinie | ||
+ | <br/> | ||
+ | {| border="0" | ||
+ | |[[Fichier:Lecture-de-la-puce-RFID-et-comparaison.png|Lecture de la carte RFID, stockage de son nom dans une variable qui sera comparée afin de connaitre la destination à prendre|500px|thumb]] | ||
+ | |[[Fichier:Réorientation.png|Réorientation du robot s'il dévie trop|495px|thumb]] | ||
+ | |} | ||
+ | <br/> | ||
+ | |||
+ | == Vidéo de présentation == | ||
+ | La vidéo est aussi disponible sur Youtube [http://www.youtube.com/watch?v=xNyMOj2-KRY en cliquant ici]. | ||
+ | |||
+ | <include nopre noesc src="/home/pedago/ppeip/include/video-RobotRFID-iframe.html" /> | ||
+ | |||
+ | <br style="clear: both" /> | ||
+ | |||
+ | == Problèmes rencontrés == | ||
+ | [[Fichier:Lecture-d-une-puce-RFID.JPG|Lecture d'une puce RFID|200px|thumb|left]] | ||
+ | <br/> | ||
+ | === Comment passer à coup sûr sur la carte RFID ? === | ||
+ | Lors des premières séances, nos puces RFID étaient petites (de la taille d'une pièce de 2€) et le capteur RFID passait donc rarement dessus, même si le robot était envoyé dans la bonne direction. Pour corriger ce problème, nous avons par la suite pu utiliser des cartes RFID (de la taille d'une carte bleue) : plus fines et occupant une surface bien plus importante, le robot a davantage de chances de passer dessus. | ||
+ | Prochainement, les cartes RFID seront au centre d'un cercle de couleur. Le robot passera forcément sur le cercle de couleur, il n'aura alors plus qu'à trouver la carte RFID au centre de celui-ci. | ||
+ | <br/><br/><br/><br/> | ||
+ | === Réorienter le robot plus efficacement === | ||
+ | Dans nos premiers programmes, le robot tournait toujours dans le même sens lorsqu'il devait se réorienter. Par exemple, lorsqu'il avait dévié de quelques degrés par la droite il récupérait son cap en faisant presque un tour complet en tournant sur lui-même par la droite. Lorsqu'il avait dévié de quelques degrés par la gauche, ceci était cependant la méthode la plus rapide : une fois sur deux la bonne solution. | ||
+ | <br/>Ceci étant assez peu efficace lorsque le robot allait d'une puce à une autre, il a fallu modifier l'algorithme. Désormais, si l'angle est supérieur à l'angle visé le robot tourne à gauche, et s'il est inférieur le robot tourne à droite. | ||
+ | <br/>Un problème persiste tout de même, la situation en 360/0. En effet, si le cap souhaité est de 358° et que la position actuelle du robot est à 2° (seulement 4° d'écart par la droite), le robot va quand même faire près d'un tour sur lui-même puisque 2<358. | ||
+ | <br/><br/> | ||
+ | === Le robot est lent === | ||
+ | Plusieurs personnes ont été étonnées de la lenteur de notre robot, en pensant même à un problème de piles. Ceci est dû au capteur RFID : dans certains cas, il arrive que s'il passe trop vite sur une carte RFID il ne la détecte pas, ce qui est assez problématique. La seule solution que nous avons trouvé est donc de baisser sa vitesse. |
Version actuelle datée du 31 mai 2012 à 16:59
Sommaire
Introduction
Il s'agit ici de modifier la direction du robot en fonction de la puce RFID au dessus de laquelle il passe. Pour ce faire, le robot est équipé d'un capteur RFID afin de lire les puces et d'une boussole pour de le diriger. Lorsque le robot détectera une carte RFID, celle-ci lui indiquera la direction dans laquelle il doit aller, puis il devra avancer et maintenir son cap afin de tomber sur la carte suivante, et ainsi de suite.
La construction du robot
La première fabrication
Il s'agit initialement de construire le robot en y incluant les différents composants nécessaires à notre projet, en particulier le capteur RFID et la boussole. Le but n'était pas de suivre le mode d'emploi fourni par le constructeur, puisque notre robot diffère sur différents points. En effet, nous n'avons par exemple pas besoin d'y intégrer un troisième moteur central.
Les modifications apportées
Lors de l'essai de la boussole, nous nous sommes rendus compte que notre robot n'effectuait pas la tâche souhaitée. Nous avons d'abord pensé à une erreur de programmation, puis avons fini par penser à un problème matériel. En effet, pour fonctionner la boussole a besoin d'être installée à l'horizontale, or nous l'avions placée à la verticale à côté du capteur RFID. Une fois ce changement effectué, l'installation fonctionnait.
La programmation
Les débuts
Lors de nos premières séances, nous nous sommes d'abord familiarisés avec le logiciel Mindstorms NXT utilisé pour programmer notre robot. Les premiers essais ont eu pour but de faire avancer le robot puis de l'arrêter lorsqu'il passe sur une puce RFID avant de le faire redémarrer quelques secondes plus tard.
Au bout de quelques séances, le programme marchait assez bien, mais il était extrêmement répétitif. En effet, nous avions fait un bloc pour chaque puce : les cartes devaient donc être dans un ordre bien précis, et rien ne changeait dans nos différents blocs si ce n'est le nom de la puce et la plage du cap vers lequel se diriger. Par la suite, et avec le conseil de l'un des professeurs, nous avons donc trouvé plus judicieux de tout réunir en un seul bloc puis de sélectionner la direction grâce au nom de la carte RFID stockée dans une variable.
A noter que pour pouvoir créer notre programmes, nous avons dû ajouter deux modules téléchargés sur internet : celui du lecteur RFID et celui de la boussole. Ils n'étaient pas intégrés par défaut à l'interface.
L'algorithme de programmation
Faire avancer le robot
Boucle infinie
Lorsque le capteur détecte une puce RFID, s'arrêter dessus et stocker son nom dans la variable "Texte 1"
Comparer la variable "Texte 1" avec les différents noms de puces RFID répertoriés Selon le nom de la puce, une valeur va être attribuée à la variable "Nombre 1" et une valeur à la variable "plage_bas"
Boucle tant que "on ne passe pas au dessus d'une autre puce RFID" Si le cap actuel est compris dans la plage allant de "Nombre 1" à "plage_bas" alors Avancer tout droit Sinon Si le cap actuel est inférieur à "Nombre 1" alors Tourner à droite Sinon Tourner à gauche Fin si Fin si Fin de la boucle tant que
Fin de la boucle infinie
Vidéo de présentation
La vidéo est aussi disponible sur Youtube en cliquant ici.
Problèmes rencontrés
Comment passer à coup sûr sur la carte RFID ?
Lors des premières séances, nos puces RFID étaient petites (de la taille d'une pièce de 2€) et le capteur RFID passait donc rarement dessus, même si le robot était envoyé dans la bonne direction. Pour corriger ce problème, nous avons par la suite pu utiliser des cartes RFID (de la taille d'une carte bleue) : plus fines et occupant une surface bien plus importante, le robot a davantage de chances de passer dessus.
Prochainement, les cartes RFID seront au centre d'un cercle de couleur. Le robot passera forcément sur le cercle de couleur, il n'aura alors plus qu'à trouver la carte RFID au centre de celui-ci.
Réorienter le robot plus efficacement
Dans nos premiers programmes, le robot tournait toujours dans le même sens lorsqu'il devait se réorienter. Par exemple, lorsqu'il avait dévié de quelques degrés par la droite il récupérait son cap en faisant presque un tour complet en tournant sur lui-même par la droite. Lorsqu'il avait dévié de quelques degrés par la gauche, ceci était cependant la méthode la plus rapide : une fois sur deux la bonne solution.
Ceci étant assez peu efficace lorsque le robot allait d'une puce à une autre, il a fallu modifier l'algorithme. Désormais, si l'angle est supérieur à l'angle visé le robot tourne à gauche, et s'il est inférieur le robot tourne à droite.
Un problème persiste tout de même, la situation en 360/0. En effet, si le cap souhaité est de 358° et que la position actuelle du robot est à 2° (seulement 4° d'écart par la droite), le robot va quand même faire près d'un tour sur lui-même puisque 2<358.
Le robot est lent
Plusieurs personnes ont été étonnées de la lenteur de notre robot, en pensant même à un problème de piles. Ceci est dû au capteur RFID : dans certains cas, il arrive que s'il passe trop vite sur une carte RFID il ne la détecte pas, ce qui est assez problématique. La seule solution que nous avons trouvé est donc de baisser sa vitesse.