Conclusion :
Une fois que notre robot a trouvé la piste, il la suit inlassablement. Si nous
traçons la piste sous forme de ligne fermée, le robot y fera ses tours. Nous
devons simplement éviter les virages serrés dans lesquels les capteurs
optiques pourraient perdre le contact avec la ligne. Certes, le robot essayera
alors de localiser à nouveau la piste, cependant il nous faut être francs et
admettre que ça ne sera possible que dans une zone pratiquement exempte
d'obstacles.
4.6 La mite électronique
Le problème du couplage de plusieurs modes de comportement tels que
recherche, poursuite et évitement est déjà apparu plusieurs fois. Dans une
autre expérience, nous allons examiner l'interaction de tels comportements.
Résumons brièvement les résultats que nous avons obtenus jusqu'à présent.
Le chercheur de lumière simple suit plus ou moins en aveugle la lampe de
poche qu'on tient devant lui. Le robot part tacitement du fait que, là où se
trouvait précédemment la lampe, il ne peut apparaître aucun obstacle. De la
même façon, il suppose qu'il n'atteindra jamais vraiment la lampe. Cepen-
dant, ces suppositions ne correspondent à la réalité que dans des cas
d'exception. Nous sommes obligés de guider le robot avec la lampe pour
qu'il contourne chaque obstacle. Nous aurions
E6
la propriété Recherche de lumière. Nous connectons les deux phototransistors
à E6 et E7, et reprenons tout le reste de la maquette Détection des obsta-
cles. Du point de vue scientifique, nous avons alors équipé le robot de deux
modes de comportement. Étant donné cependant que les deux schémas de
comportement ne peuvent pas être actifs simultanément, ils reçoivent des
priorités différentes. La situation qui se présente à nous est alors la suiv-
ante : dans le cas normal, le robot est à la recherche de la lumière. S'il dé-
tecte un obstacle, pour ainsi dire un danger pour le robot, le comportement
Évitement des obstacles sera activé. Lorsque tout rentre dans l'ordre, le
robot peut continuer à chercher la source de lumière.Nous avons ainsi
procuré au robot des aptitudes essentielles qui lui permettent de se piloter
de façon autonome et d'éviter les dangers. Ceux d'entre vous qui ont un
ami qui possède également un coffret fischertechnik pourront pousser
l'expérience encore plus loin. On installe simplement une source de lumière
sur chaque robot, et ceux-ci pourront alors se chercher mutuellement. Lors
de la programmation, nous avons jusqu'à présent travaillé suivant le principe
« Essai et erreur ». Pour écrire tes programmes, tu t'es sans doute mis
« simplement » à la tâche et observé au cours de tes expériences comment
le robot faisait alors (ou plutôt ne faisait pas) ce qu'il devait faire. Bien en-
tendu, les concepteurs de logiciels professionnels ne peuvent en aucun cas
recourir à une telle méthode de conception avec leur produits. Dans une telle
situation, ils doivent définir une stratégie de conception précise avant même
d'écrire la première ligne de pro-gramme. Et ça ne se fait pas comme ça,
en fait besoin d'un robot qui puisse
contourner les obstacles de
E7
façon autonome. Dans ce
but, nous allons
compléter, comme le
montre l'illustration, la
maquette « Robots avec
détection des obstacles » de
mais suivant des règles intangibles. Il s'est imposé des procédés portant des
noms bizarres tels que p. ex. « Conception structurée » (Top-Down). On
essaie ici de définir le système tout entier « de haut en bas », sans se
préoccuper des détails au début. Nous allons essayer de programmer notre
mite suivant la conception structurée. Pour cela, nous commencerons par le
programme principal, ce qu'on appelle la « boucle principale » (en anglais :
Main loop). L'illustration montre la conception élémentaire. La boucle
principale se compose simplement des modes de
comportement nécessaires au robot, à savoir
RECHERCHE, CONTACT et AVANCE. Ce qui nous
paraît bizarre, c'est la variable VAR1, et comment
allons-nous donner une priorité aux modes de
comportement du robot avec une boucle aussi
simple ? La priorité résulte de l'ordre des succes-
sion des sous-programmes, la variable VAR1 ser-
vant à attribuer les commandes de déplacement.
En y réfléchissant bien, les mouvements nécessaires au robot peuvent se
réduire à un nombre précis de manœuvres. Le robot nécessite un mouvement
de recherche, un mouvement d'évitement et un mouvement de correction.
Les mouvements d'évitement et de correction doivent en plus se subdiviser
suivant les directions, à droite ou à gauche. Il devient donc clair que le
sous-programme RECHERCHE calcule un mouvement possible parmi n
(n = nombre total de mouvements), de même que le sous-programme
CONTACT. Étant donné que CONTACT s'exécute après RECHERCHE, il effacera
les instructions de RECHERCHE. Le sous-programme AVANCE ne fait plus
qu'exécuter ce qu'on lui ordonne. Le procédé de la conception structurée
semble vraiment être utile. Cependant, nous ne savons pas encore à quoi
vont ressembler les sous-programmes. Commençons par le premier
sous-programme RECHERCHE. Ce sous-programme se charge de
l'interrogation des capteurs photoélectriques. En fonction de ces deux
capteurs, il existe quatre variantes possibles : capteur gauche, capteur droit,
capteurs gauche et droit, pas de capteur. On définit ainsi exactement quatre
manœuvres d'avance possibles : TROUVE, EN AVANT, À GAUCHE, À DROITE.
À chacune de ces manœuvres d'avance, on peut également assigner un
sous-programme ; nous procédons de façon stricte suivant les critères de la
conception structurée. Il est clair à présent à quoi va ressembler le premier
sous-programme RECHERCHE. RECHERCHE fournit un paramètre qui sera
concrétisé par AVANCE. Le sous-programme proprement dit est très simple.
Des comparaisons multiples permettent de régler le paramètre de sortie.
F
39