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¶
Exemples d'activités robotique avec Thymio¶
https://freq14.files.wordpress.com/2015/09/guide_thymio.pdf
Document aussi disponible ici
Communication entre Thymio¶
Il est possible, en utilisant les 7 capteurs infra-rouge de proximité (5 à l'avant et 2 à l'arrière) de faire communiquer les robots Thymio entre eux. Un Thymio peut envoyer par infra-rouge un nombre compris entre 0 et 1023 (codage sur 10 bits), ce qui peut déclencher un événement chez un autre Thymio à proximité. Evidemment, tout cela ne peut se faire qu'en utilisant Aseba.
Sur cette page se trouve un document pdf en anglais, tiré de la documentation officielle, présentant plusieurs projets avancés programmés en Aseba. Le chapitre III donne quelques exemples de communication entre Thymio avec des explications.
Le fichier "programs.7z" rassemble tous les exemples de programmes mentionnés dans ce pdf.
Description des fonctions natives mathématiques¶
https://www.thymio.org/docs/aseba-studio/native-functions-standard-library/
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.