ARO1_Thymio-FSM

Contrôle d’un robot Thymio à l’aide de machines d’états finis

thymioLogo

Thymio est produit, distribué et vendu par l’association à but non-lucratif Mobsya basée à Lausanne en Suisse.

1. Aseba: l’outil de programmation

Pour programmer Thymio, vous devez d’abord télécharger Aseba. Aseba est un ensemble d’outils qui permet aux novices de programmer facilement et efficacement des robots.

2. Aseba: Démarrer l’outil

Avec Aseba, on peut programmer Thymio de manière visuelle ou avec du texte. Dans ce laboratoire, on va s’initier dans le langage texte de programmation de Thymio. Pour démarrer Aseba Studio:

  • 2.1 Branchez Thymio à votre ordinateur, puis lancez “Aseba Studio pour Thymio”.
  • 2.2 Si vous lancez “Aseba Studio” ou Aseba vous demande de choisir
    une cible: clickez sur “port série”, sélectionnez Thymio-II
    Robot et sur “Connecter”.

3. Programmer Thymio avec Aseba

4. Machines d’états finis et langage de programmation haut-niveau

Une machine d’état peut être réalisée en utilisant un langage de programmation de haut-niveau en utilisant une structure SWITCH-CASE et des instructions IF-THEN-ELSE pour définir les conditions pour les transitions entre les états. En supposant une machine de Moore, les sorties ne changent qu’en fonction de l’état présent de la machine d’états. La figure ci-dessous illustre un exemple en pseudo-code.

FSM_colors

Le code en Aseba est légèrement différent à celui-ci. Utilisez le code Aseba exemple qui réalise cette machine d’états pour traiter les challenges proposés ci-dessous.

5. Exercices

5.1 Concevoir une machine d’états en utilisant l’exemple précédent et les fonctions en Aseba permettant de lire les capteurs et d’agir sur les actuateurs (moteurs, LEDs et haut parleurs) pour contrôler le robot Thymio de manière à ce que celui-ci augmente sa vitesse chaque fois que vous pressez sur le bouton “avant”, mais seulement jusqu’à trois fois (vitesse maximum: 500). Ensuite, si vous pressez à nouveau le bouton, le robot diminue sa vitesse de la même manière
qu’elle a été augmentée. Par exemple:

v0 -> bouton -> v1 -> bouton-> v2 -> bouton -> v3 -> bouton -> v2 -> bouton -> v1
-> bouton v0 -> bouton -> v1 … etc.

5.2 Concevoir une machine d’états pour programmer le robot Thymio pour qu’il démarre à une vitesse constante en pressent sur le bouton “avant”. Il doit pouvoir éviter les obstacles de manière réactive (p.ex., si obstacle à gauche, tourner à droite, etc.), si après 1000 ms de déplacement il ne rencontre aucun obstacle, il augmente sa vitesse, mais revient à la vitesse de base lorsqu’il doit activer l’évitement d’obstacles. Pour un exemple d’utilisation d’un timer, veuillez vous référer au point 5.4.

5.3 Supposez que vous utilisez les deux capteurs de Thymio qui pointent vers le sol pour lire deux séquences de bits par terre. A gauche, le signal périodique 0-1-0-1… peut être interprété comme un signal d’horloge et le signal à droite comme une entrée binaire. Concevoir une machine d’états qui lit un bit par cycle d’horloge et qui détecte la séquence 0-1-0-1-1. Pour signaler la détection de la séquence indiquée, changez la couleur de Thymio en rouge pendant un seul cycle d’horloge. Utilisez le programme exemple sur ce lien pour lire les bits en entrée.

thymio_det-seq1 thymio_det-seq2
thymio_det_seq3 thymio_det_seq4

5.4. Thymio joue le jeu du téléphone arabe.
Programmez Thymio pour écouter un autre Thymio (utilisez le code exemple sur ce lien) et utilisez une machine d’états pour que chaque Thymio réponde de la manière suivante:
– Il démarre dans un état 0 où il émet une valeur quelconque via ses capteurs infra-rouges frontaux dès qu’il perçoit un robot en face. Il est à l’écoute d’un autre robot et il n’affiche aucune couleur.
– Dès qu’il communique avec un autre Thymio (c.a.d., il reçoit la donnée transmisse par un autre via ses capteurs infra-rouges), il affiche la couleur rouge pendant 5 secondes et ensuite redevient disponible pour recevoir un nouveau message.
– Si le Thymio reçoit une donnée d’un autre Thymio et il est dans l’état “rouge”, il affiche maintenant bleu pendant 5 secondes et ensuite redevient disponible pour recevoir un nouveau message.
– Si le Thymio reçoit une donnée d’un autre Thymio et il est dans l’état “bleu”, il affiche maintenant vert pendant 5 secondes et ensuite redevient disponible pour recevoir un nouveau message.
– Si le Thymio reçoit une donnée d’un autre Thymio et il est dans l’état “vert”, il affiche maintenant rouge pendant 5 secondes et ensuite redevient disponible pour recevoir un nouveau message.

6. Evaluation

Réaliser le graphe des états des machines d’états finis (vous pouvez le faire à la main sur une feuille blanche) pour les différents exercices et à la fin de chaque exercice, le présenter au professeur ou à l’assistant.

Remerciements

Merci à Sandy Vibert pour les exemples, explications et suggestions sur l’utilisation d’Aseba avec Thymio et merci à Hector Satizabal pour le brainstorming sur les exercices et la concrétisation de l’exercice 5.3. Merci à Eric et à Sandy pour nous accompagner lors de ce laboratoire.


ARO1 2015/2016