Der LEGO® Mindstorms® lässt sich auf viele Arten programmieren. Entweder grafisch, zum Beispiel mit der Programmieroberfläche von LEGO®, oder mit einer der vielen textbasierten Programmiersprachen für den EV3. RobotC, ev3dev, MonoBrick und c4ev3 sind nur einige gute Umsetzungen, um den LEGO® Mindstorms® textbasiert zu programmieren. Dazu zählt auch LeJOS. Der Grundgedanke von LeJOS ist es, die objektorientierte Programmiersprache Java zur Programmierung der verschiedenen Versionen des LEGO® Mindstorms® zu nutzen.

Java ist aktuell die weltweit meinst genutzte Programmiersprache (laut TIOBE Index vom Oktober 2017). Java spielt sowohl im Frondend, beispielsweise in punkto Entwicklung von Android Apps, als auch im Backend eine große Rolle. Durch diese weite Verbreitung mit einhergehender Vielfalt der Anwendungsbereiche wird Java auch von immer mehr Schulen und Seminaren als Programmiersprache für den Einstieg gelehrt. Da es nichts Schöneres gibt, als zu sehen, was mit erlernten Programmierkenntnisse wortwörtlich bewegt werden kann, wollen wir uns LeJOS für den LEGO® Mindstorms® mal genauer angucken.

Historie

LeJOS wurde ursprünglich aus dem TinyVM-Projekt erstellt, das Ende 1999 von José Solórzano entwickelt wurde. Primär war es für den Einsatz im Embedded-Bereich mit wenig Speicher ausgelegt. Was als Hobby-Open-Source-Projekt begann, wurde 2000, durch die Implementierung einer Java VM für das LEGO® Mindstorms® RCX-System, zum heutigen LeJOS. Übrigens ist das Wort „LeJOS“ der englischen Aussprache von LEGO® empfunden, wo das „G“ wie ein „J“ ausgesprochen wird. Was die Entwickler durch ein J für Java deutlich machen wollten, also wäre die richtige Aussprache „Ley-J-oss“. Es lässt sich aber auch von dem spanischen Wort „lejos“ ableiten, das übersetzt „weit“ bedeutet. Es wird dann jedoch eher „Lay-hoss“ ausgesprochen.

Das Projekt erfreute sich großer Beliebtheit und die Entwickler Brian Bagnall, Jürgen Stuber und Paul Andrews traten dem Projekt bei. Mit dem 2006 vorgestellten LEGO® Mindstorms® NXT hat das LeJOS-Entwicklungsteam die Möglichkeit erhalten, die Leistungsfähigkeit von LeJOS deutlich zu steigern. Daraufhin wurde eine Bibliothek zur Steuerung des NXT via Bluetooth über einen externen Computer implementiert. Diese Bibliothek nutzte jedoch die Standard LEGO® NXT Firmware, was zu Performanceeinbußen führte. Dies anderte sich mit der Entwicklung und Veröffentlichung von LeJOS NXJ 0.8 im Januar 2007. NXJ 0.8 war im Grunde eine Ersatzfirmware für den NXT, wodurch die LeJOS-Entwickler direkter auf die Hardware-Komponenten des LEGO® NXTs zugreifen konnten.

Im Jahr 2013 startete die Entwicklung für den LEGO® Mindstorms® EV3. Auf dem EV3 wird ein eigenes LeJOS Betriebssystem von der SD-Karte gebootet, was eine Firmwareersetzung überflüssig macht. Die bis heute aktuellste EV3 LeJOS-Version 0.9.1 wurde am 16.11.2015 veröffentlicht und obwohl diese Version als Beta deklariert ist, gibt es bisher keine Folgeversion. Das Team hat in den Jahren viele Wechsel hinter sich, aktuell stehen Lawrie Griffiths, Brian Bagnall und Andy Shaw als Projekt-Administratoren auf der Webseite.

Da wir noch keinen persönlichen Kontakt zu den Entwicklern gesucht haben und die Webseite seit geschätzt 2015 unberührt scheint, können wir im Moment für die Aktualität der Informationen nicht garantieren.

Seit November 2014 wird LeJOS in einer angepassten Version im cloudbasierten und somit ausschließlich online verfügbaren, Open-Source-Projekt Open Roberta eingesetzt, welches wir euch in Zukunft vorstellen werden.

