Vous êtes sur la page 1sur 21

Annexe 1 : mise en uvre des quatre dfis

Avertissement : dans cet exemple, les moteurs seront connects sur les ports A (moteur droit) et C (moteur gauche) du NXT. Le capteur optique est connect sur le port 1, le capteur tactile sur le 2, et le capteur ultra-son sur le 3.

1 / Dfi 1 : faire avancer le robot


Les lves doivent programmer le robot de faon ce quil se dplace en ligne droite, sans limite de distance ni de dure. Plusieurs programmes sont possibles dans ce cas :

En utilisant un bloc Moteur pour chaque moteur.

En utilisant un bloc Dplacement unique pour les deux moteurs

Notons quil est probable que les lves ne penseront pas arrter les moteurs pour stopper le robot ! Lors de lexcution de ce programme, les moteurs vont bien dmarrer, mais seront stopps rapidement ds la fin du programme. Lutilisation dun bloc Dplacement facilite la programmation, en pilotant les deux moteurs en mme temps, mais aussi avec la mme configuration. Les lves ne devraient pas avoir de soucis rsoudre la problmatique avec ce bloc : les paramtres par dfaut permettent de faire avancer le robot, de la distance correspondante un tour complet de moteur.

Il parat plus formateur de choisir loption avec les deux blocs Moteur : chaque organe est gr indpendamment des autres, ce qui permet de rgler leurs paramtres propres, et donc de faire ragir le robot dune faon plus fine.

Avec cette solution, les lves pourront tre confronts divers problmes : lun des moteurs nest pas lanc : le robot tourne sur laxe de la roue dont le moteur nest pas aliment ;

les deux moteurs nont pas la mme configuration (puissance, dure dactivation, sens) : le robot nira pas droit, mais tournera vers une direction qui dpendra du problme de configuration. Il conviendra alors de faire rflchir les lves sur les consquences de chacun de ces cas derreur : le rsultat de la rflexion pourra tre rinvesti par la suite, lorsque nous souhaiterons faire tourner le robot.
Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1 Page 1 /21

Par la suite, on intgre une contrainte de dure de dplacement : le robot doit avancer en ligne droite pendant trois secondes. La dure dactivation des moteurs peut tre rgle de plusieurs faons : directement dans la configuration du bloc Moteur ou Dplacement. Mais, l, les lves constateront, avec stupfaction, que le programme ne fonctionne pas comme ils lavaient pens : le robot tourne vers la gauche pendant 3 s, puis vers la droite 3 s aussi. Il apparat alors que le programme est bien squentiel : le premier bloc doit se terminer avant de pouvoir excuter le bloc suivant ;

en utilisant un bloc dAttente. Cette solution semble rpondre parfaitement la problmatique mais non ! Les lves constateront que le robot avance plus longtemps que prvu (4 5 s).

Les lves devront alors forcer les moteurs sarrter en utilisant de nouveaux blocs Moteurs :

Les 3 secondes seront alors respectes. Les lves vont devoir maintenant trouver une solution pour faire avancer le robot sur 50 cm. Plusieurs manires seront proposes : lancer les moteurs pendant une certaine dure. Mais cela ncessitera de connatre la vitesse du robot en fonction de la puissance, et de la charge appliques aux moteurs. Les lves pourront mesurer exprimentalement cette vitesse, et retrouver la dure dactivation des moteurs correspondante ; lancer les moteurs en leur faisant faire un certain nombre de rotations (exprim en nombre de tours complets ou degrs). Connaissant le diamtre des roues, un calcul simple permettra de trouver le nombre exact de rotations. Par exemple, les roues fournies avec la version NXT 2.0 ont un diamtre de 4,32 cm 1. Un tour de moteur fait donc parcourir 13,57 cm au robot ( 4,32 cm = 13,57 cm ). Pour avancer de 50 cm, les roues doivent effectuer 3,68 tours, soit 1326,29 degrs. On dcouvre au passage quil nest pas toujours judicieux dactiver les moteurs la vitesse maximale, car la phase dacclration nest plus du tout ngligeable si on va trop vite. 2 Le programme prcdent peut tre aisment ici adapt : seul le bloc dAttente est reconfigur :

1 2

Quand elles sont neuves ! Ou alors, si on veut vraiment aller vite, il faut prvoir une monte en vitesse des deux moteurs et une descente analogue, ce qui entrane des calculs un peu complexes (ou la mise au point de tables). Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1 Page 2 /21

2 / Dfi 2 : faire tourner le robot


Les lves doivent programmer le robot de faon ce quil vire dun ct ou de lautre, sans limite angulaire. Le but de cette premire dmarche est purement qualitatif ou phnomnologique : quobserve-t-on ? Le programme finalis prcdemment reste valide car seules les configurations des deux premiers blocs Moteurs devront tre ajustes en fonction des cas. lun des moteurs (A) est activ mais pas lautre (C) : le robot tourne autour de la roue immobile (la roue gauche) ;

