Fil d'Ariane
Mis à jour le mercredi 5 avril 2017
  • 10 heures
  • Facile

Ce cours est visible gratuitement en ligne.

Ce cours est en vidéo.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

Donnez un peu d’autonomie à votre Thymio

Connectez-vous ou inscrivez-vous pour bénéficier de toutes les fonctionnalités de ce cours !

Jusqu’où peut-on aller dans la programmation d’un robot ? Dur à dire pour le moment, alors je vous propose de corser un peu les choses avec Thymio, jusqu’à tester un peu ses limites… Ou les vôtres ? 😉

Pour le moment, que diriez-vous de réaliser un nouveau défi de programmation Thymio ? C’est reparti pour un petit tour de Thymio VPL !

Votre défi : Olé !

Vous allez programmer le comportement suivant :

  • Le robot avance s’il ne détecte rien devant lui.

  • Le robot s’arrête s’il détecte un obstacle devant lui et ne repart que si on enlève l’obstacle.

  • Le robot évite un obstacle situé sur un de ses côtés tout en continuant à avancer.

À vous de jouer !

Construisez votre programme par étape, en testant régulièrement vos instructions. Et si vous avez encore un peu de mal, suivez le guide ! 

Etape 1

  1. Transformez tout d’abord la consigne « Le robot avance s’il ne détecte rien devant lui » en logique évènementielle :
    Instruction 1 : « Si … alors … »

  2. Quel bloc de capteurs est concerné ? Celui avec les capteurs horizontaux de proximité.

 3. Quel bloc d’actionneurs utiliser ? Je suis sûr que vous allez trouver facilement. 😀 À vous de bien le paramétrer.

Créez et testez cette première instruction dans VPL avant de passer à la prochaine étape.

Etape 2

Pour la deuxième partie de la consigne, procédez toujours avec la même logique :

  1. Transformez la consigne « Le robot s’arrête s’il détecte un obstacle devant lui et ne repart que si on enlève l’obstacle » en logique évènementielle :
    Instruction 2 : « Si … alors … »

  1. Quel bloc de capteurs est concerné ?

  2. Quel bloc d’actionneurs utiliser ?

Selon vos réponses à ces question, à vous de créer et tester cette nouvelle instruction dans VPL. Vous pouvez vous y reprendre autant de fois que nécessaire, l’ordinateur est extrêmement patient et docile.

Etape 3

Il ne reste plus qu’une consigne à transcrire ! 

1. Transformez la consigne « Le robot évite un obstacle situé sur un de ses côtés tout en continuant à avancer » en logique évènementielle.

Instruction 3 : « Si le robot détecte quelque chose à gauche alors il avance en tournant à … »
Instruction 4 : « Si le robot détecte quelque chose à droite alors … »

2. Quel bloc de capteurs est concerné pour chacune des instructions ?

3. Quel bloc d’actionneurs utiliser pour chacune des instructions ?

À vous de deviner pour créer et tester ces deux instructions dans VPL.

Vos quatre instructions étant réunies dans le programme, sauvegardez-le puis exécutez-le. Thymio fait bien ce qui est demandé ? Bravo !

Si non, n’hésitez pas à reprendre chaque instruction pour voir où ça coince. Si besoin, gardez provisoirement une seule instruction dans le programme pour voir si elle fonctionne correctement. 

Et bien sûr regardez ma vidéo pas-à-pas pour vérifier, et si besoin rectifier, votre programme.     

Le pas à pas en vidéo  

Vous pouvez aussi  compléter votre programme en enrichissant le comportement (couleurs, sons, précisions des détections, …). Mais si vous êtes satisfaits, revenons d'abord sur une subtilité du programme avant de passer au prochain défi.

Je vous ai parlé d’un suspense à l'étape 1, vous vous souvenez ? Allons-y !

Testez le programme ci-dessous :

Testez le programme
Testez le programme

Qu’observez-vous ? Au lancement le robot avance et quand on tapote dessus il s’arrête, normal. Mais ensuite… il ne repart pas, même s’il n’y a pas d’obstacle devant, et que la première instruction dit que le robot doit avancer s'il n'y a pas d'obstacle devant. C’est de la sorcellerie ?

Non, il y a bien sûr une explication : pour Thymio, un évènement a lieu quand un capteur détecte quelque chose de nouveau, c’est à dire quand la condition portée par le bloc capteur devient vraie ! Autrement dit, il ne suffit pas que ce soit vrai, il faut que ça devienne vrai, qu’il y ait un changement .

Racontons l’histoire de ce programme :

“Il était une fois un robot capable d’avancer tout droit si son capteur central découvrait qu’il n’y avait pas d’obstacle pour l’en empêcher, les autres capteurs faisant la sieste. Un jour, il décide de se lancer dans un endroit vierge de tout obstacle. Évidemment, au lancement, la situation est toute nouvelle, le capteur central découvre que c’est libre et le robot se met alors à avancer.

Tout va bien, il se promène tranquillement quand soudain, surgie de nulle part, une main inconnue vient lui tapoter le dos. Aussitôt il s’arrête !

La main disparaît ensuite, le choc est passé mais le robot ne repart pas ! Pourquoi ?

Bien sûr la voie est libre, mais le capteur central ne découvre rien de nouveau, en fait rien n’a changé par rapport à tout à l’heure, aucun évènement ne survient, et donc le robot n’avance pas. Il faudrait un autre évènement pour le faire repartir.”

Revenons maintenant à notre défi, et étudions la situation de l’étape 1 si on ne teste qu’avec le capteur central pour faire avancer le robot quand il n’y a pas d’obstacle devant. Testez le programme ci-dessous : 

Testez cette alternative
Testez ce programme alternatif

Au début, le robot avance, c’est parfait. S'il détecte un obstacle sur un de ses côtés, le robot tourne. Mais une fois qu’a eu lieu une détection à droite ou à gauche, il ne repart plus droit ! Pourtant il n’y a pas d’obstacle devant. Certes, mais la situation surveillée par le bloc capteur n’a pas changé puisque vous ignorez les capteurs sur les côtés (qui sont paramétrés en gris) dans cette première instruction : il n’y a donc pas de nouvel évènement détecté correspondant à cette première instruction.

Pour que le robot reparte droit après avoir éviter un obstacle, il fallait donc bien coder ce programme  : 

Un programme plus performant
Un programme plus adapté

Avec ce programme, lorsqu'un capteur (central ou sur les côtés) détecte quelque chose puis plus rien (passe de l'état “détecte” à “ne détecte pas”), l'évènement correspondant à la première instruction est à nouveau déclenché, donc la première instruction est exécutée et le robot avance droit.

En résumé 

Pour programmer le comportement de votre robot dans le langage Thymio VPL, vous pouvez procéder par étape et appliquer la méthode suivante :

  • Transformer le comportement désiré en logique évènementielle avec une ou plusieurs instructions conditionnelles

  • Pour chaque instruction conditionnelle, identifier le bloc capteur concerné ainsi que le paramétrage à effectuer

  • Pour chaque instruction conditionnelle, identifier le ou les blocs actions à utiliser, ainsi que le paramétrage à effectuer

  • Créer au fur et à mesure chaque nouvelle instruction dans VPL, en testant à chaque fois pour vérifier le comportement obtenu et modifier l’instruction si nécessaire !

Attention à la petite subtilité de la programmation du Thymio : une instruction est exécutée lorsque l'évènement est déclenché, et ce, jusqu'à ce qu'un autre évènement vienne contredire l'instruction.

Exemple de certificat de réussite
Exemple de certificat de réussite