LeJOS für Lego NXT
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
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.:
nxjflash – Überträgt die LeJOS Firmware und das LeJOS Menü auf dem NXT
nxjflashg – Eine Version von nxjflash mit grafischer Bedienoberfläche
nxjbrowse – Ein Dateibrowser für den NXJ
nxjmonitor – Ein „Armaturenbrett“, auf dem man per Bluetooth alle Sensor- und Motorwerte ablesen kann
nxjconsole – Ein umfangreiches Kontrollzentrum über den NXJ, um per Bluetooth oder USB-Verbindung Einstellungen vorzunehmen, Sensordaten abzufragen und Motoren direkt anzusteuern
Compiler (nxjc), den Linker (nxjlinker), einen Uploader (nxjupload)
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
openjdk-8-jre (universe, Java-Laufzeitumgebung für Anwender)
Befehl zum Installieren der Pakete:
sudo apt-get install openjdk-8-jre
Oder mit apturl installieren, Link: apt://openjdk-8-jre
und
openjdk-8-jdk (universe, Java Development Kit für Entwickler )
openjdk-8-demo (universe, Beispieldateien für Java)
openjdk-8-doc (universe, Dokumentation für Entwickler)
openjdk-8-jre-headless (universe, kleinere Java-Laufzeitumgebung für monitorlose Server)
openjdk-8-source (universe, Quellpakete von Java)
Befehl zum Installieren der Pakete:
sudo apt-get install openjdk-8-jdk openjdk-8-demo openjdk-8-doc openjdk-8-jre-headless openjdk-8-source
Oder mit apturl 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:
build-essential
ant
libusb-dev
libbluetooth-dev
Befehl zum Installieren der Pakete:
sudo apt-get install build-essential ant libusb-dev libbluetooth-dev
Oder mit apturl 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
"Help → Installation"
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
"Hilfe → Neue Software installieren"
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 in der Menüleiste oder durch Auswahl des Menüpunktes
"LeJOS NXJ → Upload Firmware"
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
"search"
gefolgt von
"connect"
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.
Links¶