les deux moteurs ont des configurations de puissance diffrentes (25 % pour le moteur A, 75 % pour le moteur C) : le robot tourne en arc de cercle et vire du ct du moteur ayant la plus faible puissance (vers la droite). La position du centre de rotation dpend des puissances renseignes ;

Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1

C A
Page 3 /21

les deux moteurs sont activs la mme puissance mais ne tournent pas dans le mme sens : le robot tourne autour du milieu de laxe de transmission des roues et vire dans la direction de la roue qui tourne vers larrire du robot.

A C

3 / Dfi 3 : Rotation du robot autour dun point


3.1 Position du problme
On souhaite faire faire au robot une rotation vers la droite dun angle , typiquement un quart de tour. Comment procder ? E Et o le robot sera-t-il lissue de ce dplacement ? E

Arrive
A

3.2 Actionneurs et capteurs


Chaque moteur peut tre actionn une certaine puissance, dfinie en pourcentage de la puissance maximale, correspondant une vitesse de rotation (non prcise). Par ailleurs, un capteur (circuit intgrateur nomm Rotation sensor ) surveille en permanence, pour chaque moteur, langle de rotation partir de la position initiale du mouvement. Il nest pas possible de se baser sur la vitesse des roues parce que la mise en marche ne peut physiquement pas tre instantane (mme si on parvenait passer subitement de la vitesse zro la vitesse maximale, cela entranerait un glissement au niveau des roues donc une perte de prcision). Pareillement, le freinage ne peut pas tre instantan.

2 1

e Dpart

R1 R2

3.3 Gomtrie et notations


Nous admettons (cela est assez vident et a t constat lors des 2 la distance que la roue C, ayant le plus dfis prcdents) que le robot dcrit un arc de cercle lorsque les de puissance, doit parcourir en cm ; deux moteurs sont activs des puissances diffrentes. R2 la distance entre la roue C et laxe de la La roue gauche, correspondant au moteur activ la plus grande rotation du robot en cm ; puissance, dcrit un cercle de rayon R 2 et la roue droite dcrit la distance que la roue A, ayant le moins un cercle de rayon R 1 ; lcartement des roues, constant, est 1 de puissance, doit parcourir en cm ; e = R 2 R 1 3. Les roues sont toutes deux de rayon r , la roue gauche tourne sur elle-mme dun angle 2 et la roue droite R1 la distance entre la roue A et laxe de la rotation du robot en cm ; dun angle 1 , ce sont des quantits observables grce aux capteurs angulaires. Enfin, si le moteur de la roue gauche a une e la distance sparant les deux roues du ropuissance p 2 et celui de la roue droite une puissance p 1 , bot. Dans notre cas, e = 12,7 cm ; p1 langle de rotation du robot, exprim en notons = le rapport des puissances. p2 degrs. En somme, dans ce problme, nous avons des donnes (ou r contraintes) e ,r , , , et des inconnues 1, 2, R 1, R 2 . le rayon de la roue. Dans notre cas, r = 2,16 cm4

Cette donne dpend du montage de robot choisi. Elle est forte4 Cette valeur est lie au type de la roue utilise ment variable. et peut tre adapte en fonction. Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1 Page 4 /21

3.4 Un peu de physique


Nous allons supposer que la liaison entre les roues et le sol se fait sans glissement ; cela impose que si le sol soit lgrement rugueux ou en tous cas pas trop lisse, et que les acclrations communiques aux roues ne soient pas trop fortes (comme pour les vraies voitures qui se mettent draper lorsquon appuie trop vigoureusement sur la pdale dacclrateur). De la sorte, nous avons une relation de proportionnalit entre la distance parcourue par le point de contact de la roue sur le sol, et langle (total) de rotation de la roue, soit : r 2 = R 2 et analogue pour lautre roue. Nous supposerons aussi que la puissance applique aux moteurs est toujours proportionnelle la vitesse angu laire de ceux-ci, ce qui suppose une certaine limitation qui nest absolument pas gnante (aller trop vite signifie d 1 d perdre de la prcision). On aura donc une relation de proportionnalit entre les vitesses angulaires : = 2 dt dt d ( 2 )= 0 . Comme les valeurs initiales des angles 1 et 2 peuvent tre prises nulles, on a la ou encore dt 1 relation (assez intuitive) : 1= 2 .

3.5 Un peu de calcul


La relation gomtrique e= R 2 R 1 amne e =( R2 R1 )= r ( 2 1) soit 21= e . r

3.6 Lalgorithme de pilotage du robot


