Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Lego Mindstorms > Découverte des Lego Mindstorms EV3 > leJOS sur le MindStorms EV3

leJOS sur le MindStorms EV3

vendredi 1er novembre 2013, par Eric P.

L’EV3 est une petite révolution dans le domaine du MindStorms, mais le fait de pouvoir utiliser plus simplement qu’avant des alternatives à l’environnement graphique LEGO pour le programmer est encore plus excitant.

Petits rappels

Les adeptes de Java ont pu assouvir leur passion sur les briques Mindstorms déjà depuis le vénérable RCX, grâce au travail remarquable de l’équipe de développement de leJOS.

Bon, soyons honnêtes, on ne pouvait cependant pas faire un robot doté d’une IA de ouf sur le RCX, mais il était déjà possible de profiter d’abstractions de haut niveau permettant de contrôler la navigation d’un robot différentiel par exemple sans aller tripatouiller le contrôle individuel de chaque moteur. Les choses se sont grandement améliorées avec le NXT grâce à sa plus grande capacité, tant en mémoire qu’en puissance de calcul.

Ceci étant, pour pouvoir jouir de tout cela, il fallait remplacer le framework d’origine de la brique par celui proposé par leJOS. Rien de bien terrible cependant, car l’opération est totalement réversible et sans risque particulier. Ceci étant elle pouvait paraître intimidante, dans la mesure où il existait une probabilité (très faible) de raté lors de la manip, qui conduisait à devoir de battre un peu pour dé-bricker le NXT (c’est un gag de dé-bricker une brique programmable :).

Tout cela est oublié maintenant grâce à la présence d’un slot microSD sur l’EV3. Si un support contenant un système bootable y est inséré, et bien la brique démarre dessus tout simplement. Plus de firmware à re-flasher pour passer d’un environnement à un autre.

Le mode opératoire

[EDIT 15 fev 2014] La procédure décrite ci-après était celle en vigueur avant la version 0.5.0. Le nouveau mode opératoire est encore plus simple, car il se résume à copier l’image sur la carte SD au moyen de l’outil adapté à votre OS (dd sous Linux et MacOS, win32diskimager sous Window) puis à copier l’archive de la JVM Oracle comme indiqué sur le Wiki LeJOS, dont le lien est toujours valide . J’ai laissé le texte original pour archive.

Il est très simple, et mon seul mérite ici est de vous donner le lien vers la procédure décrite sur le Wiki leJOS. Il n’y à qu’à suivre les indications fournies, et tout se passe comme une lettre à la poste.

Attention : sous Linux, utilisez la commande umount et non pas avec l’éjection de volume proposée par le bureau graphique pour "démonter" les partitions avant d’utiliser la commande dd. J’ai constaté que si on utilise la commande d’éjection de l’environnement graphique, dd ne fait rien (il rend la main instantanément en laissant croire qu’il a fait le boulot). Et si on effectue la copie sans démonter les volumes, la carte SD ne boote pas.

A l’issue du boot, voici à quoi ressemble votre EV3 "java-inside" :)

[EDIT 15 fev 2014]
Ca a changé en version 0.6.0, et notamment avec l’apparition d’un menu permettant d’accéder aux différents réglages et de lancer les programmes installés, de manière similaire à l’environnement original de LEGO.

Ecran principal version 0.6.0

Et le réseau ?

Si comme moi vous ne disposer pas (encore) de dongle WiFi, ne vous affolez pas : la distribution leJOS inclut le support de TCP/IP via le WiFi bien entendu, mais également via les liaisons USB et Bluetooth. Vous pouvez donc sauter pour le moment ce qui concerne la configuration du wpa_supplicant, et lors du boot de l’EV3, s’il est connecté en USB à ce moment, vous allez voir apparaître comme par magie une nouvelle connexion réseau dans votre système.

Pour accéder à la brique, il suffit alors de se connecter en ssh ou Telnet à l’IP indiquée sur le display de l’EV3 :

Eh oui : ils ont même intégré les serveurs correspondants dans leur distribution. C’est-y pas beau ça ?

Le screenshot ci-dessus illustre également l’exécution du petit programme de démo inclus dans le file system. Voici ce que ça donne sur la brique :

Petit avertissement : ça de démarre pas au 1/10ème de seconde, mais peu importe du moment qu’une fois lancé ça tourne.

