{"id":140,"date":"2016-01-07T08:47:17","date_gmt":"2016-01-07T08:47:17","guid":{"rendered":"http:\/\/iict-space.heig-vd.ch\/ape\/?page_id=140"},"modified":"2016-01-25T13:14:54","modified_gmt":"2016-01-25T13:14:54","slug":"aro1","status":"publish","type":"page","link":"http:\/\/iict-space.heig-vd.ch\/ape\/teaching\/aro1\/","title":{"rendered":"ARO1_Thymio-FSM"},"content":{"rendered":"<h2>Contr\u00f4le d&#8217;un robot\u00a0Thymio \u00e0 l&#8217;aide de machines d&#8217;\u00e9tats finis<\/h2>\n<p><a href=\"http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymioLogo.jpg\" rel=\"attachment wp-att-141\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-141\" src=\"http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymioLogo.jpg\" alt=\"thymioLogo\" width=\"300\" height=\"198\" srcset=\"http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymioLogo.jpg 3578w, http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymioLogo-300x198.jpg 300w, http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymioLogo-768x507.jpg 768w, http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymioLogo-1024x676.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><b>Thymio<\/b> est produit, distribu\u00e9 et vendu par l&#8217;association \u00e0 but non-lucratif Mobsya bas\u00e9e \u00e0 Lausanne en Suisse.<\/p>\n<h2>1. Aseba: l&#8217;outil de programmation<\/h2>\n<p>Pour programmer Thymio, vous devez d&#8217;abord t\u00e9l\u00e9charger <a href=\"https:\/\/www.thymio.org\/fr:start\">Aseba<\/a>. Aseba est un\u00a0ensemble d&#8217;outils qui permet aux novices de programmer facilement et\u00a0efficacement des robots.<\/p>\n<h2>2. Aseba: D\u00e9marrer l&#8217;outil<\/h2>\n<p>Avec Aseba, on peut programmer Thymio de mani\u00e8re visuelle ou\u00a0avec du texte. Dans ce laboratoire, on va s&#8217;initier dans le langage texte de\u00a0programmation de Thymio. Pour d\u00e9marrer Aseba Studio:<\/p>\n<ul>\n<li>2.1 Branchez Thymio \u00e0 votre ordinateur, puis lancez &#8220;Aseba Studio pour Thymio&#8221;.<\/li>\n<li>2.2 Si vous lancez &#8220;Aseba Studio&#8221; ou Aseba vous demande de choisir<br \/>\nune cible: clickez sur &#8220;port s\u00e9rie&#8221;, s\u00e9lectionnez Thymio-II<br \/>\nRobot et sur &#8220;Connecter&#8221;.<\/li>\n<\/ul>\n<h2>3. Programmer Thymio avec Aseba<\/h2>\n<ul>\n<li>3.1 <a href=\"https:\/\/www.thymio.org\/fr:thymiotutorielp1\" target=\"_blank\">Familiarisation<\/a><\/li>\n<li>3.2 <a href=\"https:\/\/www.thymio.org\/fr:thymiotutorielp2\" target=\"_blank\">Allumer une LED et jouer avec les boutons<\/a><\/li>\n<li>3.3 <a href=\"https:\/\/www.thymio.org\/fr:thymiotutorielp3\" target=\"_blank\">Faire bouger le robot<\/a><\/li>\n<li>3.4 <a href=\"https:\/\/www.thymio.org\/fr:thymiotutorielp4\" target=\"_blank\">S&#8217;arr\u00eater au bord de la table<\/a><\/li>\n<li>3.5 <a href=\"https:\/\/www.thymio.org\/fr:thymiotutorielp5\" target=\"_blank\">R\u00e9agir aux chocs<\/a><\/li>\n<\/ul>\n<h2>4. Machines d&#8217;\u00e9tats finis et langage de programmation haut-niveau<\/h2>\n<p>Une machine d&#8217;\u00e9tat peut \u00eatre r\u00e9alis\u00e9e en utilisant un langage de\u00a0programmation de haut-niveau en utilisant une structure SWITCH-CASE\u00a0et des instructions IF-THEN-ELSE pour d\u00e9finir les conditions pour\u00a0les transitions entre les \u00e9tats. En supposant une machine de Moore,\u00a0les sorties ne changent qu&#8217;en fonction de l&#8217;\u00e9tat pr\u00e9sent de la\u00a0machine d&#8217;\u00e9tats. La figure ci-dessous illustre un exemple en pseudo-code.<\/p>\n<p><a href=\"http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/FSM_colors.jpg\" rel=\"attachment wp-att-142\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-142\" src=\"http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/FSM_colors.jpg\" alt=\"FSM_colors\" width=\"500\" height=\"176\" \/><\/a><\/p>\n<pre class=\"\">etat = 00;\r\nwhile(1) {\r\n switch (etat) {\r\n  case 00:  if(start_bouton == true) etatFutur = 01;\r\n             else etatFutur = 00;\r\n             color = white;\r\n  case 01:  if(on_tappe == true) etatFutur = 10;\r\n             else etatFutur = 01;\r\n             color = red;\r\n  case 10:  if(on_tappe == true) etatFutur = 11;\r\n             elsif(start_bouton == true) etatFutur = 01;\r\n                else etatFutur = 10;\r\n             color = green;\r\n  case 11:  if(on_tappe == true) etatFutur = 01;\r\n             else etatFutur = 11;\r\n             color = blue;\r\n  }\r\n etat = etatFutur;\r\n} \r\n<\/pre>\n<p>Le code en Aseba est l\u00e9g\u00e8rement diff\u00e9rent\u00a0\u00e0 celui-ci. Utilisez le <a href=\"http:\/\/iict-space.heig-vd.ch\/ape\/teaching\/aro1_lab_thymio-fsm\/fsm_colors_example\/\" target=\"_blank\">code Aseba exemple<\/a> qui r\u00e9alise cette\u00a0machine d&#8217;\u00e9tats pour traiter les challenges propos\u00e9s ci-dessous.<\/p>\n<h2>5. Exercices<\/h2>\n<p>5.1 Concevoir une machine d&#8217;\u00e9tats en utilisant l&#8217;exemple\u00a0pr\u00e9c\u00e9dent et les fonctions en Aseba permettant de lire\u00a0les capteurs et d&#8217;agir sur les actuateurs (moteurs, LEDs et haut\u00a0parleurs) pour contr\u00f4ler le robot Thymio de mani\u00e8re \u00e0\u00a0ce que celui-ci augmente sa vitesse chaque fois que vous pressez sur\u00a0le bouton &#8220;avant&#8221;, mais seulement jusqu&#8217;\u00e0 trois fois (vitesse\u00a0maximum: 500). Ensuite, si vous pressez \u00e0 nouveau le bouton,\u00a0le robot diminue sa vitesse de la m\u00eame mani\u00e8re<br \/>\nqu&#8217;elle a \u00e9t\u00e9 augment\u00e9e. Par exemple:<\/p>\n<p>v0 -&gt; bouton -&gt; v1 -&gt; bouton-&gt; v2 -&gt; bouton -&gt; v3 -&gt; bouton -&gt; v2 -&gt; bouton -&gt; v1<br \/>\n-&gt; bouton v0 -&gt; bouton -&gt; v1 &#8230; etc.<\/p>\n<p>5.2 Concevoir une machine d&#8217;\u00e9tats pour programmer le robot\u00a0Thymio pour qu&#8217;il d\u00e9marre \u00e0 une vitesse constante en pressent sur le bouton\u00a0&#8220;avant&#8221;. Il doit pouvoir \u00e9viter les obstacles de\u00a0mani\u00e8re r\u00e9active (p.ex., si obstacle \u00e0 gauche, tourner\u00a0\u00e0 droite, etc.), si apr\u00e8s 1000 ms de\u00a0d\u00e9placement il ne rencontre aucun obstacle, il augmente sa\u00a0vitesse, mais revient \u00e0 la vitesse de base lorsqu&#8217;il doit\u00a0activer l&#8217;\u00e9vitement d&#8217;obstacles. Pour un exemple d&#8217;utilisation d&#8217;un timer, veuillez vous r\u00e9f\u00e9rer au point 5.4.<\/p>\n<p>5.3 Supposez que vous utilisez les deux capteurs de Thymio qui pointent vers le sol pour lire deux s\u00e9quences de bits par terre. A gauche, le\u00a0signal p\u00e9riodique 0-1-0-1&#8230; peut \u00eatre interpr\u00e9t\u00e9 comme un signal d&#8217;horloge et le signal \u00e0 droite comme une entr\u00e9e binaire. Concevoir une machine d&#8217;\u00e9tats qui lit un bit par cycle d&#8217;horloge et qui d\u00e9tecte la s\u00e9quence 0-1-0-1-1. Pour signaler la d\u00e9tection de la s\u00e9quence indiqu\u00e9e,\u00a0changez la couleur de\u00a0Thymio en rouge pendant un seul cycle d&#8217;horloge. Utilisez le programme exemple sur <a href=\"http:\/\/iict-space.heig-vd.ch\/ape\/fsm_read_bits_from_ground\/\" target=\"_blank\">ce lien<\/a> pour lire les bits en entr\u00e9e.<\/p>\n<p><a href=\"http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det-seq1.png\" rel=\"attachment wp-att-198\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-198\" src=\"http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det-seq1-300x104.png\" alt=\"thymio_det-seq1\" width=\"300\" height=\"104\" srcset=\"http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det-seq1-300x104.png 300w, http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det-seq1-768x265.png 768w, http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det-seq1-1024x353.png 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det-seq2.png\" rel=\"attachment wp-att-199\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-199\" src=\"http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det-seq2-300x102.png\" alt=\"thymio_det-seq2\" width=\"300\" height=\"102\" srcset=\"http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det-seq2-300x102.png 300w, http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det-seq2-768x262.png 768w, http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det-seq2-1024x350.png 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\n<a href=\"http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det_seq3.png\" rel=\"attachment wp-att-196\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-196\" src=\"http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det_seq3-300x101.png\" alt=\"thymio_det_seq3\" width=\"300\" height=\"101\" srcset=\"http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det_seq3-300x101.png 300w, http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det_seq3-768x257.png 768w, http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det_seq3-1024x343.png 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det_seq4.png\" rel=\"attachment wp-att-197\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-197\" src=\"http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det_seq4-300x103.png\" alt=\"thymio_det_seq4\" width=\"300\" height=\"103\" srcset=\"http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det_seq4-300x103.png 300w, http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det_seq4-768x262.png 768w, http:\/\/iict-space.heig-vd.ch\/ape\/wp-content\/uploads\/sites\/16\/2016\/01\/thymio_det_seq4-1024x350.png 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a> <\/p>\n<p>5.4.\u00a0Thymio joue le jeu du t\u00e9l\u00e9phone arabe.<br \/>\nProgrammez Thymio pour \u00e9couter un autre Thymio (utilisez le code exemple sur <a href=\"http:\/\/iict-space.heig-vd.ch\/ape\/fsm_comm_colors\/\" target=\"_blank\">ce lien<\/a>) et utilisez une machine d&#8217;\u00e9tats pour que chaque Thymio r\u00e9ponde de la mani\u00e8re suivante:<br \/>\n&#8211; Il d\u00e9marre dans un \u00e9tat 0 o\u00f9 il \u00e9met une valeur quelconque via ses capteurs infra-rouges frontaux d\u00e8s qu&#8217;il per\u00e7oit un robot en face. Il est \u00e0 l&#8217;\u00e9coute d&#8217;un autre robot et il n&#8217;affiche aucune couleur.<br \/>\n&#8211; D\u00e8s qu&#8217;il communique avec un autre Thymio (c.a.d., il re\u00e7oit la donn\u00e9e 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.<br \/>\n&#8211; Si le Thymio re\u00e7oit une donn\u00e9e d&#8217;un autre Thymio et il est dans l&#8217;\u00e9tat &#8220;rouge&#8221;, il affiche maintenant bleu pendant 5 secondes et ensuite redevient disponible pour recevoir un nouveau message.<br \/>\n&#8211; Si le Thymio re\u00e7oit une donn\u00e9e d&#8217;un autre Thymio et il est dans l&#8217;\u00e9tat &#8220;bleu&#8221;, il affiche maintenant vert pendant 5 secondes et ensuite redevient disponible pour recevoir un nouveau message.<br \/>\n&#8211; Si le Thymio re\u00e7oit une donn\u00e9e d&#8217;un autre Thymio et il est dans l&#8217;\u00e9tat &#8220;vert&#8221;, il affiche maintenant rouge pendant 5 secondes et ensuite redevient disponible pour recevoir un nouveau message.<\/p>\n<h2>6.\u00a0Evaluation<\/h2>\n<p><span style=\"font-weight: 300\">R\u00e9aliser le graphe des \u00e9tats des machines\u00a0d&#8217;\u00e9tats finis (vous pouvez le faire \u00e0 la main sur une\u00a0feuille blanche) pour les diff\u00e9rents exercices et\u00a0\u00e0 la fin de chaque exercice, le pr\u00e9senter au professeur ou \u00e0 l&#8217;assistant.<\/span><\/p>\n<h3>Remerciements<\/h3>\n<p>Merci \u00e0 Sandy Vibert pour les exemples, explications et\u00a0suggestions sur l&#8217;utilisation d&#8217;Aseba avec Thymio et merci \u00e0\u00a0Hector Satizabal pour le brainstorming sur les exercices et la concr\u00e9tisation de l&#8217;exercice 5.3. Merci \u00e0 Eric et \u00e0 Sandy pour nous accompagner lors de ce laboratoire.<\/p>\n<hr \/>\n<p>ARO1 2015\/2016<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Contr\u00f4le d&#8217;un robot\u00a0Thymio \u00e0 l&#8217;aide de machines d&#8217;\u00e9tats finis Thymio est produit, distribu\u00e9 et vendu par l&#8217;association \u00e0 but non-lucratif Mobsya bas\u00e9e \u00e0 Lausanne en Suisse. 1. Aseba: l&#8217;outil de programmation Pour programmer Thymio, vous devez d&#8217;abord t\u00e9l\u00e9charger Aseba. Aseba <a class=\"more-link\" href=\"http:\/\/iict-space.heig-vd.ch\/ape\/teaching\/aro1\/\">Continue reading <span class=\"screen-reader-text\">  ARO1_Thymio-FSM<\/span><span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":10,"featured_media":0,"parent":22,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-fullwidth.php","meta":[],"_links":{"self":[{"href":"http:\/\/iict-space.heig-vd.ch\/ape\/wp-json\/wp\/v2\/pages\/140"}],"collection":[{"href":"http:\/\/iict-space.heig-vd.ch\/ape\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/iict-space.heig-vd.ch\/ape\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/iict-space.heig-vd.ch\/ape\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"http:\/\/iict-space.heig-vd.ch\/ape\/wp-json\/wp\/v2\/comments?post=140"}],"version-history":[{"count":22,"href":"http:\/\/iict-space.heig-vd.ch\/ape\/wp-json\/wp\/v2\/pages\/140\/revisions"}],"predecessor-version":[{"id":200,"href":"http:\/\/iict-space.heig-vd.ch\/ape\/wp-json\/wp\/v2\/pages\/140\/revisions\/200"}],"up":[{"embeddable":true,"href":"http:\/\/iict-space.heig-vd.ch\/ape\/wp-json\/wp\/v2\/pages\/22"}],"wp:attachment":[{"href":"http:\/\/iict-space.heig-vd.ch\/ape\/wp-json\/wp\/v2\/media?parent=140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}