Si nous voulons simplement provoquer une rotation da ngle , la formule prcdente nous suggre de piloter le robot en surveillant la difrence 21 sans avoir tenir compte les puissances appliques. activer le moteur de gauche la puissance p 2 et le moteur de droite la puissance p 1= p 2 .5 surveiller 21 e arrter les deux moteurs ds que 21= (on doit videmment mesurer tous les angles dans la r mme unit, le degr convenant tout fait ici).

3.7 Et le point darrive ?


On a une proportionnalit entre le rayon et la longueur darc sur le cercle, si bien que nous avons aussi R1= R 2 e partir de 1= 2 . La relation R1= R 2 e amne donc R 2 = R2 e soit R2 = . En combinaison avec 1 langle , la connaissance de R1 et R2 permet de savoir o se trouve le robot lissue du mouvement.

3.8 Un cas particulier simple mais peu recommand


En faisant tendre le coefficient vers 0, la puissance p 1 et le rayon R1 tendent vers 0. Tout se passe comme si e la roue droite tait immobile, la roue gauche dcrivant un arc de cercle de rayon R2 = e et dangle = . La r situation semble plus simple, mais elle ne convient gure car la roue droite nest pas si immobile que cela : elle pivote sur elle-mme autour dun axe vertical, et effectue donc un lger glissement ; il nest pas du tout certain que le centre instantan de rotation dans ce mouvement soit fixe 6, si bien que la prcision ne sera pas bonne.

3.9 Un cas particulier simple et trs recommand


Nous pouvons enfin envisager de faire tourner les deux roues en sens inverse mais avec des puissances gales. Il est alors peu prs vident que le robot pivote (dun angle ) autour du milieu entre les points de contacts des deux roues (voir haut de page 4). Si on imagine un pivot virtuel situ cet endroit, on comprend que cest exace e tement le mme cas que prcdemment en remplaant e par ! On a donc en ce cas 1= 2= , ce qui 2 2r
5 Il faut ici viter de choisir trop proche de 0 ou de 1 : si est trs petit on est dans le cas particulier qui va tre tudi plus loin et la roue glisse ; et si est proche de 1, la trajectoire du robot est quasiment rectiligne, et celui-ci va sortir de la zone dvolution avant que la rotation espre nait pu tre acheve. 6 Il y a des ractions prendre en compte, car le centre dinertie du robot nest pas du tout la verticale de la zone de contact de la roue immobile. Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1 Page 5 /21

donne lieu un algorithme trs simple : activer le moteur de gauche la puissance p 2 et le moteur de droite la puissance7 p 1= p 2 . surveiller 1 ou 2 e arrter les deux moteurs ds que 2= . 2r Un avantage de cette manire de procder est que le robot ne se dplace plus beaucoup, ne risquant gure de ren contrer dobstacle ; ainsi sa position lissue du mouvement est aisment prvisible !

3.10 Contrainte angulaire de 90


ce moment-l, on peut demander aux lves de faire tourner le robot de 90 dans le sens horaire. Pour com mencer, on peut les interroger sur les possibilits darriver de la position 1 la position 2 comme indiqu ci-des sous.

Position 1

Position 2

Soit le robot a vir de 90 dans le sens horaire, soit il a parcouru 270 dans le sens anti-horaire ! Plusieurs solutions sont valides : les lves doivent tre conscients quil faut choisir celle qui conviendra au problme en cours. Nous avons vu, par les exercices prcdents, quil existe diverses mthodes pour faire virer le robot. En utilisant chacune dentre elles, les lves trouvent les paramtres appliquer aux blocs Moteurs et/ou Attente pour faire virer le robot de 90. Chacune des deux stratgies ci-dessous a ses avantages et domaines dapplication (suivant quon se dplace dans un espace de type plan quadrill avec obstacles ou couloirs ).

Les deux moteurs ont des configurations de puissance diffrentes.


Supposons les valeurs de puissance : 25 % pour le moteur A, 75 % pour le moteur C. Le robot tourne en arc de cercle et vire du ct du moteur ayant la plus faible puissance (vers la droite). La position du centre de rotation dpend des puissances renseignes. Lalgorithme dcrit au chapitre 3.6 - Lalgorithme de pilotage du robot (page 5) se termine lorsque e 12,7 90 21= = =529,16 (en degrs). r 2,16 Il est important de remarquer ici que les blocs de programmation Lego MindStorms NXT nacceptent pas les valeurs numriques relles. En fonction des rsultats, il est ncessaire deffectuer des arrondis plus ou moins arbitraires, mais engendrant des erreurs de positionnement. Le rattrappage des erreurs darrondi sera ncessaire si de nombreuses rotations sont prvoir, ce qui va se produire dans le problme du parcours de labyrinthe (Annexe 2). Les capteurs de rotation de chaque moteur vont tre scruts en permanence. Les valeurs retournes, reprsentant le nombre de degrs que chaque moteur a effectu depuis son lancement, sont alors compares. Ds que la diffrence du nombre de degrs effectus par le moteur C ( 2) et celui du moteur A (1) gale 530, les deux moteurs seront arrts. Si tout va bien, le robot a vir de 90 ! Le programme raliser fait intervenir une boucle JUSQUA pour scruter les capteurs de rotation, ainsi que des
7 Le signe ngatif indique un sens oppos pour les moteurs, tout en gardant une valeur de puissance identique. Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1 Page 6 /21

