LeJOS für Lego NXT

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Ein Terminal öffnen

  2. Einen Editor öffnen

  3. Archive entpacken

  4. mit Root-Rechten arbeiten

Inhaltsverzeichnis
  1. LeJOS installieren
  2. Verbindung per USB
  3. Installation von Eclipse mit benötigten Pl...
  4. Kommandozeilenbedienung
  5. Verbindung per Bluetooth
  6. Links

lejos-logo.jpg LeJOS 🇬🇧 ist eine schlanke Java Virtual Machine, die auf einem Lego-Mindstorms-NXT-Baustein installiert werden kann. Dadurch lässt sich der Lego-NXT-Baustein vollständig mit Java programmieren. Häufig verwendet man dann die Bezeichnung NXJ (J für Java) anstelle von NXT.

LeJOS bringt für die Kommandozeilenbedienung verschiedene nützliche Werkzeuge mit, wie z.B.:

Alternativ kann LeJOS mittels passendem Plug-in auch in der Entwicklungsumgebung Eclipse verwendet werden.

LeJOS installieren

LeJOS ist nicht als Deb-Paket verfügbar und muss daher aus den Quellen kompiliert werden.

Vorbereitung

Erst sollte sichergestellt werden, dass

Paketliste zum Kopieren:

sudo apt-get install openjdk-8-jre 

Oder mit apturl die Pakete installieren. Link: apt://openjdk-8-jre

und

Paketliste zum Kopieren:

sudo apt-get install openjdk-8-jdk openjdk-8-demo openjdk-8-doc openjdk-8-jre-headless openjdk-8-source 

Oder mit apturl die Pakete installieren. Link: apt://openjdk-8-jdk,openjdk-8-demo,openjdk-8-doc,openjdk-8-jre-headless,openjdk-8-source

sowie die folgenden Pakete installiert sind:

Paketliste zum Kopieren:

sudo apt-get install build-essential ant libusb-dev libbluetooth-dev 

Oder mit apturl die Pakete installieren. Link: apt://build-essential,ant,libusb-dev,libbluetooth-dev

Nun muss die gewünschte LeJOS Version (zum Zeitpunkt des Schreibens des Artikels ist die neueste Version leJOS_NXJ_0.9.1beta-3.tar.gz) von lejos 🇬🇧 heruntergeladen und entpackt werden[3]. Der entpackte Ordner ist mit Rootrechten nach opt zu kopieren[1][4].

sudo cp -a --no-preserve=owner Downloads/leJOS_NXJ_0.9.1beta-3 /opt/lejos_nxj 

Das heruntergeladene Archiv und der entpackte Ordner können danach aus dem Download-Verzeichnis gelöscht werden.

Hinweis!

Fremdsoftware kann das System gefährden.

Um in Zukunft alle benötigten Umgebungsvariablen zu haben, empfiehlt es sich, die Datei ~/.profile um folgende Zeilen zu ergänzen[2]:

export NXJ_HOME=/opt/lejos_nxj
export LEJOS_HOME=$NXJ_HOME
export PATH=$PATH:$NXJ_HOME/bin
export CLASSPATH=$CLASSPATH:.:$NXJ_HOME/lib/classes.jar:$NXJ_HOME/lib/pccomm.jar:$NXJ_HOME/lib/jtools.jar:$NXJ_HOME/lib/pctools.jar

Danach sollte man sich abmelden und erneut anmelden, damit die Umgebungsvariablen global zur Verfügung stehen.

Kompilieren

Nach diesen Vorbereitungen kann das Kompilieren durch folgende Befehle im Terminal erledigt werden:

cd /opt/lejos_nxj/build
sudo ant 

Wenn am Ende der Ausgabe BUILD SUCCESSFUL steht, kann mit dem nächsten Schritt fortgefahren werden.

LeJOS deinstallieren

Um LeJOS vom PC zu entfernen, reicht es, die Änderungen in der Datei ~/.profile rückgängig zu machen und den Ordner /opt/lejos_nxt mit Administratorrechten zu löschen.

Verbindung per USB

Theoretisch würde die Verbindung nun bereits funktionieren, jedoch müssen die NXJ-Werkzeuge direkt schreibend auf die USB-Gerätedateien zugreifen können, was normalerweise nur als Root möglich ist. Man sollte es jedoch möglichst vermeiden als Root eine Verbindung zum NXT herstellen. Mittels udev bietet sich ein eleganter Weg, auch normalen Benutzern alle nötigen Rechte zu gewähren.

Gruppe anlegen

Zuerst sollte man eine neue Gruppe (z.B. "lego-nxj") anlegen und sich und Root der Gruppe hinzufügen:

sudo addgroup lego-nxj
sudo adduser `whoami` lego-nxj
sudo adduser root lego-nxj 

Danach sollte man sich neu anmelden oder gleich das ganze System neu starten, damit die Rechte neu eingelesen werden.

Udev-Regel schreiben

Mittels nachstehender udev-Regel werden der Gerätedatei die richtigen Rechte zugewiesen. Die Regel wird mit Administratorrechten in der neu anzulegenden Datei /etc/udev/rules.d/70-lego-nxj.rules gespeichert und sollte diesen Inhalt haben[2]:

