Environnement Thymio VPL

Environnement Thymio VPL

Le langage de programmation graphique (en anglais VPL: Visual Programming Language) permet de programmer Thymio visuellement. Il est disponible de deux façons :

  • Le programme Thymio VPL fournit un environnement VPL indépendant.
  • Le VPL est disponible comme plug-in pour Aseba Studio. Cliquer sur Charger VPL sous l'onglet Outils pour le lancer.

Les fichiers sauvegardés dans un environnement peuvent être ré-ouverts dans l'autre et vice-versa.

Pour les utilisateurs de versions précédentes

La version 1.4 a amené plusieurs nouveautés. Si vous êtes habitués à la version 1.3 ou précédente, veuillez lire le guide de transition.

Survol de l'environnement

Dans VPL, un programme est écrit en assemblant des paires de blocs d'événement et d'action. La fenêtre se présente ainsi :

vpl.png
  1. La barre d'outils contient les boutons pour ouvrir et sauvegarder des fichiers, lancer ou arrêter l'exécution du programme, et changer de mode d'édition.
  2. Cette zone est dédiée à la construction du programme. Le programme sert d'instruction au robot pour déterminer son comportement.
  3. Cette ligne indique si les paires événement-action composant le programme sont correctes et complètes.
  4. Les blocs d'événements déterminent quand le robot doit démarrer une action. Ces blocs peuvent être ajoutés au programme en cliquant dessus ou en les glissant sur le carré gauche d'une paire événement-action qui apparaît dans la zone programme.
  5. Les blocs d'action déterminent comment le robot doit réagir. Ces blocs peuvent être ajoutés au programme en cliquant dessus ou en les glissant sur le ou les carré(s) à droite d'une paire événement-action qui apparaît dans la zone programme.
  6. En mode indépendant de Studio, le programme texte correspondant au programme graphique est écrit dans cette zone. Quand utilisé à l'intérieur de Studio, le programme texte est écrit dans Studio.

Une archive zip contenant les images de tous les blocs peut être téléchargée ici.

Boutons de la barre d'outils

filenew.svgz nouveau Ce bouton ouvre une nouvelle page vierge dans l'éditeur.
fileopen.svgz ouvrir Ce bouton ouvre un fichier existant.
save.svgz enregistrer Ce bouton enregistre le programme dans le fichier courant.
save.svgz enregistrer sous Ce bouton enregistre le programme dans un fichier choisi par l'utilisateur.
play.svgz charger et exécuter Ce bouton charge et exécute le programme dans le robot.
stop.svgz arrêter Ce bouton arrête le robot. Une fois qu'on arrête le robot, il faut cliquer à nouveau sur charger et exécuter pour redémarrer le programme.
vpl-advanced_off.svgz mode avancé Ce bouton permet de passer dans le mode d'édition avancé. Le mode avancé fournit des fonctionnalités additionnelles.
info.svgz information Ce bouton charge cette page de documentation de référence.
screenshot.svgz screenshot Ce bouton permet de prendre une capture d'écran du programme VPL.

Assembler des paires

La programmation dans VPL se fait en association des blocs événement à un ou plusieurs blocs action. Vous pouvez le faire en cliquant-glissant les blocs dans la zone de programmation. Par exemple, une paire composée d'un événement bouton et d'une action moteurs vous permettra de faire avancer le robot lorsque son bouton est pressé.

play.svg

Plusieurs paires d'instructions peuvent être assemblées. Elles peuvent être cliquées-glissées pour les réarranger. Cliquer sur le bouton + permet d'ajouter une nouvelle paire vide et cliquer sur le bouton X permet d'en effacer une. Une fois le programme créé, il doit être chargé dans le robot en cliquant sur le bouton charger et exécuter de la barre d'outils.

Pour résumer, les étapes de la programmation visuelle sont:

  1. Déposer un bloc événement sur la gauche de la paire événement-action
  2. Déposer un ou plusieurs blocs action sur la droite de la paire événement-action
  3. Répéter 1 et 2 jusqu'à ce que le programme soit complet
  4. Cliquer sur le bouton charger et exécuter et voir si le robot se comporte comme prévu

Mode basique

Quand VPL démarre, il est en mode basique. Dans ce mode, seul certains blocs sont visibles afin de rendre l'interface facile à comprendre.

Blocs d'événements

event-buttons.svg boutons Cet événement s'active lorsque un ou plusieurs boutons sont touchés. Pour chaque bouton, gris signifie ignorer le bouton, rouge indique que le bouton doit être touché. Si tous les boutons sont ignorés, cet événement s'active périodiquement 20 fois par seconde.
event-prox.svg capteurs de distance horizontaux Cet événement se déclenche lorsque le robot détecte un objet proche ou loin du robot (maximum 8-12 cm). Pour ces capteurs, le gris signifie que le capteur n'est pas pris en compte; blanc signifie que l'objet est proche; noir signifie que l'objet est détecté mais pas proche du robot. Si tous les capteur ne sont pas pris en compte (tous gris), cet événement sera lancé automatiquement 10 fois par seconde.
event-ground.svg capteur de distance au sol Cet événement se déclenche lorsque le robot voit un sol sombre ou clair. Il mesure la quantité de lumière réfléchie par le sol. S'il n'y a pas de sol, il n'y a pas de réflexion. Pour ces capteurs, gris signifie que le capteur n'est pas pris en compte; blanc signifie que le sol est clair; noir signifie que le sol est sombre. Si tous les capteur ne sont pas pris en compte (tous gris), cet événement sera lancé automatiquement 10 fois par seconde.
event-tap.svg détection de choc Cet événement s'active lorsque le robot détecte un choc (par ex. si on tape dessus).
event-clap.svg détection de claquement Cet événement s'active lorsque le robot détecte un fort bruit comme un claquement de main à proximité.