blocs Constante, Mathmatique et Comparaison simples.

Un programme bien plus paramtrable pourrait faire lobjet dun approfondissement : intgrer la formule gnrale, et proposer trois variables renseigner : , e et r.

Les deux moteurs ne tournent pas dans le mme sens.


Le robot tourne autour du milieu de laxe de transmission des roues, et vire dans la direction de la roue qui tourne vers larrire du robot. Ici le problme se rsout aisment. Soit le schma ci-contre, reprsentant les positions de dpart et darrive du robot, ainsi que les cotations prendre en considration. Daprs ce qui a t expos au chapitre 3.9 - Un cas particulier simple et trs recommand (page 5), on va scruter les moteurs afin de dtecter quel moment on a e 12,7 90 1= 2= = = 264,58 (en degrs). 2r 2 2,16 On doit donc attendre que les moteurs aient tourn de 265 pour les arrter ! Le programme est alors, avec sa configuration :
R2 Dpart e 2

C Arrive

R1

1 A

Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1

Page 7 /21

4 / Dfi 4 : dtourner le robot des obstacles


Dans un premier temps, on demande aux lves de choisir un des capteurs disponibles, permettant de renseigner le robot sur son environnement direct ; dans le cadre de notre problme, bien sr. Il apparat que les capteurs tactile et ultra-sonique sont les plus adapts.

4.1 Capteur tactile


partir du capteur tactile, par exemple, lenseignant demande de reprendre le programme ralis pour faire avancer le robot tout droit, et de le modifier pour que le robot sarrte en fonction de ltat de son capteur. Le programme gnr ressemble alors au suivant, utilisant une boucle :

ou bien en utilisant un bloc Attente :

Dans quelques cas particuliers, il se trouve que le robot ne peut tourner sans risquer dendommager son capteur ou une autre de ses pices prominentes. On veillera le faire reculer un peu pour quil se dgage et pallier dventuels problmes :

Ici encore, plusieurs solutions sont possibles. La mise en uvre dun bloc Attente temporel est prsente cette occasion. Par la suite, le robot tourne dun quart de tour. Les lves peuvent choisir la mthode de leur choix puisquils ont d les tudier prcdemment. Il est toutefois prfrable de faire pivoter le robot sur lui-mme : cette technique permet de limiter lespace utilis par le robot pour faire sa manuvre.
Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1

Page 8 /21

La suite du programme est alors :

Le robot a vit ce premier obstacle Il peut maintenant repartir vers de nouvelles embches droit devant lui ! Le programme complet est plac dans une boucle infinie.

Le terrain de test devra mettre en vidence les divers problmes pouvant survenir : au moyen de plusieurs types dobstacles, le robot ragit correctement ou non. On pourra utiliser un mur (parfait), une bouteille de verre (bon), une canette en aluminium (moyen : trop lger), un cran de papier ou de tissu (dpend de la tension et de la soli dit), un stylo tenu verticalement (bon sil est touch par le capteur) ou encore une bote dallumettes (mauvais car trop lgre, mme pleine).

4.2 Capteur ultrasonique


Par la suite, le mme programme est adapt pour rpondre lutilisation du capteur ultra-son. Dans le principe, rien ne change, si ce nest que le robot na plus besoin de reculer avant de tourner : le capteur ultra-son peut dtecter lobstacle une distance raisonnable et sans contact ! Une des propositions serait :

Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1

Page 9 /21

Ici aussi, le terrain de test utilise plusieurs types dobstacles que le robot devra viter. On pourra utiliser un les mmes que prcdemment avec une petite diffrence de raction pour le stylo tenu verticalement (trop fin pour tre dtect) et la bote dallumettes (le rsultat dpend de son orientation). Dans tous les cas, il convient de mettre en vidence aussi que lobstacle nest dtect que sil se prsente directement face au capteur ; cest--dire une hauteur raisonnable pour quil soit peru. En effet, langle de rflexion du signal ultrason mis par le capteur doit permettre la rception de son cho.

Finalement, les lves contournent entirement lobstacle, en mettant en uvre une succession de pivotages 90 et davances rectilignes, de faon ce que le robot rcupre sa trajectoire rectiligne initiale.

5 / Dfi 5 : faire suivre une ligne au robot


Remarque pour ce dfi, et quelle que soit la mthode utilise. Il est ncessaire, chaque sance, voire divers moments de la journe, de reprendre la mesure des teintes claires et sombres : la luminosit ambiante peut varier de faon significative et donc fausser lexcution du programme du robot.

