Vous connaissez sans doute le robot autonome Thymie-II, et peut-être le langage de programmation visuelle Scratch, si bien aimé par des jeunes programmeurs. Dans Scratch on fait évoluer des sprites indépendants qui interagissent sur un scène partagé. Le comportement d’un sprite est défini par des petits programmes séquentiels, déclenchés par des événements. C’est très tentant de voir un Thymie-II comme un sprite, et de chercher à le piloter avec Scratch.
Alors je l’ai fait : j’ai écrit une extension pour Scratch 2 offline qui propose des nouveaux blocs pour piloter un Thymie-II. Mon objectif est d’explorer la grande question, quels blocs dans Scratch ont le plus de sens pour piloter un Thymio-II ? et tous vos critiques et suggestions sont les bienvenus !
Si vous avez du courage et un peu de patience, vous pouvez installer l’extension. Sinon il y a aussi quelques exemples de programmes, que vous pouvez regarder sans installer l’extension. L’exemple Thymio-II.sb2 permet de voir les nouveaux blocs.
Les blocs que je propose sont :
avancer (N) mm
tourner (N) degrees
suivre un cercle de rayon (N) mm pour (N) degrees
faite tourner les moteurs à (N) x (N) mm/sec pour (N) sec
jouer le son (système | spécial | enregistré) nº (N)
arrêter le son (système | spécial | enregistré)
enregistrer le son nº (N) pour (N) sec
En plus des reporteurs de valeur pour des capteurs, l’extension propose quelques-uns plus synthétiques pour faciliter la prise en main :
la distance d’un obstacle à l’avant ou à l’arrière, en mm (approximativement)
l’angle gauche-droite d’un obstacle à l’avant, en degrés (approximativement)
C’est un peu bricolé pour le moment pour faciliter l’expérimentation. Une fois que les idées sont claires, nous allons mettre tout ça dans un paquetage facile à installer.
Un projet futur serait de traduire une partie (forcement limitée) du programme Scratch en comportement autonome Thymio-II, qui peut marcher sans connexion à Scratch sur l’ordinateur.
@sherman : A nouveau un grand merci David pour ton adaptation de Scratch au Thymio !
On fait maintenant la même chose avec Poppy et je construis de mes mains la statue à ton effigie !
(David Sherman est directeur de recherches Inria)
@sherman Hello - my name is David Doak - I am big fan of both Scratch and Thymio!
I am very interested in your Scratch2 work - it looks very promising. I am using Thymio with the children in a primary school in the UK. I’ve managed to get Scratch1.4 working with Thymio in Linux Ubuntu - but your Scratch2 solution looks more future proof. Franceso Mondada directed me here.
I’ve looked at your files and instructions on github but am uncertain as to how to proceed (on a MacBook)
I’m not sure how to install the necessary python libraries - for Mac I am concerned about breaking the default python installation
for Mac there is no asebamedulla binary with the official aseba distribution. Is it available somewhere or does it need to be compiled?
Apologies for posting in English - my French is not good. (I am using google translate to read what you have posted)
Hi David! Sorry to have taken so long to respond. It’s really great that you’ve had a look, and I’m very interested in your feedback.
First of all, the current setup is really a breadboard to help (me) quickly test different ideas for Scratch blocks, so it is pretty high in the software food chain to make it easy easy (for me!) to modify. The basic vocabulary of Scratch blocks is converging so the current setup will be replaced pretty soon by a simpler helper program I am writing, asebahttp.
Here are the bits you’ll need today to install the breadboard on your Mac:
The breadboard is: Scratch 2 learns its new extension blocks by reading ext-scratch-thymioII.json; Scratch 2 talks to my helper aseba-scratch-dbus.perl, which runs a micro http server that converts Scratch 2 extension blocks to DBus messages; asebamedulla converts DBus messages to Aseba messages; the Thymio-II listens to Aseba messages on its USB port, and uses thymio_native_events.aesl to interpret them.
My script start-medulla-macosx.sh tries to start the DBus, asebamedulla, and daemons aseba-scratch-dbus.perl.
I used CPAN as you suggested for the other packages. Seemed to work.
However, even with a compiled version of Stéphane Magnenat’s aseba repository - I have no asebamedulla executable.
So when I run your start script:
bash-3.2$ ./start-aseba-scratch-helper.sh
DBUS_SESSION_BUS_ADDRESS=unix:path=/tmp/launch-D4iUbz/unix_domain_listener
./start-aseba-scratch-helper.sh: line 30: asebamedulla: command not found
1482 ?? 0:00.01 dbus-daemon
Any suggestions? Where did you get your OS X asebamedulla binary?
I had the same problem when I tried Stéphane’s Homebrew tap. I suspect that Homebrew is being too clever: since asebamedulla depends on DBus, and DBus is (it thinks) absent on MacOS, there is no need to compile asebamedulla.
My solution was to compile the Aseba tools by hand using cmake, using the instructions in aseba-community/aseba/readme.md.
If Homebrew left the source and build directories in place, and DBus is already installed as you say, it might be enough to re-run cmake in the build-aseba directory.
I have opened an issue on my homebrew tap about that: https://github.com/stephanemagnenat/homebrew-aseba/issues/1
Probably the simplest is to make aseba depends on D-Bus, but I have to check that it actually works. Feel free to fork my tap and submit pull requests! Thanks
I have added an example test server to Dashel. It is a minimalistic HTTP/1.0 server, and only supports GET, but is a proof of concept showing how to implement HTTP in Dashel. I could be the base for a pure-Dashel asebahttp.
J’ai remplacé cette première version par un logiciel indépendant qui n’a plus ce pénible ensemble de dépendances. Vous trouverez dans Scratch2-ThymioII-0.5.1.dmg un app bundle pour MacOSX. Il suffit normalement de brancher le robot, lancer l’auxiliaire Scratch2-ThymioII puis ouvrir l’exemple de scène Thymio-II.sb2.
Ce travail est toujours dans un état préliminaire et tous vos commentaires seront les bienvenues !
Merci beaucoup pour cette superbe intégration, c’est très chouette !
J’ai quelques questions / commentaires ;
Quelle est la fréquence de la boucle d’exécution de Scratch sur le Thymio ? Par exemple, j’ai fait un programme simple qui démarre au drapeau, qui a une boucle infinie, et qui teste un bouton. Si ce dernier est pressé, le robot devient vert pour une seconde. Ce programme a l’air de fonctionner seulement parfois, pas tout le temps, et avec une grande latence.
La palette des blocs de base suppose un sprite/une tortue virtuelle en 2D. Pourrait-on les remplacer par les blocs Thymio dans les catégories de base ? Je ne suis pas sûr qu’il y ait un cas d’utilisation qui mixe les sprites 2D de Scratch et le Thymio. D’ailleurs, ça me donne des idées sur des choses chouettes en réalité augmentée avec plusieurs Thymios.
Les blocs Thymio combinent différents niveaux d’abstraction (avance X mm et éviter les obstacles) et de durée d’exécution. Probablement que d’un point de vue éducatif il faudrait ordrer ces différents blocs.
Est-il possible dans Scratch d’avoir des blocs utilisateurs qui sont des événements ? Cela permettrait de mieux lier VPL et Scratch.
Voilà pour le moment, je vais y réfléchir et jouer un peu plus quand j’aurai un moment, et je te donnerai probablement du retour supplémentaire.
Bonjour;
très jolie projet
Je participe régulièrement avec ma fille aux “atelier goûter du code” sur Marseille ou nous utilisons scrath.
Le papa noël a eu la bonne idée de lui apporter un joli thymio.
Pouvez vous m’aider a installer l’extension a scrath offline pour le faire fonctionner avec le robot sous win.
Merci
Mon garçon possède, depuis noël, un Thymio et celui-ci se programme très bien avec l’interface VPL… Mais pour qu’il aille un peu plus loin dans la programmation de ce robot je me suis lancé dans le développement d’une interface, semblable à Scratch, à partir de Blockly (https://code.google.com/p/blockly/) et d’un traducteur vers ASEBA script.
J’ai découvert ce forum en cherchant des solutions techniques au développement de mon projet et je suis impressionné de la communauté qui s’active autour de ce petit robot.
Mon projet n’en est qu’au début, mais je vous tiendrais informé, si vous le désirez, de l’avancé de celui-ci.
je me demandais si avec les quelques retours d’expériences il n’y aurait pas une petite formation pour utiliser Scratch2 avec ThymioII, où s’il était possible de rencontrer un enseignant qui travaille déjà .
Je suis stagiaire à la cité des télécoms de Pleumeur-Bodou. Et je fais actuellement des recherches sur différents robots qui sont programmables avec Scratch pour mettre en place un atelier robotique pour un publique de fin de primaire début collège.
Je constate que Thymio 2 offre pas mal de possibilités, mais je crois qu’il est seulement possible de le faire fonctionner avec Scratch en le laissant branché en USB.
Alors je me demandais s’il était déjà possible de faire fonctionner Thymio 2 avec scratch en enlevant le cable USB, après le téléchargement du programme? Ou même s’il était possible d’enregistrer le programme sur carte SD.
Bonjour,
Scratch et Snap pour le thymio sans fil, c’est en cours. Dès que le thymio sans fil sera disponible (novembre 2015), l’adaptation sera également disponible.
Pour en savoir plus : @cbarraud, @smagnenat , @sherman.