NXT-Brick mit Python steuern
NXT-Python installieren
Hinweise für die folgende Beschreibung:
-
"$" bedeutet, dass der nachfolgende Text (ohne das $) in der bash-Shell eingegeben werden soll.
-
">>>" bedeutet, dass der nachfolgende Text Python-Shell ausgeführt werden soll.
-
Es wird Python 3 verwendet.
Arbeitsverzeichnis erzeugen:
$ cd ~
$ mkdir nxt
$ cd nxt
Python-nxt-Bibliothek herunterladen:
$ git clone https://github.com/eelviny/nxt-python
(Falls git nicht installiert ist, dann vorher mit $ sudo zypper install git installieren)
In das heruntergeladene Verzeichnis wechseln:
$ cd nxt-python
Python-nxt-Bibliothek für eigenen Nutzer (im Gegensatz zu systemweit) installieren:
$ ./install.sh
Ausprobieren, ob das geklappt hat:
$ python
>>> import nxt
Wenn keine Fehlermeldung erscheint, war die NXT-Python-Installation erfolgreich. Mit Strg+D die Python-Shell wieder verlassen.
Im nächsten Schritt wird der USB-Anschluss konfiguriert.
USB-Verbindung einrichten
Die nächsten Schritte basieren auf dieser Anleitung: https://github.com/Eelviny/nxt-python/wiki/Installation
PythonUSB (http://walac.github.io/pyusb/) installiern, um mit Python den USB-Anschluss nutzen zu können:
$ sudo zypper install python3-usb
------ Folgende Schritte erst einmal weglassen ----------
Neue Gruppe lego erzeugen:
$ sudo groupadd lego
Aktuellen Benutzer in die lego-Gruppe aufnehmen
$ sudo usermod -a -G lego <username>
wobei <username> durch den eigenen Benutzernamen ersetzt werden muss. Dieser kann mit $ whoami herausgefunden werden.
UDEV-Regel anlegen (siehe auch https://de.wikipedia.org/wiki/Udev):
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="0694", GROUP="lego", MODE="0660"' > /etc/udev/rules.d/70-lego.rules
Rechte setzen:
$ sudo chmod u+w /etc/udev/rules.d/70-lego.rules
------ Weiter hier: ----------
Brick mit USB an den Rechner anschließen und folgendes ausführen:
cd ~/.local/bin ./nxt_test # liefert: NXT brick name: b'NXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' Host address: 00:16:53:05:D2:A2 Bluetooth signal strength: 0 Free user flash: 16476 Protocol version 1.124 Firmware version 1.31 Battery level 7422 mV
(siehe auch Abschnitt Fehlerbehebung unten)
Beispiele ausprobieren
Zurück ins Arbeitsverzeichnis:
$ cd ~/nxt
Beispiele herunterladen:
$ git clone https://github.com/Eelviny/nxt-python-examples
$ cd nxt-python-examples
Einen Motor an einen beliebigen Port (A, B oder C) anschließen:
$ ./test_motor.py
Den Geräusch-Sensor an Port 1 anschließen:
$ ./clapper1.py
Fehlerbehebung
-
Brick: Orangene Taste drücken zum Anschalten
-
nxt.locator.find_one_brick() findet nichts
-
Restart udev: sudo udevadm control --reload-rules http://unix.stackexchange.com/questions/39370/how-to-reload-udev-rules-without-reboot
-
-
siehe auch https://github.com/Eelviny/nxt-python/issues/72 → TODO: try again and report back
-
$ udevadm monitor
-
Zeigt an, wenn USB-Geräte angeschlossen oder entfernt werden.
-
Den angezeigen Pfad kann man im folgenden Befehl verwenden:
-
-
$ udevadm info --path PFAD
-
PFAD ist z. B. /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2
Hintergrund
-
Es gibt verschiedene Arten von Robotern. Nur eine davon ist der Humanoide Roboter.