5.1 Mthode par seuillage discriminant


Pour tablir le seuil, il convient de relever la valeur retourne par le capteur de couleur alors que le robot est plac sur un fond clair, puis sur un fond sombre. Le capteur nous retourne potentiellement une valeur comprise entre 0 et 100, 0 reprsentant le noir le plus complet tandis que 100 correspond au blanc le plus pur.
0 Noir 100 Blanc

Les lves commencent donc par crire un programme qui affiche en boucle, sur lcran du NXT, la valeur reue de ce capteur.

Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1

C A
Page 10 /21

Dans un contexte de mise au point, on obtient la valeur 16 pour le noir et la valeur 50 pour le blanc. Donc, toutes les valeurs infrieures ou gales 16 correspondent une teinte sombre, toutes celles qui sont suprieures ou gales 50 reprsentent une teinte claire. Mais quen est-il des valeurs intermdiaires, comprises entre 17 et 49 inclus ? On va donc couper la plage problmatique, en effectuant une moyenne algbrique, de faon dfinir un seuil au dessus duquel les valeurs indiqueront les teintes claires, et en dessous duquel seront les teintes sombres. Le seuil est alors calcul la valeur 33.
16 Noir 0 Noir 33 Seuil 50 Blanc 100 Blanc Sombre Clair

En gardant en tte cette notion de seuil, nous allons demander aux lves dcrire un algorithme permettant de faire suivre la ligne noire au robot. Certainement que les propositions seront diverses, mais on peut guider leur rflexion, en rappelant les diffrents exercices et rsultats passs : faire avancer et virer le robot. Les lves devront rinvestir ces connaissances. Le principe de base retenu ici, est de faire tourner le robot dans une direction donne (disons, la droite) si le capteur dtecte une teinte claire ; et dans la direction oppose (donc la gauche ici), pour la dtection dune teinte sombre. Le robot est plac de faon ce que le capteur ne soit pas trop loign de la ligne suivre, voire sur la ligne elle-mme. Ds le lancement du programme, le robot va tourner dans le sens correspondant la teinte sur lequel il est. Il se trouvera un moment o le capteur dtectera la teinte oppose : il virera dans lautre sens. Ainsi, par virages successifs et relativement faibles, le capteur du robot sort et rentre dans la bande noire ; le robot godille alors sur la bordure gauche de la bande noire !

C A
C

Un des premiers programmes possibles, qui met en uvre un bloc Alternative, serait alors celui qui figure cicontre.
Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1 Page 11 /21

Les lves pourront sapercevoir que le robot godille assez fortement avec cette solution. Ils pourront alors es sayer dutiliser une des autres faons de faire virer le robot, tout en gardant la configuration du bloc Alternative : Mais cette solution nest absolument pas fonctionnelle : le robot navance pas ! En effet, il se contente de pivoter sur lui-mme (autour du milieu de laxe de transmission des roues) ! On doit donc ajouter des blocs Moteurs permettant de le faire avancer. Le programme devient prsent ci-dessous : alors celui

Cette proposition ne rsout pas le problme de godille du robot, et elle est mme assez dangereuse utiliser : elle peut provoquer des dommages matriels cause des changements, relativement rapides, de sens de rotation des moteurs ! La dernire solution, qui consiste appliquer des puissances diffrentes aux moteurs, parat alors plus scurise pour le matriel, mais quen est-il de la raction du robot ? Godille-t-il moins ?

Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1

Page 12 /21

Ici, on applique des puissances de 10 % et 80 %. On constate que les courbes de la bande noire sont correctement suivies, mais toujours avec une godille non ngligeable. Les lignes droites gnrent elles aussi de la godille !

Si nous testons des puissances avec un cart moindre, par exemple 45 % et 55 %, on constate que le robot ne go dille quasiment plus sur les lignes droites, mais a une inertie assez importante pour les suivre (en fait la fr quence de la godille est seulement plus faible) ! Par contre, le robot nest plus capable du tout de calquer les courbures ! Quelle est alors la meilleure solution employer pour limiter la godille du robot ? Mettre deux capteurs optiques cte cte8 ? Rduire ou allonger la distance entre le capteur optique et laxe des roues ? Utiliser un algorithme plus pointu : introduction la logique floue (voir le chapitre 5.2-Mthode par logique floue page 13)? Introduire une rgulation plus fine ? Cest--dire, un PID (voir les rfrences la fin du document principal) ?

5.2 Mthode par logique floue


