SuiveurLigne2011-1 : Différence entre versions

De Wiki de bureau d'études PeiP
Ligne 4 : Ligne 4 :
  
 
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 !<br/>
 
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 !<br/>
Cette page a pour but de vous présenter LignoBear, un robot construit en Lego MindStorms et que nous avons programmés afin qu'il sache suivre un ruban de couleur fixé au sol, représentant un circuit changeant et même discontinu.
+
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. ==
 
==LignoBear : un peu d'anatomie. ==
Ligne 14 : Ligne 14 :
  
 
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.<br/>
 
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.<br/>
S'il capte la couleur qui lui a été demandé de rechercher, il avance selon la direction qu'il suivait. Sinon, il tourne (d'un angle représenté ici par 50) par à-coups successivement à gauche puis à droite (ou l'inverse, mais le résultat est le même !), 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 200 du côté droit du robot) sans avoir perçu de couleur, il revient à sa position de départ (n effectuant donc une rotation de 200 vers la gauche) 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.<br/>
+
S'il capte la couleur qui lui a été demandé de rechercher, il avance selon la direction qu'il suivait. Sinon, il tourne (d'un angle représenté ici par 50) par à-coups successivement à gauche puis à droite (ou l'inverse, mais le résultat est le même !), 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 200 du côté droit du robot) sans avoir perçu de couleur, il revient à sa position de départ (en effectuant donc une rotation de 200 vers la gauche) 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.<br/>
 
Pourquoi 50 ? Il s'agit d'une unité non homologuée que nous avons créée et adaptée par rapport aux moteurs actionnant les chenilles du robot : elle correspond environ à 10°. (voir schéma représentant les rotations)
 
Pourquoi 50 ? Il s'agit d'une unité non homologuée que nous avons créée et adaptée par rapport aux moteurs actionnant les chenilles du robot : elle correspond environ à 10°. (voir schéma représentant les rotations)
  
Ligne 22 : Ligne 22 :
  
 
=== Ivre ? ===
 
=== Ivre ? ===
Quand nous avons pour la première fois 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 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 donc 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...<br/>
+
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...<br/>
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 rotation, 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.
+
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===
 
===Un bon informaticien est un informaticien paresseux===

Version du 15 mars 2012 à 00:33

PHOTOS : Les deux mamans, profil avec mouchoir, suivant une ligne

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 selon la direction qu'il suivait. Sinon, il tourne (d'un angle représenté ici par 50) par à-coups successivement à gauche puis à droite (ou l'inverse, mais le résultat est le même !), 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 200 du côté droit du robot) sans avoir perçu de couleur, il revient à sa position de départ (en effectuant donc une rotation de 200 vers la gauche) 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.
Pourquoi 50 ? Il s'agit d'une unité non homologuée que nous avons créée et adaptée par rapport aux moteurs actionnant les chenilles du robot : elle correspond environ à 10°. (voir schéma représentant les rotations)

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" qui lui permettaient de sagement rester sur place quand il cherchait la couleur.

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.