[[Vorlage(archiviert)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:Packprogramme: Archive entpacken] [:sudo:mit Root-Rechten arbeiten] }}} [[Inhaltsverzeichnis(1)]] [[Bild(lejos-logo.jpg, , align=left)]] [http://lejos.sourceforge.net/ LeJOS] {en} 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 [:Shell: 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 [wikipedia: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 {{{#!vorlage Paketinstallation openjdk-8-jre, universe, Java-Laufzeitumgebung für Anwender }}} und {{{#!vorlage Paketinstallation 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 }}} sowie die folgenden Pakete installiert sind: {{{#!vorlage Paketinstallation 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 [sourceforge:/nxt.lejos.p/files/: lejos] {en} heruntergeladen und entpackt werden[3]. Der entpackte Ordner ist mit Rootrechten nach [:/opt:] zu kopieren[1][4]. {{{#!vorlage Befehl 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. [[Vorlage(Fremd, Software)]] 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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 {{{#!vorlage 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 [[Bild(lejos-logo.jpg, 16)]] 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. {{{#!vorlage Warnung 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 {{{#!vorlage 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. {{{#!vorlage Warnung 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: {{{#!vorlage Befehl 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 {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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 = * [http://mindstorms.lego.com/eng/Vienna_dest/Default.aspx LEGO Mindstorms NXT Homepage] {en} * [http://lejos.sourceforge.net/nxt/nxj/api/index.html LeJOS-API-Documentation] {en} * [youtube:rVCt5E1CvZU: Starting leJOS on Ubuntu Linux] {en} # tag: Hardware, Bildung, Programmierung, LEGO