SE CONNECTER
1,2,3... codez ! | Le site de la Fondation La main à la pâte
Module 123 Codez | Programmer | Informatics and Digital Creation

Projet « Robotique » – Variante du projet avec Aseba_VPL

1, 2, 3, codez ! - Activités cycle 4 - Projet « Robotique » - Variante du projet avec Aseba/VPL

Discipline dominante

Technologie

Résumé

Cette variante reprend les principales étapes des séances de programmation de Thymio, adaptées pour le langage Aseba/VPL.

Matériel

Pour chaque groupe

  • un ordinateur avec Aseba Studio installé
  • un robot Thymio
  • Fiche 8

Avant-propos

Cette annexe reprend exactement le déroulé du projet « robotique avec Thymio » : tout le fil en est détaillé au cours des pages précédentes, et nous ne reprenons ici que les corrigés des étapes ou exercices, avec quelques commentaires pertinents le cas échéant.

Préparation

L’utilisation de VPL requiert l’installation d’Aseba Studio, que nous avons déjà décrite (https://www.thymio.org/fr:start).  Le lancement est cependant un peu différent.

Pour lancer VPL
Méthode 1 Méthode 2
1.    Brancher Thymio sur l’ordinateur avec le câble USB (il s’allume)
2.    Lancer Thymio-VPL
1.    Lancer Thymio-VPL (une fenêtre « Choix d’une cible Aseba » s’ouvre)
2.    Brancher Thymio sur l’ordinateur avec le câble USB (il s’allume)
3.    Cocher la case « Port série », sélectionner « Thymio-II Robot », appuyer sur « Connecter »
Pour programmer

1.    Ecrire le programme
2.    Sauvegarder le programme
3.    Exécuter le programme

Séance 2 : premier programme en VPL

Le professeur écrit à l’écran le programme suivant :

NB : VPL présente les instructions sous la forme de paires « capteur-actionneur » permettant d’expliquer quelle action effectuer dans quel cas. Les capteurs sont toujours à gauche et les actionneurs à droite.

Il demande aux élèves d’essayer de prédire ce que fera le programme (et ce qu’il ne fera pas : revenir à l’état initial).

Dans VPL, les composants du robot s’affichent très distinctement :

  •  Capteurs (représentés dans le langage VPL par des cartes sur fond orange) : à noter qu’il n’est pas possible dans VPL d’en lire des valeurs numériques. Dans « VPL avancé », on pourra nuancer un peu plus ce constat, mais de manière moins fine qu’avec Blockly.
  •  Actionneurs (représentés dans le langage VPL par des cartes sur fond bleu) 
  •  Ordinateur : apparie des évènements liés aux détections par les capteurs (colonne de gauche sur l’interface VPL) et des actions liés aux actionneurs (colonne de droite).

Après l’étude de ce cas, les élèves dicteront comment compléter ce programme par un contrordre :

Le professeur démontre ainsi deux états fondamentaux des capteurs de Thymio vus par VPL : actif (icône blanche et rouge) et inactif (icône noire). Il passe sous silence pour l’instant l’état « indifférent » (icône grise) qui sera longuement approfondi à la séance suivante.

Note pédagogique :
L’interface de VPL présente à droite l’équivalent textuel du programme graphique réalisé. Cela permet d’aborder le fait qu’il existe de nombreux langages de programmation, certains graphiques, certains textuels, mais que tous doivent être interprétés par la machine.

Séance 2 : défis pour prendre VPL  en main

Défi 1 : Thymio avance grâce à la flèche du haut et s’arrête grâce au bouton central

Défi 2 : Thymio tourne grâce aux flèches

Défi 3 : Thymio s’arrête si un obstacle est devant lui

À ce stade, nous arrêtons l’imitation du mode mauve pour incorporer une détection d’obstacles.

Séance 3 - Défi 4 : Thymio contourne les obstacles

Pour relever le défi 4, il faut prévoir une porte de sortie (ligne 5) : si Thymio ne détecte explicitement rien devant lui, alors il peut aller tout droit (sinon il ne redémarrerait jamais).

Nous découvrons ici la première différence notable entre VPL et Blockly : il est facile d’ajouter des conditions additives (logique « ET ») avec VPL, ce qui nous permet de gérer facilement les 5 capteurs frontaux.
A contrario, avec Blockly, l’expression combinant tous ces capteurs frontaux aurait été bien plus longue. Par soucis de lisibilité, nous n’avons donc traité que 3 capteurs sur 5 avec Blockly. Les 2 programmes sont donc similaires, mais pas identiques.

Ce dernier défi oblige les élèves à explorer des logiques ET ou OU. En guise de consolidation, le professeur  distribue la Fiche 8.
Dans le cas A, Thymio avance tout droit lorsqu’on appuie sur la flèche du haut ; SI les trois capteurs centraux détectent un obstacle simultanément, ALORS Thymio s’arrête. C’est une logique « ET ».
Dans le cas B, Thymio avance tout droit lorsqu’on appuie sur la flèche du haut ; SI l’un des trois capteurs centraux détecte un obstacle simultanément, ALORS Thymio s’arrête. C’est une logique « OU ».

Séance 4 - Défi 5 : imiter le Thymio pisteur (cyan)

  • 1. SI le capteur de châssis gauche détecte un sol noir ET le capteur de châssis droit détecte un sol noir, ALORS le capot s’allume en vert et Thymio avance tout droit.
  • 2. SI le capteur de châssis gauche détecte un sol blanc ET le capteur de châssis droit détecte un sol blanc, ALORS le capot s’allume en rouge et Thymio tourne à gauche.
  • 3. SI le capteur de châssis gauche détecte un sol blanc ET le capteur de châssis droit détecte un sol noir, ALORS le capot s’allume en vert anis et Thymio pivote sur place vers la droite.
  • 4. SI le capteur de châssis gauche détecte un sol noir ET le capteur de châssis droit détecte un sol blanc, ALORS le capot s’allume en turquoise et Thymio pivote sur place vers la gauche.

Les élèves peuvent remarquer que l’absence d’événement est aussi, d’un point de vue programmatique, un événement à part entière. En effet, les capteurs de Thymio ne sont pas capables stricto sensu de détecter un sol noir : précisément, dans ce cas-là ils signalent qu’ils ne détectent pas de sol blanc. La programmation VPL permet donc de vérifier l’état actif des capteurs (carré blanc avec lumière rouge = « je détecte »), passif (carré noir = « je ne détecte rien ») ou indifférent (carré gris = « je ne regarde pas l’état de ce capteur »).
D’autre part, cet exemple confirme la logique exclusive de VPL : les capteurs impliqués dans une même paire action-évènement sont liés par un opérateur logique ET ! Si l’on voulait une logique additive (un opérateur logique OU), il faudrait créer deux lignes différentes, avec des états indifférents pour chaque capteur à tour de rôle.
Comme illustré ici, on peut associer plusieurs actions à un seul et même évènement. C’est facultatif pour l’instant, mais cela deviendra vite obligatoire, dès la séance suivante. (Dans des versions précédentes de VPL 1.5, il était possible de créer plusieurs lignes concernant un seul et même évènement, désormais toutes les actions sont forcément rassemblées ; cela facilite non seulement la lecture mais également le débogage.)

Séance 5 : Thymio dans tous ses états

Note pédagogique :
 Cette étape est indispensable en programmation VPL, car ce langage de programmation, en version simplifiée, ne permet pas de créer des variables ou de manipuler de la mémoire. Cependant, le saut conceptuel qui permet de passer de VPL « simple » à VPL « avancé » risque de freiner la progression des élèves les en difficulté.

Les élèves arrivent à la conclusion qu’il faut dédier un seul capteur au suivi de la piste (disons le gauche) et libérer l’autre (ici le droit) pour la lecture du code-barres. Il faut donc apprendre à :

  •  Suivre une piste avec un seul capteur
  •  Lire un code-barres
  •  Retenir quel mode utiliser en fonction de l’information du code-barres

Le professeur annonce que Thymio a effectivement une (toute) petite mémoire interne qu’il est possible d’utiliser pour mémoriser des sous-programmes différents à utiliser dans des conditions différentes. (Dans la plupart des langages de programmation, Blockly en particulier, cette entité serait appelée « variable ».) Il introduit alors le mode « avancé » de la programmation Thymio : ce mode permet de réaliser des programmations plus fines, en jouant sur la sensibilité des capteurs et en ayant accès aux « états internes » de Thymio. Le professeur fait la démonstration sur son propre ordinateur projeté au tableau : ce mode s’active en appuyant sur l’icône « lauréat » de VPL.
Il y a plusieurs changements remarquables : les icônes des évènements sont plus complexes et il y a de nouvelles cartes avec des réveils ou un cercle de 4 segments. Les premières permettent de gérer des chronomètres, et les secondes donnent accès à l’interface des états de Thymio. On retrouve également ce cercle segmenté combiné systématiquement à chaque action sous forme d’une carte verte.

Le professeur reprend alors le programme du premier exercice effectué par les élèves :

Il leur demande de trouver l’algorithme qui permettrait d’avoir le même comportement, mais en appuyant exclusivement sur la flèche « haut ». Ils élaborent un algorithme comme celui-ci, que le professeur  traduit aussitôt sous VPL :

Les élèves appliquent ce programme à leur propre Thymio, pour vérifier ce qu’il fait. C’est également la première fois qu’ils doivent appliquer plusieurs actions au même évènement. Ils observent en particulier que le capot du Thymio s’illumine partiellement (arc N-W) lorsqu’il roule : c’est la signature de l’état interne qui a été activé.

Les élèves peuvent éventuellement remarquer que les états se gèrent comme des capteurs : il est possible de combiner des états, ou d’en ignorer d’autres (arc blanc = état 0, arc orange = état 1, arc gris = état indifférent). Le professeur demande aux élèves de compter combien d’états internes sont disponibles : puisqu’il y a quatre « cadrans » (on pourrait parler de « bits »), chacun avec deux états explicites, il y a 2 (pour le premier bit) x 2 (pour le second bit) x 2 (pour le troisième bit) x 2 (pour le quatrième bit) = 16 états possibles… Thymio peut donc différencier au plus 16 situations différentes. Par défaut, à l’allumage, Thymio est dans l’état 0000.
Dans l’exemple ci-dessus, l’état « ROULE » est codé par 1XXX, et l’état « STOP » est codé par 0XXX. (On note par X les bits non pertinents. On peut bien évidemment les expliciter 1000 et 0000.)

Note pédagogique :
 Il n’est pas attendu ici que les élèves comprennent que 4 bits permettent de décrire 16 informations différentes (ici, des états internes de Thymio). L’approche combinatoire proposée suffit. Cela peut néanmoins servir de déclencheur pour une séance parallèle sur le binaire. Voir à ce sujet la séquence 1 du projet « 1, 2, 3…codez ! » pour le cycle 3.

Séance 5 : sensibilité de Thymio

Sous VPL, le programme ressemble à ceci :
  • 1. SI Thymio est dans l’état 0XXX ET que la flèche « haut » est appuyée, ALORS Thymio avance et passe dans l’état 1XXX.
  •  
  • 2. Quel que soit l’état de Thymio, SI le bouton central est appuyé, ALORS Thymio s’arrête et passe dans l’état 0XXX.
  •  
  • 3. SI Thymio est dans l’état 1XXX ET que le capteur de châssis gauche détecte un sol blanc, ALORS le capot de Thymio se colore en rouge.
  •  
  • 4. SI Thymio est dans l’état 1XXX ET que le capteur de châssis gauche détecte un sol gris, ALORS le capot de Thymio se colore en vert.
  •  
  • 5. SI Thymio est dans l’état 1XXX ET que le capteur de châssis gauche détecte un sol noir, ALORS le capot de Thymio se colore en bleu.

Les élèves découvrent ainsi qu’il est possible d’obtenir des valeurs plus nuancées sur les capteurs, avec une quatrième option disponible : « mi-noir mi-blanc », définie par des seuils minimum et maximum.

Note pédagogique :
Dans le cadre de ce calibrage, il n’est évidemment pas obligatoire de faire avancer le robot, et encore moins d’ajouter les états internes, mais c’est une bonne occasion de s’approprier l’outil vu à l’instant. De plus, cela permet d’écrire des programmes plus propres, avec des comportements distincts « repos » et « actif » : Thymio ne commence à agir que lorsqu’on le déclenche.

Séance 5 : suiveur de ligne amélioré

Le programme de la tortue est désormais :

  • 1. SI Thymio est dans l’état 0XXX ET que la flèche « haut » est appuyée, ALORS Thymio avance et passe dans l’état 1XXX.
  • 2. Quel que soit l’état de Thymio, SI le bouton central est appuyé, ALORS Thymio s’arrête et passe dans l’état 0XXX.
  • 3. SI Thymio est dans l’état 1XXX ET que le capteur de châssis gauche détecte un sol blanc, ALORS le capot se colore en vert clair et Thymio pivote vers la droite.
  • 4. SI Thymio est dans l’état 1XXX ET que le capteur de châssis gauche détecte un sol gris, ALORS le capot se colore en vert vif et Thymio avance tout droit.
  • 5. SI Thymio est dans l’état 1XXX ET que le capteur de châssis gauche détecte un sol noir, ALORS le capot se colore en vert foncé et Thymio pivote vers la gauche.

Les différents états de Thymio sont définis ici de la façon suivante :

  • 0XXX = « repos »
  • 1XXX = « suiveur ».

Séance 6 : le programme du lièvre

Le programme du lièvre est quasi identique à celui de la tortue vu ci-dessus : le principal changement réside dans la vitesse de déplacement.

Solution 1 : freinage d’urgence

Solution 2 : suivre la tortue

Séance 7 : programme final du lièvre

Le programme suit le logigramme dressé par la classe, avec une dénomination différente pour les différents états :

  •  Repos [code 0000]
  •  Suiveur de ligne [code 1000]
  •  Pressant : il suit la tortue et se prépare à doubler (il met son clignotant) [code 1100]
  •  En train de se déporter : il change de voie [code 0010]
  •  En train de se rabattre : il cherche à se rétablir sur la nouvelle voie [code 0001]
Cette proposition combine astucieusement les codes des états « suiveur de ligne » et « pressant », car même si le lièvre cherche désormais à doubler dans l’état « pressant », il est tout de même obligé de suivre la ligne tant qu’il n’a pas eu l’autorisation de changer de file. Par contre, il faut cesser immédiatement de suivre la ligne dès que le signal du dépassement est donné.

En ce sens, l’état 1X00 répond parfaitement à ce critère, car c’est le point commun entre les états «  suiveur 1000 » et « pressant 1100 ». Le programme suivant est une solution possible. En particulier, il est optimisé au sens où il limite les cas redondants. Par exemple, il est possible de programmer deux lignes distinctes « si mon état est 1000 [SUIVEUR] et que mon capteur de châssis gauche voit un sol gris, alors je vais tout droit » et « si mon état est 1100 [PRESSANT] et que mon capteur de châssis gauche voit un sol gris, alors je vais tout droit », ou alors de factoriser tout ceci en « si mon état est 1X00 et que mon capteur de châssis gauche voit un sol gris, alors je vais tout droit ». Il est envisageable de simplifier beaucoup le programme proposé, mais au détriment de la lisibilité, ce qui à ce stade d’apprentissage ne serait pas constructif.
  • 1. SI Thymio est dans l’état 0000 ET que la flèche « haut » est appuyée, ALORS Thymio avance tout droit à grande vitesse et passe dans l’état 1000.
     
  • 2. Quel que soit l’état de Thymio, SI le bouton central est appuyé, ALORS Thymio s’arrête, passe dans l’état 0XXX, et son capot s’éteint.
     
  • 3. SI Thymio est dans l’état 1X00 ET que le capteur de châssis gauche détecte un sol blanc, ALORS le capot se colore en orange et Thymio pivote vers la droite.
     
  • 4. SI Thymio est dans l’état 1X00 ET que le capteur de châssis gauche détecte un sol gris, ALORS le capot se colore en rouge et Thymio avance tout droit à grande vitesse.
     
  • 5. SI Thymio est dans l’état 1X00 ET que le capteur de châssis gauche détecte un sol noir, ALORS le capot se colore en brun et Thymio pivote vers la gauche.
     
  • 6. SI Thymio est dans l’état 1X00 ET que le capteur frontal détecte un obstacle lointain, ALORS Thymio avance tout droit à vitesse modérée et passe dans l’état 1100.
     
  • 7. SI Thymio est dans l’état 1X00 ET que le capteur frontal détecte un obstacle proche, ALORS Thymio avance tout droit à vitesse lente et passe dans l’état 1100.
     
  • 8. SI Thymio est dans l’état 1X00 ET que le capteur frontal détecte un obstacle immédiat, ALORS Thymio freine, émet un son, et passe dans l’état 1100.
     
  • 9. SI Thymio est dans l’état 1100 ET que le capteur de châssis droit détecte un sol noir, ALORS Thymio se déporte à gauche, passe dans l’état 0010, déclenche un chrono de 2s et le capot se colore en jaune.
     
  • 10. SI Thymio est dans l’état 0010 et que le chrono s’arrête, alors Thymio avance tout droit à grande vitesse et passe dans l’état 0001.
     
  • 11. SI Thymio est dans l’état 0010 et que le capteur de châssis gauche détecte un sol noir, ALORS Thymio pivote à droite et passe dans l’état 1000.

Ce programme corrigé est disponible, ainsi que tous les autres, ICI.


À gauche: situation initiale, la tortue a un peu d’avance sur la voie de droite, le lièvre la suit de peu sur la même voie.
À droite : la tortue continue son chemin (on repère bien ici l’état 1000 du mode SUIVEUR), tandis que le lièvre se déporte sur la gauche pour doubler (on repère également l’état 0010 du mode DEPORTE).