Blocs d'action

action-motors.svg moteurs Cette action définit la vitesse des moteurs gauche et droite (et donc des roues).
action-colors-up.svg couleur du haut Cette action définit la couleur du haut du robot en un mélange de rouge, vert et bleu (RGB).
action-colors-down.svg couleur du bas Cette action définit la couleur du bas du robot en un mélange de rouge, vert et bleu (RGB).
action-music.svg musique Cette action joue une mélodie d'au maximum 6 notes définies par l'utilisateur. Pour chaque note, sa hauteur dépend de sa position verticale. Un point blanc produit une note qui dure deux fois plus longtemps qu'un point noir. Pour définir une note, cliquez sur la barre où vous voulez qu'elle apparaisse. Un clic sur un point le change de blanc à noir. Un clic supplémentaire transforme la note en silence.

Mode avancé

vpl-advanced_on.svgz

Cliquer sur le bouton mode avancé (voir à droite) dans la barre d'outils permet de construire des programmes avec un état interne. Cela permet également d'utiliser des versions avancées de certains blocs ainsi que de nouveaux blocs.

Les états internes

La réponse du robot à un événement peut maintenant dépendre de son état. Supposons que vous êtes un robot avec un programme pour décider quoi manger à midi. L'événement est « il est midi maintenant » ; l'action est « manger X ». Mais X peut dépendre de la météo :

  • il est midi maintenant et il fait froid → manger une soupe pour le repas de midi
  • il est midi maintenant et il fait chaud → manger une salade de fruit pour le repas de midi

En terme de paire événement-action, l'action du robot dépend à la fois de l'événement et de l'état du robot ; par exemple :

  • l'on claque des mains et le robot est dans l'état 0 → allumer le robot en bleu
  • l'on claque des mains et le robot est dans l'état 1 → allumer le robot en rouge
action-states.svg

Pour définir l'état, le mode avancé ajoute une action d'état (voir à droite). De plus, il y a quatre boutons (qui ressemblent à l'action état) à droite de chaque bloc événement dans chaque paire événement-action. Ces boutons correspondent à quatre variables d'état de 1 bit chacune, qui peuvent donc être soit à 0 soit à 1. L'état courant du robot est visualisé au dessus de celui-ci par quatre LEDs aux quatre coins de son cercle de LEDs (chaque LED est éteinte pour 0, allumée pour 1). L'action état permet de définir n'importe quelle combinaison de ces quatre bits à soit 0 soit 1. Pour l'événement, les boutons d'état fonctionnent comme des filtres : lorsque le bouton est gris, le bit est ignoré ; lorsqu'il est orange, le bit doit être à 1 pour que l'événement s'active ; lorsque le bouton est blanc, le bit doit être à 0 pour que l'événement s'active.

L'exemple ci-dessous allume le robot en rouge ou bleu lorsqu'il détecte un clappement de mains, en fonction de son état. L'état est défini avec les boutons :

vpl-state-example.svg

Blocs aditionnels

En mode avancé, on dispose de trois nouveaux blocs. Deux d'entre eux représentent le compte à rebours ou "timer", un moyen de déclencher une action à retardement, et un bloc représente l'état interne du robot.

event-timer.svg Timer écoulé Cet événement se déclenche lorsque le compte à rebours arrive à zéro.
action-timer.svg Timer Cette action permet de démarrer un compte à rebours de 0 à 4 secondes, défini par l'utilisateur en cliquant sur l'horloge. Lorsque le compte à rebours arrive à zéro, un événement "Timer écoulé" est déclenché.
action-states.svg État Cette action régle l'état à 4 bit du robot. Gris signifie laisser la valeur actuelle ; blanc signifie mettre l'état à 0 ; jaune signifie mettre l'état à 1.

Versions avancées de certains blocs

Les blocs suivants possèdent des versions avancées. Ils sont similaires à leur version de base mais permettent de faire plus de choses.

event-rc-arrow.svg flèches télécommande Cet événement se déclenche lorsqu'un bouton flèche de la télécommande a été appuyé.
event-rc-keypad.svg clavier numérique télécommande Cet événement se déclenche lorsqu'un bouton du clavier numérique de la télécommande a été appuyé.
event-prox-advanced.svg capteurs de distance horizontaux En plus des caractéristiques du mode de base, ce bloc événement permet de détecter des objets proches, mais pas trop. Cela ajoute une zone de détection. De plus, il est possible de régler les seuils de détection (voir exemple ci-dessous).
event-prox-advanced-explained.svg capteurs de distance horizontaux (exemple) La barre du haut permet de régler le seuil des objets proches, alors que la barre du bas permet de régler le seuil des objets lointains. La zone entre ces deux seuil est la fameuse zone de détection supplémentaire.
event-ground-advanced.svg capteurs de distance au sol Ce bloc événement a les mêmes caractéristiques avancées que le bloc de capteurs de distance horizontaux.
event-tilt.svg Inclinaison gauche/droite (tilt) Cet événement se déclenche en fonction de l'inclinaison gauche ou droite de Thymio. Par défaut, les actions correspondantes seront lancées si le robot est à plat. Vous pouvez régler l'orientation en déplaçant le triangle blanc au-dessus de Thymio.
event-pitch.svg Inclinaison avant/arrière (pitch) Cet événement fonctionne de façon similaire à l'inclinaison gauche/droite mais cette fois-ci pour l'inclinaison avant ou arrière du robot.
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License