[[Vorlage(Archiviert)]] ##[[Vorlage(Getestet, Precise )]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Anwendungen_hinzufügen:Anwendungen hinzufügen] [:Pakete installieren: Installation von Programmen] [:Paketquellen freischalten: Bearbeiten von Paketquellen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:sudo: Root-Rechte] [:Benutzer_und_Gruppen: Benutzer und Gruppen] }}} [[Inhaltsverzeichnis()]] Nxt-ROS ist eine Erweiterung für das [wikipedia:Robot_Operating_System:Roboter Betriebsystem ROS], das die Steuerung und eine Raumerfassung mithilfe des [:Archiv/Mindstorms:Lego nxt Bausteins] ermöglicht. Außerdem kann man einen mit dem Lego Digital Designer (ldd) designten Roboter [#Arbeiten-mit-ldd importieren], sodass der Roboter am PC 3D dargestellt werden kann und nicht noch aufwendig konfiguriert werden muss. =Installation= Ros ist nicht in den Ubuntu Paketquellen vorhanden und muss deshalb von einer Fremdquelle installiert werden. [[Vorlage(Fremd, packages.ros.org, "Fremdquellen können das System gefährden!")]] ##[[Vorlage(Fremdquelle, ]] Für [:Precise:] {{{sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu precise main" > /etc/apt/sources.list.d/ros-latest.list'}}} für [:Quantal:] {{{ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu quantal main" > /etc/apt/sources.list.d/ros-latest.list'}}} und für [:Saucy:] {{{sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu raring main" > /etc/apt/sources.list.d/ros-latest.list'}}} ##[[Vorlage(Fremdquelle-auth, http://code.ros.org/packages/ros.key)]] Den Authentifizierungsschlüssel kann man mit {{{wget http://packages.ros.org/ros.key -O - | sudo apt-key add -}}} holen. Nach der Aktualisierung der Paketinformation kann man nun ROS installieren. Es gibt mehrere Versionen: {{{#!vorlage Paketinstallation ros-hydro-desktop-full, ppa, komplettes Programm }}} alternativ {{{#!vorlage Paketinstallation ros-hydro-desktop, ppa, abgespeckt Version }}} oder {{{#!vorlage Paketinstallation ros-hydro-ros-base, ppa, nur Grundprogramm ohne GUI }}} {{{#!vorlage Hinweis Da ROS sehr umfangreich ist, werden dafür ca. 4 GB benötigt. Der Download kann dementsprechend lange dauern. }}} Im Anschluss muss `rosdep` initialisiert werden mit {{{sudo rosdep init rosdep update}}} Ferner kann man noch {{{#!vorlage Paketinstallation python-rosinstall, ppa }}} installieren als Kommandozeilenwerkzeug. Diese Anleitung folgt der Beschreibung in [http://wiki.ros.org/hydro/Installation/Ubuntu/ ROS-Wiki] {en}. = Bedienung = Hierfür sei auf die ausführliche Dokumentation im genannten Wiki [http://wiki.ros.org/ROS/Tutorials/ verwiesen] {en} = Alter Teil = Zuerst muss eine neue [:udev: udev]- Regel '''/etc/udev/rules.d/70-lego.rules''', erstellt [5] [6] werden, rosdep {{{#!code "BUS==\"usb\", ATTRS{idVendor}==\"0694\", GROUP=\"lego\", MODE=\"0660\"" > /tmp/70-lego.rules }}} und [:udev#Neustart-des-udev-Systems: udev neugestartet] werden. Als nächstes muss man die Gruppe und seinen Benutzernamen der Gruppe `lego` hinzufügen [7]. === Installieren === Zuerst müssen die Pakete * '''python-setuptools''' * '''rosinstall''' * '''mercurial''' installiert werden. {{{#!vorlage Hinweis Zusätzliche Fremdquellen müssen hinzugefügt sein (s.o.). }}} {{{#!vorlage Paketinstallation python-setuptools }}} Danach wird '''rosinstall''' mit folgendem Befehl installiert {{{#!vorlage Befehl sudo easy_install -U rosinstall }}} und schließlich noch {{{#!vorlage Paketinstallation mercurial }}} Jetzt kann das eigentliche nxt-ROS heruntergeladen und gebaut werden. {{{#!vorlage Befehl rosinstall ~/nxtros /opt/ros/cturtle "http://www.ros.org/wiki/nxt/Installation?action=AttachFile&do=get&target=nxt-0.1.0.rosinstall" }}} Danach müssen mit dem Skript ''' ~/nxtros/setup.sh''' noch Variablen für ROS gesetzt werden {{{#!vorlage Befehl . ~/nxtros/setup.sh }}} und dann muss man schließlich noch die ROS-Erweiterung installieren. {{{#!vorlage Befehl rosmake nxt nxt_apps nxt_robots --rosdep-install }}} = Tests und Beispiele = == Touch Sensor testen == [[Vorlage(Bildunterschrift, roscore.png, 450, "roscore", right)]] {{{#!vorlage Befehl rosmake nxt_python }}} {{{#!vorlage Befehl roscore }}} Der nächste Befehl muss in einem neuen Terminal[4] durchgeführt werden. Dazu muss ein Touch Sensor an PORT1 des nxt angeschlossen sein. {{{#!vorlage Befehl rosrun nxt_python touch_sensor_test.py }}} Jetzt sollte der Status des Touch Sensors angezeigt werden. ==Farbsensor testen== {{{#!vorlage Befehl roscore }}} Auch hier muss dieser Befehl erneut in einem zusätzlichen, neuen Terminal[4] durchgeführt werden: {{{#!vorlage Befehl rosrun nxt_python color_sensor_test.py }}} HIer sollten jetzt die Werte des Farbsensors angezeigt werden. = Werkzeuge = [[Vorlage(Bildunterschrift, nxtteleop.png, 450, "nxt teleop", right)]] == Den nxt mit Tastatur/Joystick steuern == Hierzu wird das Modul `nxt teleop` benötigt. Dies wird mit folgendem Befehl gebaut: {{{#!vorlage Befehl rosmake nxt_teleop }}} {{{#!vorlage Hinweis Der Übersichtlichkeit halber empfiehlt sich, ein Terminal mit mehreren Reitern zu öffnen[4]. }}} Wenn in einem Terminal nun `roscore` und in einem Andern ein `rosrun` mit einem Roboter läuft, so kann man in einem zusätzlichen Terminal nun mit dem Befehl {{{#!vorlage Befehl roslaunch nxt_teleop teleop_keyboard.launch }}} die Steuerung über die Pfeiltasten oder mit {{{#!vorlage Befehl roslaunch nxt_teleop teleop_joy.launch }}} über einen Joystick durchführen. Alternativ kann das Programm [:joy2key:] verwendet werden, das Joystickeingaben in Tastatureingaben umwandelt. == ldd == [[Vorlage(Bildunterschrift, ldd.jpg, 450, "Der Lego Digital Designer", right)]] Der Lego Digital Designer kann bis Version 2.0 mit [:Wine:] ausgeführt werden. Für aktuellere Versionen wird eine [:Virtualisierung:] empfohlen. Zum Umwandeln der Ldd- Dateien muss folgender Befehlssyntax verwendet werden: {{{#!vorlage Befehl rosrun nxt_lxf2urdf lxf2urdf.py .lxf .ldr > .urdf }}} Die abgebildete Beispieldateien [http://www.ros.org/wiki/nxt_lxf2urdf/Tutorials/Creating%20a%20simple%20robot%20model%20using%20lxf2urdf.py?action=AttachFile&do=get&target=robot.lxf robot.lxf] {dl} und [http://www.ros.org/wiki/nxt_lxf2urdf/Tutorials/Creating%20a%20simple%20robot%20model%20using%20lxf2urdf.py?action=AttachFile&do=get&target=robot.ldr robot.ldr] {dl} können vom [http://www.ros.org/wiki/ ROS-Wiki] {en} heruntergeladen werden. Sie sollten im [:Homeverzeichnis:] abgelegt werden. Das Beispiel wird dann so konvertiert: {{{#!vorlage Befehl rosrun nxt_lxf2urdf lxf2urdf.py robot.lxf robot.ldr >robot.urdf }}} Um das erzeugte Skript auch ausführen zu können, muss man nun noch mit einem Editor[5] eine '''*.launch''' Datei mit den Informationen für den '''tf tree''' und die Datei, in der der Roboterbauplan enthalten ist, erstellen: {{{#!code xml }}} Jetzt kann man die launch-Datei ausführen:[[Vorlage(Bildunterschrift, rviz.jpg, 450, "3D Darstellung mit rviz", right)]] {{{#!vorlage Befehl roslaunch learning_nxt robot.launch }}} Nun ist es auch möglich, den Roboter 3D in ROS darzustellen. Dazu ist lediglich der Befehl {{{#!vorlage Befehl rosrun rviz rviz }}} nötig. Selbstverständlich kann man auch hier gleichzeitig '''nxt teleop''' zur Steuerung des Roboters nutzen. Die Bewegunegn werden in '''rviz''' in Echtzeit nachempfunden. = Problembehebung = == hddtemp == Wenn es während der Installation von ROS zu einer Fehlermeldung kommt, kann man sie getrost mit nein beantworten. Man kann diese mit dem Befehl {{{#!vorlage Befehl echo "hddtemp hddtemp/daemon boolean false" | sudo debconf-set-selections }}} umgehen. == Befehl nicht gefunden == Wenn beispielsweise bei einem `rosrun` oder `roslaunch` die Meldung `Befehl nicht gefunden` erscheint, muss man erneut das Skript '''~/nxtros/setup.sh''' ausführen. == Fehlermeldung beim Starten == Wenn beim Starten eine Meldung wie {{{ Traceback (most recent call last): File "/u/mwise/external_repos/foote-ros-pkg/nxt/trunk/nxt_python/sensor_tests/touch_sensor_test.py", line 21, in sock = nxt.locator.find_one_brick() File "/u/mwise/external_repos/foote-ros-pkg/nxt/trunk/nxt_python/src/nxt/locator.py", line 57, in find_one_brick raise BrickNotFoundError nxt.locator.BrickNotFoundError }}} erscheint, kann dies mehrere Ursachen haben * Der nxt Brick ist nicht angeschlossen und eingeschaltet * Die originale Lego Firmware ist nicht auf dem Brick installiert * Der Brick ist nicht mit einem USB-Kabel mit dem PC verbunden * Die [#Vorbereitung udev-Regel] wurde nicht erstellt = Links = * [http://www.ros.org/wiki/nxt Projektseite] {en} * [http://ldd.lego.com/ Webseite Lego Digital Designer] {en} * [:Archiv/Mindstorms:Lego Mindstorms] - Verwendung unter Ubuntu * [http://mindstorms.lego.com/en-us/support/files/default.aspx#Firmware Lego Mindstorms Firmware] {en} * [[Anhang(nxt-ros-install_ubuntu-natty.sh)]] {dl} Installationsskript für Ubuntu 11.04 von [user:janma:] # tag: Programmierung, Hardware, LEGO