LeJOS und der EV3

Wir werden uns zuerst die Programmierung mit dem EV3 anschauen. LeJOS nutzt hier die von LEGO® eingebaute Möglichkeit, einen eigenen Linux Kernel auf dem EV3 zu booten. Dazu wird eine SD-Karte mit dem eigenen Linux Kernel beschrieben. Der EV3 registriert das beim Starten und bootet das Betriebssystem für LeJOS. Diese Methode hat den großen Vorteil, dass die eigentliche Firmware des EV3 nicht ersetzt werden muss und der EV3 schnell wieder mit seinem originalen LEGO® Betriebssystem startet, wenn die SD-Karte wieder entfernt und der Roboter neugestartet wird.

Die Erstellung dieser SD-Karte ist jedoch aufwändig, darum haben wir eine vereinfachtes Verfahren für euch erstellt. Genaueres dazu findet ihr in unserer Installationsanleitung (folgt). Nicht nur die SD-Karten Erstellung ist etwas komplizierter, auch die Installation der richtigen Java Version gestaltet sich dadurch schwieriger, da Java 7 Embedded JRE auf dem EV3 läuft, Java 8 Embedded JDK jedoch nicht nativ. Dazu kommt, dass seit dem Java 9 Release das JDK 1.7 nicht mehr auf der Webseite verfügbar ist. Somit müssen wir entweder das JDK 8 oder 9 auf dem PC verwenden. Dadurch ergeben sich Konfigurationshürden, die in den Projekteinstellungen beachtet werden müssen.

Ist die Installation abgeschlossen, kann der EV3 über WiFi, USB und Bluetooth verbunden werden. Das Eclipse-Plugin übernimmt den Datentransfer zwischen Mindstorms® und PC, was weitestgehend reibungslos funktioniert. Insgesamt sind die Ladezeiten durch die Java-VM deutlich länger als bei nativen Sprachen auf dem EV3. Alles was in der aktuellen Version noch Probleme bereitet, halten wir in einer zukünftigen Bugliste für euch fest.

LeJOS und der NXT

LeJOS ist auch für den Einsatz auf dem NXT geeignet, da für die Java-Programmierung eine JVM (Java Virtuelle Maschine) erforderlich ist, muss die Firmware auf dem NXT durch NXJ ersetzt werden, was durch das Eclipse-Plugin gestartet werden kann. Da der NXT in anderen Sprachen wie NXC, beziehungsweise in anderen Umgebungen wie BricxCC, sehr gut programmiert werden kann, empfehlen wir eher diese Umgebungen, wenn es nicht zwingend Java sein soll. In einem separaten Artikel werden wir uns später auch die Java NXT Programmierung anschauen, vorerst hat der EV3 für uns jedoch Priorität.

Das LeJOS API

Die Programmiermöglichkeiten, die LeJOS bietet, sind sehr ausführlich in der Online-Dokumentation beschrieben. Neben dem grundlegenden Funktionsumfang, wie Bildschirmausgabe, Sensorerfassung und Motorenansteuerung, bietet LeJOS auch die Möglichkeit, mittels TCP beliebige Daten über WLAN zu verschicken. Diese vielen Möglichkeiten setzen jedoch zum Teil gute Java-Kenntnisse voraus. Gerade das Arbeiten mit vielen Bibliotheken und Klassen sind in aufwändigen Programmen Voraussetzung. Einfache Programme werden durch dieses große API und die Möglichkeiten wiederum sehr komplex. Aufgrund der Tatsache, dass das LeJOS API sehr umfangreich ist, kann durchaus lange dauern, bis ihr einen benötigten Befehl findet. Jedoch solltet ihr keine Berührungsängste mit LeJOS haben.

Fazit

LeJOS ist für die Programmierung der LEGO® Mindstorms® Versionen gut geeignet. Die Syntax von Java ist unverändert, was dafür spricht, den Java-Unterricht mit dem EV3 lebendiger zu gestalten und dabei die bekannte Java-Syntax zu verwenden. Jedoch kann die hohe Komplexität in Bezug auf Programmbefehle und ihr Zusammenspiel untereinander, sowie die recht große Bibliothek, in der man sich erstmal zurechtfinden muss, für den Programmieranfänger überfordernd sein.