Projet

Général

Profil

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.