On vient de voir que la technique de seuillage nest pas des plus performantes. Il est possible damliorer la pr cision du suivi de la ligne en introduisant de la logique floue. Il sagit de ne plus faire une simple dichotomie binaire entre le noir et le blanc (seuillage), mais de penser que des nuances de gris sont possibles entre ces deux tons. En effet, par rflexion de la lumire, le capteur indiquera une valeur intermdiaire entre le 16 et le 50, selon son emplacement sur la bordure de la ligne. Dans un contexte de logique floue, la modlisation de lvolution des valeurs retournes par le capteur optique, lors de la transition entre le blanc et le noir de notre ligne, est fournie par la fonction dappartenance. Cette fonction peut revtir plusieurs forme, selon le problme traiter, et dans un cadre plus gnral (source : Frdric Sur) :
36: Mlange de Blanc et de Noir 50: Blanc pur 16: Noir pur

8 Cest la philosophie des vhicules de Braitenberg, voir les rfrences. Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1

Page 13 /21

linaire, triangulaire, trapzodale :

gaussienne :

sigmode :

Dans notre cas, une fonction dappartenance linaire donne dj de bons rsultats. On module la puissance appliquer chacun des moteurs, en appliquant la fonction dappartenance suivante :
Puissance PMax Vers la gauche PMin 16 Noir Gris 50 Blanc Moteur C Vers la droite Moteur A

Luminosit

Le principe de dplacement du robot reste identique : si une couleur sombre est dtecte, le robot tourne vers la gauche, sinon il tourne vers la droite. Mais le robot tourne plus ou moins fortement dans la direction adquate, selon la valeur reue du capteur op tique. Par exemple, plus la valeur est proche de 16 (le plus sombre possible), plus le robot tournera vers la gauche (le moteur C la puissance maximale et le moteur A la puissance minimale). lextrieur de la plage [16;50], les puissances PMin et PMax sont thoriquement utilises. En effet, le capteur ne peut retourner de valeur plus petite que 16, puisquelle correspond au plus sombre possible. De mme, et selon le mme raisonnement, une valeur suprieure 50 nest pas possible ! Dans la plage [16;50], les puissances des moteurs rpondent aux fonctions dappartenance linaires, que nous allons calculer maintenant. Pour le moteur A, la fonction dappartenance liant la puissance Pa et le niveau de gris n est de la forme :

P a ( n )= a a n + b a , a a et b a tant deux constantes calculer, et de mme pour le moteur C : P c ( n )= a c n + b c . Il sera galement commode de remarquer que dans notre modle la somme des deux
puissances est constante. En introduisant les puissances maximale et minimale, PMax et PMin, utiliser, et les valeurs de luminosits mesures pour le noir et pour le blanc, respectivement N et B, on a un systme dquations portant sur aa et ba :

P P Max P Min= a a N + b a ce qui amne par soustraction membre membre a a= Min (qui est ngatif) ; en P Max=a a B + ba N B
avec des facteurs respectifs B et N on obtient

combinant les deux quations b a ( N B )= P max N P Min B soit

Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1

Page 14 /21

ba =

P Min P Max P N P Min B P Max N P Min B . Finalement, on trouve P a ( n )= n + Max . N B N B N B P Max P Min P N P Max B n + Min = P Max + P Min P a ( n ) . N B N B
On commence par poser certaines valeurs constantes : PMin = 25 PMax = 75 Noir = 16 Blanc = 50

On obtient P c en changeant les rles de P Min et P Max :

P c ( n )=

Les deux fonctions dappartenance tant disponibles, il ne reste plus qu dvelopper le programme du robot.

Et on va dfinir des variables utiles au programme. En effet, les fonctions dappartenance ont des coefficients, calculs partir des constantes prcdentes ; lesquels coefficients sont considrs comme constants lors du fonctionnement du robot. Il nest pas besoin de les recalculer dans chaque boucle, une seule fois suffit. Et ceci dans le but dacclrer lexcution du traitement du suivi de ligne, en vitant de refaire des calculs identiques.

a a= ba =

P Min P Max P P Min , a c = Max = a a NB NB P N P Max B P Max N P Min B , bc = Min N B N B

Les morceaux de programmes pour calculer chacune des valeurs :

Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1

Page 15 /21

Pour des raisons de mise en page, chaque calcul de variable a t plac sur une ligne. Ces programmes, raliss dans le logiciel Lego MindStorms, sont en fait sur une ligne dexcution unique : le calcul de aa est immdiatement suivi de celui de ac, puis vient le module pour ba et finalement celui de bc : Le programme rel du suivi de ligne est alors abord, et vient se placer la suite de la partie prcdente.

Le principe de base reste de lire la valeur de luminosit du capteur optique, n (ci-contre) : puis de calculer la puissance appliquer sur chacun des moteurs, en utilisant les fonctions dappartenance : Pa(n) :

Pc(N) : (on pourrait simplifier).

Ces oprations sont ralises dans une boucle infinie :

