ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

LeJOS für Lego NXT

Archivierte Anleitung

Dieser Artikel wurde archiviert, da er - oder Teile daraus - nur noch unter einer älteren Ubuntu-Version nutzbar ist. Diese Anleitung wird vom Wiki-Team weder auf Richtigkeit überprüft noch anderweitig gepflegt. Zusätzlich wurde der Artikel für weitere Änderungen gesperrt.


Anmerkung: Paket nicht mehr im PPA

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

lejos-logo.jpg LeJOS-Homepage {en} 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 verschiedene nützliche Werkzeuge mit:

  • nxjbrowse – Ein Dateibrowser für den NXT.

  • nxjmonitor – Ein „Armaturenbrett“ auf dem man alle Sensor- und Motorwerte ablesen kann.

  • und natürlich den Compiler (nxjc), den Linker (nxjlinker), einen Uploader (nxjupload) sowie andere Werkzeuge (nxj).

LeJOS installieren

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

Vorbereitung

Erst sollte sichergestellt werden, dass

  • Java Development Kit (JDK) Java

  • Java Runtime Enviroment (JRE) Java

sowie die folgenden Pakete installiert sind:

  • build-essential

  • ant

  • libusb-dev

  • libbluetooth-dev

Paketliste zum Kopieren:

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

sudo aptitude install build-essential ant libusb-dev libbluetooth-dev 

Nun muss die neueste Version von LeJOS von lejos heruntergeladen und nach /opt/ entpackt [3] 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 [1] 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 den Ordner /opt/lejos_nxt zu löschen und die Änderungen in der Datei ~/.profile rückgängig zu machen.

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

Um die weitere Konfiguration durchführen zu können, müssen erst noch einige Informationen gesammelt werden. Dazu wird der NXT-Baustein über das USB-Kabel mit dem Computer verbunden, angeschaltet und

lsusb | grep Lego 

aufgerufen. Die Ausgabe sollte etwa wie folgt aussehen:

Bus 004 Device 007: ID 0694:0002 Lego Group

Wichtig sind dabei die beiden Zahlen hinter „ID“, hier also 0694 und 0002. Diese Ausgaben werden nun benutzt, um eine sogenannte udev-Regel zu schreiben, die der Gerätedatei schlussendlich die richtigen Rechte zuweist. Diese Regel wird in der Datei /etc/udev/rules.d/01-lego-nxj.rules gespeichert und sollte etwa wie folgt aussehen:

# Lego NXJ USB für die Gruppe lego-nxj verfügbar machen. 
SUBSYSTEM=="usb", ATTR{idVendor}=="0694", ATTR{idProduct}=="0002", GROUP="lego-nxj", MODE="0660"

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

sudo udevcontrol reload_rules 

oder ab Intrepid

sudo udevadm control --reload-rules 

neu geladen werden. Nach einem Neustart des NXT kann man nun die Firmware hochladen.

Firmware hochladen

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 des Resetknopfs zurücksetzen. Die Resettaste ist sehr gut im Röhrchen an der Unterseite unterhalb des USB-Anschlusses versteckt. (Man kommt nur mit einer Büroklammer o.ä. ran). Wenn der NXJ zurückgesetzt ist, gibt er ein leises Klicken von sich und man kann mit dem Befehl

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

die LeJOS-Firmware hochladen. Falls das Klicken aufhört, bevor nxjflash gestartet wurde, muss der Resetknopf erneut gedrückt werden.

Achtung!

Dadurch werden alle Daten sowie die Firmware auf dem NXJ überschrieben! Die Original-Firmware kann jedoch jederzeit durch Verwenden der originalen LEGO-Software wieder hergestellt werden.

Verbindung testen

Falls alles funktioniert hat, ist beim Starten des NXJ das LeJOS-Logo auf dem Display zu sehen. Und man erhält durch Eingabe des Befehls

nxjmonitor 

nach der Auswahl des NXJ ein übersichtliches Armaturenbrett mit Anzeigen für alle Sensoren und Motoren.

Verbindung per Bluetooth

Um den NXJ über Bluetooth anzusprechen, muss erst wie im Artikel Bluetooth/Einrichtung beschrieben vorgegangen werden. Danach muss auf dem NXJ im Menu "Bluetooth" das Bluetooth eingeschaltet werden. Es sollte dann folgende Anzeige sichtbar sein:

Status on vis

Danach kann man wieder

nxjmonitor 

gestartet werden. Falls nach einem PIN o.ä. gefragt wird, muss man "1234" eingeben.

Intrepid

Unter Ubuntu 8.10 "Intrepid Ibex" ist eine Verbindung per Bluetooth (Pairing) aufgrund des Bug #284994 im Paket bluez-gnome nicht möglich. Es treten folgende Fehlermeldungen auf:

Error from open: Can't connect: Permission denied (13)
oder
Can't create connection: Operation not permitted

Abhilfe bietet das Paket bluez-gnome - 1.8-0ubuntu2 aus dem PPA von Adilson Oliveira. Diese Lösung sollte jedoch nur von erfahrenen Nutzern angewendet werden.

Danach muss man den NXT "manuell" über "System -> Einstellungen -> Bluetooth -> +" mit dem PC Pairen. Der Pin des NXT ist "1234".

Hinweis!

Fremdpakete können das System gefährden.

Hinweis!

Zusätzliche Fremdquellen können das System gefährden.

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.

ubuntuusers.local › WikiArchivLeJOS für Lego NXT