# Lego NXJ USB im Normalmodus für die Gruppe lego-nxj verfügbar machen
SUBSYSTEM=="usb", DRIVER=="usb", ATTRS{idVendor}=="0694", ATTRS{idProduct}=="0002", GROUP="lego-nxj", MODE="0660"
# Lego NXJ USB im Firmware-Update-Modus (Atmel SAM-BA mode) für die Gruppe lego-nxj verfügbar machen
SUBSYSTEM=="usb", DRIVER=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", GROUP="lego-nxj", MODE="0660"

Anschließend müssen die udev-Regeln mit dem Befehl

sudo udevadm control --reload-rules 

neu geladen werden.

Installation von Eclipse mit benötigten Plugins

Die Installation von Eclipse ist unter Eclipse beschrieben. In den Paketquellen ist derzeit Version 3.8 enthalten, die zur Nutzung von LeJOS vollauf genügt. Falls gewünscht, so kann nach der Installation von Eclipse unter dem Menüpunkt

zunächst das deutsche Sprachpaket heruntergeladen werden. Hierfür ist im ersten Auswahlfeld diese URL

http://download.eclipse.org/technology/babel/update-site/R0.15.0/oxygen

anzugeben. Danach kann unter dem gleichen Menüpunkt, der durch die Sprachumstellung jetzt

heißt, durch Einfügen der URL

http://www.lejos.org/tools/eclipse/plugin/nxj/

das LeJOS-Plugin installiert werden.

LeJOS Firmware auf den NXT übertragen

Falls bereits das neuste LeJOS-System auf dem Baustein ist, kann dieser Schritt übersprungen werden.

Ansonsten muss man den NXT erst durch längeres Drücken der Resettaste zurücksetzen. Die Resettaste ist im Röhrchen an der Unterseite unterhalb des USB-Anschlusses versteckt. Man kann diese beispielsweise durch eine aufgebogene Büroklammer, Kugelschreibermine o.ä. betätigen. Wenn der NXT zurückgesetzt ist, gibt er ein leises Ticken von sich.

Jetzt kann durch Betätigen des Buttons lejos-logo.jpg in der Menüleiste oder durch Auswahl des Menüpunktes

die NXJ-Firmware auf den NXT übertragen werden. Falls das Klicken aufhört, bevor die Übertragung gestartet wurde, muss die Reset-Taste erneut gedrückt werden.

Achtung!

Dadurch werden alle Daten sowie die Firmware auf dem NXT überschrieben!

Die Original-Firmware kann jederzeit durch Verwenden der originalen LEGO-Software auf einem Windows- oder Apple-System wieder hergestellt werden.

Falls alles funktioniert hat, ist beim Starten des NXJ das LeJOS-Logo auf dem Display zu sehen.

Kommandozeilenbedienung

Alternativ zur Nutzung von LeJOS in Eclipse ist auch die Kommandozeilenbedienung möglich.

Werkzeuge

Eine Beschreibung aller LeJOS-Werkzeuge findet sich in der Datei README.html im Verzeichnis /opt/lejos_nxj. Nachstehend seien einige beschrieben:

LeJOS Firmware auf den NXT übertragen

Falls bereits das neuste LeJOS-System auf dem Baustein ist, kann dieser Schritt übersprungen werden. Ansonsten muss man den NXT erst durch längeres Drücken der Resettaste zurücksetzen. Die Resettaste ist im Röhrchen an der Unterseite unterhalb des USB-Anschlusses versteckt. Man kann diese beispielsweise durch eine aufgebogene Büroklammer, Kugelschreibermine o.ä. betätigen. Wenn der NXT zurückgesetzt ist, gibt er ein leises Ticken von sich und man kann mit dem Befehl

sudo -s
export NXJ_HOME=/opt/lejos_nxj/
cd /opt/lejos_nxj/bin
./nxjflash
exit 

die NXJ-Firmware auf den NXT übertragen. Falls das Ticken aufhört, bevor nxjflash gestartet wurde, muss die Resettaste erneut gedrückt werden.

Achtung!

Dadurch werden alle Daten sowie die Firmware auf dem NXT überschrieben!

Die Original-Firmware kann, sofern die Binärdatei vorhanden ist, jederzeit durch Flashen wieder hergestellt werden:

nxjflash -b "LEGO MINDSTORMS NXT Firmware VX.YY.rfw" 

Alternativ kann die Original-Firmware auch durch Verwenden der originalen LEGO-Software auf einem Windows- oder Apple-System wieder hergestellt werden.

Falls alles funktioniert hat, ist beim Starten des NXJ das LeJOS-Logo auf dem Display zu sehen.

Verbindung testen

Durch Eingabe des Befehls

nxjcontrol 

erhält man ein umfangreiches Kontrollzentrum über den NXJ. Hier können nach Anwahl von

gefolgt von

Einstellungen vorgenommen, Sensordaten abgefragt und Motoren direkt angesteuert werden.

Programme kompilieren und übertragen

Nun ist alles bereit um erste Java-Programme zu kompilieren und zu übertragen. Dazu kann man erst den Ordner samples aus dem LeJOS-Ordner ins eigene Homeverzeichnis kopieren und folgende Befehle ausführen:

cd samples/HelloWorld
nxjc HelloWorld.java
nxj -r HelloWorld 

Der letzte Befehl lädt das Programm auf den NXJ und führt es auch gleich aus.

Verbindung per Bluetooth

Um den NXJ über Bluetooth anzusprechen, muss dieses auf dem NXJ und dem PC aktiviert und sichtbar sein. Danach ist ein Pairing durchzuführen. Als PIN ist auf dem NXJ "1234" voreingestellt.