Contre toute attente, ce programme, assez simple dans sa construction, ne fournira pas de bons rsultats. Effectivement, les puissances calcules pour les moteurs doivent tre appliques simultanment sur les deux moteurs, pour que le robot suive correctement la ligne. Cette constatation, observe exprimentalement par les lves, va conduire lenseignant parler de multitche : deux (ou plus) morceaux de programmes, qui doivent sexcuter en mme temps. Notez quici, il nest pas question de rentrer dans le dtail de ce quest un programme multitche, mais seulement de montrer que ce type de programmation peut rsoudre des problmes plus aisment. Le logiciel Lego MindStorms offre la possibilit de programmer non seulement squentiellement (les blocs sont sur une mme ligne dexcution horizontale : ils sont excuts les uns aprs les autres) ; mais aussi paralllement (plusieurs lignes dexcutions squentielles sont places les unes sous les autres, les blocs dune mme ligne dexcution se succdent squentiellement, mais toutes les lignes sont excutes en mme temps de faon concurrente). Une des modifications du programme serait alors de produire 4 lignes dexcutions diffrentes :
Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1 Page 16 /21

la premire permettant linitialisation et le calcul des variables ; une deuxime rcupre, en continu, la valeur de la luminosit sur le capteur et la place dans n ; les deux dernires sont charges de calculer, en boucle, les puissances, au moyen des fonctions dappartenance Pa(n) et Pc(n), et de les appliquer sur le moteur adquat. Le programme final est donc comme indiqu ci-dessous.

Notez quon a introduit une petite temporisation dune seconde avant de commencer raliser les boucles, afin dtre sr que la ligne dexcution de linitialisation des variables, sest correctement droule, et est acheve.

Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1

Page 17 /21

Annexe 2 : mise en uvre du projet


Pour cette partie, nous considrons un terrain de jeu rduit 8x8 cases. Il nest question ici que de montrer la faisabilit du projet demand aux lves.

1 / Programmer un parcours simple du robot.


En partant du point de dpart D, le robot doit rallier les points jalons 1 puis 2, pour aboutir la case darrive A. Des obstacles bien baliss sont placs sur le terrain. Les lves prparent le parcours sur papier, montr ici en vert. Le robot est simultanment pilot distance par tlcommande, pour permettre ces mmes lves dapprhender lenvironnement et les difficults potentielles. Prenons par exemple le trajet indiqu sur le plan ci-dessus. Un algorithme sommaire est alors crit :
Avancer de deux cases Pivoter vers la droite de 90 Avancer dune case Pivoter vers la gauche de 90 Avancer de quatre cases Pivoter vers la gauche de 90 Avancer dune case Raliser laction prvue sur les points jalons Avancer de deux cases Pivoter gauche de 90 Avancer de trois cases Pivoter vers la droite de 90 Avancer de deux cases Raliser laction prvue sur les points jalons Avancer dune case Pivoter vers la droite de 90 Avancer de trois cases

Le problme se ramne des actions primitives connues, qui ne devraient pas poser de problme aux lves, ce stade de lactivit. En supposant que les cases soient de dimensions 20 cm x 20 cm, il est facile de faire le programme correspon dant chaque action primitive.

1.1 Avancer de 20 cm
Les roues, fournies avec la version NXT 2.0, ont un diamtre de 4,32 cm. Un tour de moteur fait donc parcourir 13,57 cm au robot ( 4,32 cm =13,57 cm ). Pour avancer de 20 cm, les roues doivent effectuer 1,47 tours, soit 530,58 degrs. Le morceau de programme est alors :

Nous pouvons cette occasion dfinir un Bloc Personnel (voir le menu dition/Crer un nouveau Bloc). Ce bloc permet de faire avancer le robot de 20 cm, soit une case, et ressemble : Et pour faire avancer le robot de plusieurs cases, quatre par exemple, il suffit dexcuter le bloc Avancer 20 cm dans une boucle de comptage :
Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1 Page 18 /21

Lexprimentation montre quune certaine drive, droite ou gauche, se produit sur des ligne droites un peu trop longues. Ceci est li au fait que les moteurs, ayant pourtant les mmes puissances appliques, ne tournent pas exactement la mme vitesse : une diffrence, mme infime, est parfaitement visible dans la trajectoire. On veillera viter de trop longues lignes droites.

1.2 Pivoter droite, gauche de 90


Le principe a dj t abord : on rutilise les rsultats trouvs dans lAnnexe 1. Les morceaux de programme sont donc : pour pivoter droite

pour pivoter gauche

Ici aussi, une erreur de prcision est trs probable : la valeur de consigne en rotation du moteur, tant exprime uniquement par une valeur entire, le robot tournera soit un peu moins soit un peu plus que les 90 requis. La tra jectoire rectiligne suivante nest donc plus parfaitement dans laxe prvu ; nous en reparlerons plus tard.

1.3 Raliser une action