IMPORTANT : après la démo, l’écran est totalement vierge et vous pourriez croire (à tort) par la suite que votre brique s’est éteinte. Il n’en est rien (il suffit de taper une commande à la console), et il ne faut donc pas oublier d’éteindre le système proprement via la commande halt -p. Contrairement à ce que j’ai pensé au départ, la classe compilée nommé PowerOff dans le répertoire lejos/bin/utils, ne fait pas l’équivalent, mais est en fait appelée par la séquence de shutdown pour afficher le message "Closing down..." et allumer les LEDs rouges.

Encore mieux

Puisque nous sommes sous Linux, on a donc un shell, et on doit donc pouvoir écrire des scripts. Au culot, je tape vi test.sh, et à ma grande surprise, un Vi en bonne et due forme se lance (on aurait pu s’attendre à ne disposer que de nano par exemple.

Sans surprise, nous pouvons écrire un script à 2 balles, juste pour tester :

Les autres cerises sur le gâteau

En allant fouiner dans les répertoires /lib et /usr/lib, on y constate que les libs habituelles sont installées, mais qu’en plus du minimum syndical, on y trouve également libdbus. Et la commande ps montre que le daemon dbus est actif. Et vous savez combien j’ai un faible pour D-Bus :)

Tout cela veut aussi dire que moyennant la chaîne de cross-compilation qui va bien, on va pouvoir programmer l’EV3 en C/C++ pur et dur... et pourquoi pas en Python.

Vous avez dit Python ?

Farpaitement, comme dirait Obelix.

Les bases de cette dernière option sont déjà disponibles. Maintenant que votre EV3 fonctionne avec un Linux accessible, il suffit juste d’y copier le dossier python2 extrait de l’archive à télécharger, et la commande python vous gratifiera alors de ceci :

root@EV3:~# python
Python 2.7.5 (default, Sep 23 2013, 11:35:07) 
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

En ajoutant comme usuellement dans le répertoire site-packages de la librairie Python l’arborescence ev3 disponible dans le projet python-ev3, on dispose d’un premier niveau de bibliothèques permettant de commencer à s’amuser, comme par exemple faire clignoter les LEDs de la brique :

>>> import ev3
>>> from ev3.rawdevice import ui
>>> ui.open_device()
>>> ui.set_led(1)
>>> ui.set_led(2)
>>> ui.set_led(6)
>>> ui.set_led(0)

Conclusion

Au-delà du fait de donner l’accès à la programmation de l’EV3 en Java, leJOS nous offre également un environnement ouvert, et ajoute de plus des possibilités de connexion à la brique supérieures à celles de la distrib d’origine.

Rien que pour cela, ça mérite tout à fait d’y consacrer une carte micro-SD (2GB suffisent) et la toute petite demi-heure nécessaire à télécharger les deux archives requises, créer la carte et booter la brique dessus.

Have fun ;)

Vos commentaires

  • Le 30 décembre 2015 à 17:39, par woberkil En réponse à : leJOS sur le MindStorms EV3

    peut on revenir au systéme de base lego car je veux juste tester java

    • Le 30 décembre 2015 à 18:47, par Eric P. En réponse à : leJOS sur le MindStorms EV3

      Sur le NXT il faut reflasher le firmware d’origine, en suivant la même procédure que pour flasher celui de LeJOS.
      Pour autant que je me souvienne, le plugin LeJOS pour Eclipse comporte les commandes correspondantes.

    Répondre à ce message

  • Le 5 janvier 2014 à 17:27, par Mirakle En réponse à : leJOS sur le MindStorms EV3

    Bonjour,

    Après l’installation de LeJOS (0.5.0 alpha) sur la SD, je ne parviens pas à me connecter sur 10.0.1.1 via le câble USB. Comme si l’adresse 10.0.1.1 n’existait pas... Les ping sur cette adresse n’aboutissent pas.
    Qu’est-ce que j’ai pu louper ?
    Merci d’avance.

    Mirakle

    • Le 8 janvier 2014 à 22:55, par Eric P. En réponse à : leJOS sur le MindStorms EV3

      Si le boot de l’EV3 sur la carte SD s’est déroulé correctement, l’adresse IP de la brique est affichée sur son écran, comme le montre une des photos de l’article.

      Il faut donc vérifier ce point, au cas où une autre adresse ait été utilisée.

      Quel est le système utilisé sur le PC ?

    Répondre à ce message

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.