Introduction à l'algorithmique avec deux robots LEGO.

Animation proposée à la Fête de la Science 2003 et à la journée portes ouvertes de Mars 2004.



Animation: Illustration des bases de la programmation avec deux robots LEGO Mindstorms.
Fête de la Science: BRGM Orléans, 18-19/10/2003
Journée Portes Ouvertes: Bâtiment IIIA (LIFO), Université d'Orléans, 20/3/2004


Par Gaétan Hains.

L'an dernier je me suis présenté et vous ai expliqué mon intérêt pour la programmation, en particulier celle des robots. Grâce à l'aide du département STIC du CNRS j'avais pu acheter LIFO1, la première mascotte robotisée du LIFO et m'initier avec vous à ce type de programmation lors d'un stand à la Fête de la Science.

Le voici quand il était tout neuf en septembre 2002. J'ai décidé de lui donner la forme dite "Roverbot" dans la documentation Mindstorms. C'est un robot promeneur du genre de ceux qu'on envoie sur la planète Mars. On le voit près d'un ordinateur car il a besoin de programmes qu'on écrit sur l'ordinateur avant de les télécharger dans son ordinateur de bord, la grosse brique RCX de couleur jaune qui lui sert aussi de corps.

LIFO1 s'est mis à parcourir nos sols lisses et pas trop poussiéreux, ce qui lui plaisait bien. Il a appris à tourner autour du coffre à outils qui lui sert de maison, à rebondir sur les obstacles grâce à ses antennes, à mémoriser les derniers rebonds pour ne pas boucler tout le temps dans un coin de mur, et tout ça me semblait assez encourageant.

Certains le trouvaient triste alors on lui a posé des yeux décoratifs avec des pièces LEGO. Mais les yeux ne tiennent pas en place lors des chocs alors je ne les mets plus. Ce robot fait partie d'une expérience de laboratoire, il n'est pas un jouet, un peu de sérieux !

Les robots sont comme nous, ils ont un corps (mécanique) et un esprit (logiciel) et il faut que les deux fonctionnent bien ensemble. Les progrès de LIFO1 semblaient un peu bloqués quand il s'est mis à s'intéresser aux fils électriques, nombreux sur les sols du labo, aux moquettes et aux rideaux quand il vient chez moi. Les fils électriques le bloquaient parfois sous une table ou pire, s'enroulaient autour de ses antennes ce qui le paralysait vite fait. Les moquettes ralentissent ses virages et les rideaux le bloquaient en l'empêchant de reculer ou d'avancer correctement. Le problème des fils électriques a été bien réglé quand j'ai décidé de lui poser de plus grandes roues avec leurs pneus à crampons. Dans cette version, j'aime bien l'appeler un "Groverbot" car il est plus haut sur roues que le roverbot de base. Ca marche très bien et il peut franchir la plupart des fils, du moment qu'il n'y enroule pas ses antennes ... Les grandes roues fonctionnent en fait si bien que l'été dernier on lui a fait faire quelques longues promenades dans la pelouse et il a adoré. Avec un programme toujours assez simple il a franchi les bosses, contourné une fourmilière et s'est même égaré une fois sous la table de jardin entre les pieds des adultes. Une petite fille a voulu lui verser du Coca sur le dos mais là j'ai eu peur et je lui ai demandé de rentrer à la maison c'est-à-dire dans son coffre. Depuis ce temps il a un peu peur du plein air et préfère le sol du laboratoire. Pas grave, on retournera bien dehors l'été prochain !

Le problème des rideaux a lui été réglé par l'intelligence. Ce qui se passe le plus souvent c'est que les roues se prennent dans le rideau sans que rien ne touche les antennes. Alors LIFO1 ne pense pas qu'il y a d'obstacle et rêve en fait qu'il avance librement sur un beau sol lisse (je vous rappelle que les petits robots rêvent de sols lisses comme les adultes humains rêvent de plages). Je lui ai donc décidé un compteur de mouvements qui accumule la durée des périodes où il avance sans contact sur les antennes. Si cette durée est trop longue il se secoue et recule de toutes ses forces. Une fois le programme de promenade amélioré comme ça et téléchargé dans sa brique RCX, LIFO1 n'avant plus de mal à sortir de ces situations, sans changer le reste de ses balades. Bravo!

