Robot Thymio¶
Présentation¶
Thymio est un robot éducatif créé pour les enseignants et les élèves de l'école primaire à l'université.
Pour installer Flatpak et les logiciels Thymio, suivre les instructions sur le lien suivant :
https://www.thymio.org/help/linux-installation/
Pour vous aidez a comprendre le code aller sur ce lien si-dessous qui vous expliquera une partie du langage aseba.
http://wiki.thymio.org/fr:asebalanguage
Notes sur les différentes façons de programmer¶
La programmation VPL et Blockly permettent d'obtenir le code ASEBA, ce qui n'est pas le cas de la programmation VPL3.
Ensemble des capteurs et actuateurs du Thymio :¶
https://aseba.wdfiles.com/local--files/fr:asebausermanual/ThymioCheatSheet_fr.pdf¶
Exemples de projets Thymio avec vidéo et code¶
http://wiki.thymio.org/fr:creations¶
Programmation :¶
Suivre une ligne noire :¶
Pour que Thymio suive une ligne avec le logiciel Thymio Suite dans la partie Aseba Studio, vous pouvez utiliser le code ci-dessous ou utiliser le programme se trouvant dans les fichiers.
Téléchargez Thymio suite comprenant Aseba Studio sur le site https://www.thymio.org/fr/programmer/
Recopier ces programmes en les espaçant d'une ligne sur Aseba studio.
# reset outputs call sound.system(-1) call leds.top(0,0,0) call leds.bottom.left(0,0,0) call leds.bottom.right(0,0,0) call leds.circle(0,0,0,0,0,0,0,0)
Cette partie du programme réinitialise la couleur des leds et le volume sonore de Thymio.
onevent prox when prox.ground.delta[0] <= 400 and prox.ground.delta[1] <= 400 do motor.left.target = 500 motor.right.target = 500 emit pair_run 0 end
Cette partie du programme lui dit que, si ses capteurs du sol détectent du noir il doit avancer.
when prox.ground.delta[0] >= 450 and prox.ground.delta[1] <= 400 do motor.left.target = 500 motor.right.target = 0 emit pair_run 1 end
Celle ci lui dit que si son capteur gauche détecte une autre couleur alors que le droit voit toujours du noir,il faut qu'il tourne à gauche.
when prox.ground.delta[0] <= 400 and prox.ground.delta[1] >= 450 do motor.left.target = 0 motor.right.target = 500 emit pair_run 2 end
Celle ci lui dit que si son capteur droit détecte une autre couleur alors que le gauche voit toujours du noir,il faut qu'il tourne à droite.
when prox.ground.delta[0] >= 450 and prox.ground.delta[1] >= 450 do motor.left.target = 0 motor.right.target = 0 call leds.top(32,0,0) call leds.bottom.left(32,0,0) call leds.bottom.right(32,0,0) emit pair_run 3 _emit debug_log [0x3, 0x4, 0xa983, 0x5, 0x190, 0x1c2, 0xa0a, 0x8820, 0x8820] end
Cette dernière partie lui dit que si tous ses capteurs voient du blanc il est perdu, il s'arrête et allume ses leds en rouge.
Sur Aseba Studio, dans Thymio Suite, on doit obtenir ceci :¶
Suivre une ligne noire et éviter un obstacle :¶
C'est la partie la plus dure, en vous inspirant du code précédemment utilisé, vous devrez demander à Thymio de contourner un obstacle se trouvant sur la piste et d'y retourner. Je vous souhaite bonne chance.
brique lego¶
Création d'une brique lego pour personnaliser le robot Thymio.
Première étape: j'ai commence par dessiner la pièce sur freecad a l'aide d'un tutoriel trouvée sur youtube: https://www.youtube.com/watch?v=OdmSMXdjkZs
Deuxième étape j'ai ouvert mon fichier sur cura afin de l'imprimer en 3D.
voici le rendu final de la piece sue le robot thymio.
Programmation :¶
Thymio obéissant¶
var temp var rc5_speed_l var rc5_speed_t var vmin=-600 var vmax=600 var led_pulse timer.period[0]=20 sub setmotor call math.min(rc5_speed_t, rc5_speed_t, vmax) call math.max(rc5_speed_t, rc5_speed_t, vmin) call math.min(rc5_speed_l, rc5_speed_l, vmax) call math.max(rc5_speed_l, rc5_speed_l, vmin) motor.left.target = rc5_speed_l + rc5_speed_t motor.right.target = rc5_speed_l - rc5_speed_t onevent button.left if button.left==1 then rc5_speed_t = -200 end
callsub setmotor onevent button.right if button.right==1 then rc5_speed_t = 200 end callsub setmotor onevent button.center if button.center==1 then rc5_speed_t=0 rc5_speed_l=0 end
callsub setmotor onevent button.backward if button.backward==1 then if rc5_speed_t !=0 then rc5_speed_t = 0 else rc5_speed_l = rc5_speed_l-200 end end
callsub setmotor onevent button.forward if button.forward==1 then if rc5_speed_t !=0 then rc5_speed_t = 0 else rc5_speed_l = rc5_speed_l+200 end end
callsub setmotor onevent buttons when button.backward==1 and button.forward==1 do rc5_speed_l = 0 end when button.right==1 and button.left==1 do rc5_speed_t = 0 end
callsub setmotor onevent timer0 #Body color pulse led_pulse = led_pulse + 1 if led_pulse > 0 then call leds.top(led_pulse,0 , led_pulse) if led_pulse > 40 then led_pulse = -64 end else temp=-led_pulse/2 call leds.top(temp, 0, temp) end
Le code suivant permet de télécommander le thymio avec la télécommande¶
onevent rc5 if rc5.command !=0 then if rc5.command == 2 or rc5.command == 80 or rc5.command == 32 then #react to "number 2", "move cursor upwards" and "channel up" if rc5_speed_t!=0 then rc5_speed_t = 0 else rc5_speed_l = rc5_speed_l+200 end elseif rc5.command == 4 or rc5.command == 85 or rc5.command == 17 then #react to "number 4", "move cursor left" and "decrease volume" rc5_speed_t = -200 elseif rc5.command == 8 or rc5.command == 81 or rc5.command == 33 then #react to "number 8", "move cursor downward"s and "channel down" if rc5_speed_t!=0 then rc5_speed_t = 0 else rc5_speed_l = rc5_speed_l-200 end elseif rc5.command == 6 or rc5.command == 86 or rc5.command == 16 then #react to "number 6", "move cursor right" and "increase volume" rc5_speed_t = 200 elseif rc5.command == 5 or rc5.command == 87 or rc5.command == 13 then #react to "number 5", "acknowledge" and "master mute" rc5_speed_t = 0 rc5_speed_l = 0 end rc5.command = 0 end
Les bugs du Thymio¶
Nous allons répertorier dans cette section les divers "bugs" rencontrés au Fablab avec le Thymio et mettre leur résolution.
Thymio ne s'allume pas, ne se charge pas et la première led verte de la batterie reste allumée¶
Sujet sur le forum Thymio décrivant ce problème : http://wiki.thymio.org/forum/t-1591344/thymio-en-panne
Explication possible : le robot n'arrive pas à démarrer ("booter").
Solution : il faut redémarrer ("reseter") le robot en appuyant sur le bouton sur le côté à l'aide d'un trombone.
Autre problème : cela ne redémarre pas le module wifi.
Solution : il faut reseter plusieurs fois ou débrancher/rebrancher la batterie pour forcer le redémarrage.