Nimporte quelle action est possible sur les points jalons. Il serait pourtant judicieux de rester dans lordre du rai sonnable, afin que le projet puisse aboutir. Par exemple, faire faire un tour complet au robot sur lui-mme, serait une source derreur de placement supplmentaire, pouvant fortement perturber les lves. Jai choisi, pour laction au point jalon, de faire dtecter la couleur de la case, afin de simuler la dcouverte ou non dune mtorite. Si la case est noire, le robot signale une dcouverte en mettant le son standard Detect . Le son Malfonction est jou dans tout autre cas. Le programme et le bloc personnel de laction sont alors :

1.4 Le programme complet peut maintenant tre ralis


On utilise les blocs personnels crs :

Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1

Page 19 /21

Lors de lexcution, on peut remarquer que le robot dvie rapidement, aprs avoir effectu un virage de 90 : sa nouvelle trajectoire nest pas exactement perpendiculaire celle avant de tourner ! Une des causes en est que le bloc Moteur est activ durant le temps ncessaire pour tourner dun certain nombre de degrs. Les calculs effectus dans lannexe 1 nous indiquent que 264,58 sont requis pour pivoter de 90 exactement. Seulement, ce mme bloc moteur naccepte que des valeurs entires de consigne : nous devons alors choisir de larrondir, soit 264 (perte de =0,58 de tour de roue), soit 265 (gain de =0,42 de tour de roue). En reprenant les formules prcdentes : = Perte de 0,58 de tour de roue : = Gain de 0,42 de tour de roue : = 2 r . e le robot tourne de 900,1972 =89,8027 . le robot tourne de 90+ 0,1428 =90,1428 .

0,58 2 2,16 =0,1972 12,7 0,42 2 2,16 =0,1428 12,7

De surcrot, plus le nombre de virages dans un mme sens est important, plus les erreurs darrondi se cumulent, faisant dvier dautant plus rapidement le robot. Il nest pas facile dapporter une solution ce problme ; car plus le robot sloigne du centre du pivot, plus il dvie, et plus il faudra corriger sa trajec- A toire. ce niveau-l, le programme devient rellement complexe. Une solution simple pour rattraper ces erreurs darrondi, peut tre de faire suivre au robot une ligne de couleur contraste sur le terrain. Le robot est remis dans une bonne direction un certain moment du parcours. Lentre de la ligne 2 suivre sera prvue en consquence, et devra tre assez large pour que le robot dviant entre dans la zone sombre, et accroche la bordure de la bande suivre. Pour faciliter les choses, une bande bleue, de la largeur dune case complte, pourrait tre trace afin que le robot sache quil doit suivre une ligne dans cette zone. Le terrain ressemblerait la figure ci-contre.

1.5 viter un obstacle imprvu


Sur la base du programme prcdent, on peut ajouter la dtection et le contournement des obstacles imprvus. Le capteur ultrasonique est mis contribution pour cela. Le robot avance en ligne droite, selon son programme, tant que rien nempche sa progression. Lorsquun obstacle est dtect, une branche conditionnelle gre lvitement.
Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1 Page 20 /21

Son algorithme est :


Emettre le son Object detected Pivoter de 90 vers la droite Avancer dune case Pivoter de 90 vers la gauche Avancer de deux cases Pivoter de 90 vers la gauche Avancer dune case Pivoter de 90 vers la droite

Au final, et sans tenir compte des erreurs lies aux virages voques plus haut, le robot a retrouv sa trajectoire initiale, comme sil navait avanc que de deux cases en ligne droite. Cette partie du programme est :

Nous allons voir quil est ncessaire de mmoriser le fait que le robot ait parcouru lquivalent de deux cases en trajectoire rectiligne. Pour ceci, le programme se termine par lajout de ces deux cases au nombre de cases parcourues. Ce module fait lobjet dun nouveau bloc personnel : Le programme de dtection de lobstacle final :

Ce programme peut avantageusement remplacer le programme du bloc personnel Avancer de 20cm ralis un peu avant. Comme nous le voyons, dun point de vue avance du robot, la branche de la conditionnelle excute lorsquau cun obstacle nest dtect (en bas sur le programme), permet un parcours de 20 cm, tandis que son antagoniste (en haut) fera un trajet quivalent deux cases, soit 40 cm. Cette diffrence doit tre prise en compte lorsquon doit faire avancer le robot dun nombre de cases (NbreCase dans le programme) prcis. La variable Number1 est incrmente de 1 dans le bloc personnel Tout droit et de 2 dans le bloc Contourne. Notons aussi que les obstacles imprvus ne sont ici pris en compte, que lors de lavance du robot, et non durant les virages, ni lventuel suivi de ligne.
Ministre de lducation nationale (DGESCO IGEN) ISN Terminale srie scientifique Initiation la robotique - annexe 1

Page 21 /21