Le problème des moquettes quant à lui est plus difficile. Quand on écrit le programme de promenade, on indique des virages en nombre de secondes. Par exemple s'il y a contact sur l'antenne gauche on recule une seconde et on tourne à droite 1,5 secondes. Sur un beau sol lisse de labo cela donne presque un quart de tour à droite. Mais sur une moquette il y a plus de friction et les 1,5 secondes ne font qu'un tout petit virage, pas très utile pour éviter les obstacles ... Il faut donc réajuster les paramètres du programme selon chaque surface de sol, pas très pratique. On pense que la solution serait que le robot puisse avoir une notion de l'espace, qu'il sache s'il tourne beaucoup, un peu, ou au moins qu'il sente les obstacles par des détecteurs de distance. Pour ça, j'espère bien me servir des robots encore plus sophistiqués de chez Wany , piste à suivre l'an prochain ?

Voilà donc où j'en suis avec mes robots: meilleures roues, antennes améliorées, mémoire des événements pour ne pas bloquer dans les coins de murs, compteur pour ne pas rouler immobile dans les rideaux, quelques centaines d'heures et de douzaines de piles R6 d'expérience et un robot LIFO1 parfaitement heureux parmi nous. Quand son petit frère LIFO2 est né cette année, il a tout de suite pris la forme d'un Groverbot et pris les programmes améliorés de cette année. C'est l'avantage d'être un robot, on hérite instantanément de tout ce que nos ainés savent. Comme les robots LEGO sont munis d'émetteurs-récepteurs infrarouge, j'avais envie de faire interagir LIFO1 et LIFO2. Mais j'ai découvert que le faisceau infrarouge est très large alors c'est difficile de s'en servir pour se guider vers l'autre robot. Pour le moment je n'ai donc appris qu'à faire réagir un robot à un signal de l'autre s'il ne lui tourne pas le dos. Ce n'est pas grand chose. Il faudra que je consulte les documents Mindstorms, s'il y en a, parce qu'actuellement l'infrarouge ne sert pas à grand chose. Dommage.

A la Fête de la Science 2003 nous avons présenté les progrès de LIFO1, son petit frère LIFO2, et un nouveau stand s'est joint à nous pour apprendre aux enfants et adolescents à compter en binaire comme les ordinateurs. On a aussi distribué un glossaire de l'informatique pour que le public cesse d'avoir peur du jargon informatique et que les jeunes puissent impressionner leurs amis avec CAML, HTML, Tera-Flop et autres termes un peu ésotériques. Il y avait aussi, comme en 2002, le stand Réalité Virtuelle et Calcul Haute Performance du LIFO.

Bon alors il me reste beaucoup de progrès à faire, avant ma retraite en 2026, pour que mes robots puissent remplir leur mission d'exploration du sous-sol du bâtiment ... J'y travaille. Il y a l'idée d'avoir des détecteurs de distance ou une notion de l'espace. Mais pour le logiciel on pourra aussi faire un peu mieux si on sort de la programmation "visuelle" pure que LEGO nous fait faire avec son logiciel. Autre piste à suivre.

En attendant, apprenez tous l'informatique, si possible apprenez à programmer ou encore mieux, choisissez un des nombreux metiers de l'informatique, pourquoi pas en recherche! J'aurai besoin de votre aide durant les dernières années de mon projet ...

A bientôt !
Gaétan Hains

P.S. En octobre 2003, le stand d'à côté était tenu par le Professeur de science économique Anne Lavigne (directrice du LEO) qui m'a très bien expliqué et démontré avec formules à l'appui que le montant de ma retraite ne serait pas très alléchant. Alors il se pourrait bien que je travaille au-delà de 2026 dans mes vieux jours. Venez me rejoindre pour programmer les super-robots que j'aurai alors ...