SuiveurRFID2011-1 : Différence entre versions

De Wiki de bureau d'études PeiP
(Introduction)
 
(7 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
<br/>
 
<br/>
 
== Introduction ==
 
== 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.
 
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/>
+
<br/>
 +
<br style="clear: both;"/>
 +
 
 
== La construction du robot ==
 
== La construction du robot ==
 
[[Image:IMG_1277.jpg|Le robot en cours de construction|200px|thumb|left]]
 
[[Image:IMG_1277.jpg|Le robot en cours de construction|200px|thumb|left]]
Ligne 26 : Ligne 29 :
 
  Faire avancer le robot
 
  Faire avancer le robot
 
  <br/>
 
  <br/>
  Lorsque le capteur détecte une puce RFID, stocker son nom dans la variable "Texte 1"
+
  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/>
 
  <br/>
Comparer la variable "Texte 1" avec les différents noms de puces RFID répertoriés
+
      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"
+
      Selon le nom de la puce, une valeur va être attribuée à la variable "Nombre 1" et une valeur à la variable "plage_bas"
 
  <br/>
 
  <br/>
Boucle tant que "on ne passe pas au dessus d'une autre puce RFID"
+
      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
+
            Si le cap actuel est compris dans la plage allant de "Nombre 1" à "plage_bas" alors
            Avancer tout droit
+
                  Avancer tout droit
      Sinon
 
            Si le cap actuel est inférieur à "Nombre 1" alors
 
                  Tourner à droite
 
 
             Sinon
 
             Sinon
                   Tourner à gauche
+
                   Si le cap actuel est inférieur à "Nombre 1" alors
 +
                        Tourner à droite
 +
                  Sinon
 +
                        Tourner à gauche
 +
                  Fin si
 
             Fin si
 
             Fin si
       Fin si
+
       Fin de la boucle tant que
  Fin de la boucle
+
<br/>
 +
  Fin de la boucle infinie
 
<br/>
 
<br/>
 
{| border="0"
 
{| border="0"
|[[Fichier:Lecture-de-la-carte-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: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|400px|thumb]]
+
|[[Fichier:Réorientation.png|Réorientation du robot s'il dévie trop|495px|thumb]]
 
|}
 
|}
 
<br/>
 
<br/>
  
== Vidéo ==
+
== Vidéo de présentation ==
La vidéo est disponible sur Youtube [http://www.youtube.com/watch?v=xNyMOj2-KRY en cliquant ici].
+
La vidéo est aussi disponible sur Youtube [http://www.youtube.com/watch?v=xNyMOj2-KRY en cliquant ici].
<br/><br/>
+
 
 +
<include nopre noesc src="/home/pedago/ppeip/include/video-RobotRFID-iframe.html" />
 +
 
 +
<br style="clear: both" />
  
 
== Problèmes rencontrés ==
 
== Problèmes rencontrés ==
Ligne 61 : Ligne 71 :
 
<br/><br/><br/><br/>
 
<br/><br/><br/><br/>
 
=== Réorienter le robot plus efficacement ===
 
=== 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.
+
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/>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 4<358.
+
<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/>
 
<br/><br/>
 
=== Le robot est lent ===
 
=== 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.
 
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


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

Le robot en cours de construction

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.

Notre robot dans l'état actuel (sans les cables)






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

Faire avancer le robot jusqu'à ce qu'il passe sur une carte RFID dont le nom est donné en paramètre

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


Lecture de la carte RFID, stockage de son nom dans une variable qui sera comparée afin de connaitre la destination à prendre
Réorientation du robot s'il dévie trop


Vidéo de présentation

La vidéo est aussi disponible sur Youtube en cliquant ici.



Problèmes rencontrés

Lecture d'une puce RFID


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.