SuiveurLigne2011-1 : Différence entre versions
(→Capter la couleur) |
|||
Ligne 23 : | Ligne 23 : | ||
== Nul n'est parfait : erreurs et échecs == | == Nul n'est parfait : erreurs et échecs == | ||
=== Capter la couleur === | === Capter la couleur === | ||
− | Dans la première version de l'algorithme, LignoBear ne tournait pas par à-coups mais par grands angles. Ceci le faisait reculer et il arrivait donc qu'il repasse au-dessus d'une ligne de couleur, sans la capter puisque toute son énergie était dirigée vers sa rotation. Nous avons donc inclus le principe de "petits angles" ainsi le robot effectue de plus | + | Dans la première version de l'algorithme, LignoBear ne tournait pas par à-coups mais par grands angles. Ceci le faisait reculer et il arrivait donc qu'il repasse au-dessus d'une ligne de couleur, sans la capter puisque toute son énergie était dirigée vers sa rotation. Nous avons donc inclus le principe de "petits angles" : ainsi le robot effectue de plus petits déplacements, ce qui lui permet de moins glisser et de toujours capter la ligne s'il y en a une. |
La lumière a aussi son rôle dans la trajectoire de notre progéniture : la reflet d'une lumière intense peut effectivement l'induire en erreur, en éclaircissant la couleur du ruban, Lignobear ne reconnaissant donc pas la couleur qu'il recherche. | La lumière a aussi son rôle dans la trajectoire de notre progéniture : la reflet d'une lumière intense peut effectivement l'induire en erreur, en éclaircissant la couleur du ruban, Lignobear ne reconnaissant donc pas la couleur qu'il recherche. | ||
Version du 10 mai 2012 à 14:35
Sommaire
Introduction
Que peut-on faire avec une boite de Legos, un capteur de couleurs et un logiciel informatique ? Bien plus de choses qu'on ne l'imagine, comme par exemple un robot suiveur de ligne !
Cette page a pour but de vous présenter LignoBear, un robot construit en Lego MindStorms et que nous avons programmé afin qu'il sache suivre un ruban de couleur fixé au sol, représentant un circuit changeant et même discontinu.
LignoBear : un peu d'anatomie.
Quelques Legos, un emplacement pour une Foxboard afin de communiquer avec le robot à distance et un boitier de piles, trois câbles et un mouchoir en papier sommairement bricolé afin de protéger le capteur des lumières extérieures qui pourraient fausser la mesure : vous avez là une bête étrange mais parfaitement apte à accomplir le travail pour lequel elle a été créée. (voir les photos jointes)
Toutefois, cette construction rudimentaire nous semblant tristement dénuée de vie, nous lui avons fait don d'un visage et d'une plaque d'immatriculation arborant fièrement le nom du courageux robot : LignoBear.
Il n'y a pas que le physique qui compte : le programme a aussi son importance...
Voici une version simplifiée de l'algorithme que nous avons créé afin de donner au moins une âme, sinon une raison de vivre, à notre nouveau rejeton.
S'il capte la couleur qui lui a été demandé de rechercher, il avance tout droit. Dans la cas contraire, il tourne d'un angle de 10°(soit 50 sur le logiciel, on multiplie par 5) par à-coups successifs à gauche puis à droite , l'angle augmentant de 10° à chaque fois qu'il recommence à gauche(cf schéma), ceci tout en continuant à rechercher le ruban de couleur qu'il suivait avec tant d'ardeur. S'il atteint un certain angle par rapport à sa position d'origine (représenté ici par la valeur 200 du côté droit du robot, soit 40°) sans avoir perçu de couleur, il revient à sa position de départ puis avance tout droit. Il s'arrête si, hélas, il n'a rien capté au bout de 5 secondes. Si, lors de son avancée ou de sa recherche du ruban autour de lui, il capte de la couleur, il revient au début de l'algorithme, et recommence à suivre le ruban.
(voir schéma représentant les rotations)
Une vidéo vaut mieux qu'un long discours
Nul n'est parfait : erreurs et échecs
Capter la couleur
Dans la première version de l'algorithme, LignoBear ne tournait pas par à-coups mais par grands angles. Ceci le faisait reculer et il arrivait donc qu'il repasse au-dessus d'une ligne de couleur, sans la capter puisque toute son énergie était dirigée vers sa rotation. Nous avons donc inclus le principe de "petits angles" : ainsi le robot effectue de plus petits déplacements, ce qui lui permet de moins glisser et de toujours capter la ligne s'il y en a une. La lumière a aussi son rôle dans la trajectoire de notre progéniture : la reflet d'une lumière intense peut effectivement l'induire en erreur, en éclaircissant la couleur du ruban, Lignobear ne reconnaissant donc pas la couleur qu'il recherche.
Ivre ?
Nous avons très tôt observé que la trajectoire de LignoBear était loin d'être droite, et qu'il tournait davantage d'un côté que de l'autre. Avions-nous mis trop de vin dans son biberon ? Fières de notre rôle de mère, nous avons rejeté cette solution avec fougue et avons préféré croire que ses moteurs étaient réglés d'une façon différente et que l'un était donc plus puissant que l'autre, gênant son déplacement. Nous avions pallié à ce défaut en changeant le virage de 50 vers la droite par un virage de 15, mais nous nous sommes finalement rendues compte qu'en éloignant ou rapprochant les roues du corps du robot, sa trajectoire se retrouvait corrigée...
Afin de vérifier si les roues sont correctement emboîtées, la méthode est simple : il suffit de poser le robot sur une couleur qu'il ne captera pas et marquer sa direction de départ, puis lancer le programme. Si, à l'issue de ses rotations, il repart dans la direction précédemment marquée, les roues sont bien mises. S'il tire à droite, il faut rapprocher la roue avant droite du châssis, et vice-versa.
Un bon informaticien est un informaticien paresseux
Nous avions au début oublié ce précieux adage, et avions créé un très long programme, qui risquait donc davantage de comporter des erreurs et serait plus long à modifier. Grâce à une astuce, nous avons finalement divisé la taille de ce programme par deux, en réunissant les commandes de rotation droite et gauche, et en les différenciant par une variable qui était tour à tour positive et négative et qui déterminait dans quelle direction le robot tournerait.
Gallerie photo