Скачать книгу

       Mit git laden wir die Dateien für das Roboter-Modell A in das src-Verzeichnis.git clone https://bitbucket.org/piraterobotics/abot-kinetic.git

       Die Software-Abhängigkeiten, die im jeweiligen package.xml der Pakete aufgeführt sind, installieren wir mit rosdep. Der Schalter -y am Ende des Befehls bewirkt, dass alle Abfragen, die eine Benutzereingabe benötigen, automatisch mit »yes« bestätigt werden. Danach startet die Softwareverwaltung von Ubuntu mit dem Download und der Installation. Wechseln Sie vorher in das übergeordnete Verzeichnis, also catkin_ws, sonst bringt der nachfolgende Befehl eine Fehlermeldung.rosdep install --from-paths src --ignore-src --rosdistro=kinetic –y

       Zuletzt führen wir das robotereigene Installationsskript aus. Es befindet sich im scripts-Verzeichnis des bringup-Pakets unseres Roboters. Mit roscd gelangen wir am schnellsten dahin. Sollte wider Erwarten der Befehl roscd das Paket abot_bringup nicht kennen, dann verwenden Sie den Linux-Befehl cd, um in das entsprechende Verzeichnis zu gelangen. Spätestens nach einem Neustart sollte roscd jedes ROS-Paket kennen, das wir installiert haben, sonst stimmt etwas nicht mit den Umgebungsvariablen, die wir in der .bashrc konfiguriert haben. Dort sollten am Ende der Datei die source-Befehle stehen, welche unsere Umgebungsvariablen konfigurieren. Sind wir im Skripte-Ordner angekommen, führen wir ein Python-Programm namens install.py aus.Das Installationsprogramm habe ich für die Einrichtung der Hardware sowie andere immer wiederkehrende Konfigurationsschritte erstellt. Ein Problem, das dieses Skript unter anderem löst, ist, dass es für die Mikrocontroller und Laserscanner jeweils einen symbolischen Link im Verzeichnis /udev generiert. In den launch-Dateien verwenden wir dann nicht mehr die Gerätenamen, die vom Betriebssystem generiert werden, sondern die symbolischen Namen, die immer auf die aktuell generierten Namen des Betriebssystems verweisen. So kann ein Gerät aus der USB-Buchse herausgezogen und wieder eingesteckt werden, ohne dass wir uns Sorgen machen müssen, dass der Gerätename vom Betriebssystem nun anders lautet, da wir ja mit einem symbolischen Link darauf zugreifen.roscd abot_bringup/scripts./install.pyDas Installationsprogramm benötigt Administratorrechte und wird nach dessen Ausführung ein Kennwort verlangen. Die symbolischen Links werden im Verzeichnis /udev nur dann angezeigt, wenn Sie die Mikrocontroller oder einen Laserscanner mindestens einmal angeschlossen hatten.

       1.2ROS-Grundlagen

      Zuerst prüfen wir die offiziellen Quellen zu ROS, um einen Überblick über das Framework zu gewinnen und um nicht bereits Geschriebenes in diesem Buch zu wiederholen. Empfehlenswert sind also folgende Quellen:

      1 ROS-Konzeptehttp://wiki.ros.org/ROS/Concepts

      2 ROS-Starthilfehttp://wiki.ros.org/ROS/StartGuide

      3 ROS-Tutorienhttp://wiki.ros.org/ROS/Tutorials

      4 ROS-Spickzettelhttps://github.com/ros/cheatsheet/releases/

       1.2.1ROS-Dateisystem

      Nachdem die Installation abgeschlossen ist, überprüfen wir die Funktionalität und Integrität unseres ROS-Dateisystems. Der Befehl roscd wechselt in das Verzeichnis eines ROS-Pakets und mit rosls listen wir den Verzeichnisinhalt eines ROS-Pakets auf.

      roscd abot_navigation

      rosls rospy_tutorial

      Erscheint keine Fehlermeldung nach Ausführung beider Befehle, dann ist das ROS-Dateisystem korrekt konfiguriert. Insbesondere unsere eigenen Pakete sollten mit roscd erreichbar sein.

      Sind die eigenen Pakete mit roscd nicht erreichbar, kann das mehrere Ursachen haben. ROS-Befehle suchen zuerst nach ROS-Variablen. Für roscd oder rosls ist die Variable $CMAKE_PREFIX_PATH relevant. Auf der Kommandozeile können wir herausfinden, was in $CMAKE_PREFIX_PATH enthalten ist.

      echo $CMAKE_PREFIX_PATH

      Ausgabe:

      /home/<benutzername>/catkin_ws/src/opt/ros/kinetic/share

      Nach einer frischen ROS-Installation steht meist der eigene ROS-Arbeitsbereich am Anfang, sofern einer erstellt wurde. Von einem Doppelpunkt getrennt folgt das Verzeichnis der installierten ROS-Pakete der jeweiligen ROS-Distribution.

      Wenn die Ausgabe leer ist, dann wurden die setup.bash-Dateien nicht ausgeführt. Mit folgenden Befehlen kann man das nachholen, wobei die Reihenfolge eine Rolle spielt.

      source /opt/ros/kinetic/setup.bash

      source /home/<benutzername>/catkin_ws/devel/setup.bash

      Normalerweise sollten beide Befehle in unserer .bashrc ganz unten aufgeführt sein. Wenn nicht, müssen diese dort hineinkopiert werden, damit jedes Terminal-Fenster diese setup.bash-Dateien ausführt, denn diese Befehle konfigurieren die nötigen Umgebungsvariablen für ROS.

      Neben $CMAKE_PREFIX_PATH existiert eine gleichbedeutende Variable: $ROS_PACKAGE_PATH. Sie ist aus den Zeiten von rosbuild, also noch vor ROS Groovy und wird aus Kompatibilitätsgründen weiterhin gepflegt. Beide können in unserer .bashrc manuell angepasst werden. Das folgende Beispiel soll die Möglichkeiten erläutern.

      export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/home/username/catkin_ws/src/…

      Bei selbstkompilierten Paketen oder bei einem vollständig von Quellen gebautem ROS kann es notwendig sein, die $CMAKE_PREFIX_PATH bzw. $ROS_PACKAGE_PATH manuell anzupassen. Die folgenden Links dienen als Ergänzung zu den hier besprochenen Themen.

        http://wiki.ros.org/catkin/conceptual_overview

        http://wiki.ros.org/ROS/Tutorials/NavigatingTheFilesystem

        http://wiki.ros.org/ROS/EnvironmentVariables

       1.2.2ROS-Paket

      Ein einzelnes ROS-Paket stellt die kleinstmögliche Organisationseinheit innerhalb des ROS-Frameworks dar. Ein Paket ist vergleichbar mit Linux-Software-Paketen. In einem Paket können Nodes, Programme, Bibliotheken, Konfigurationsdateien und mehr enthalten sein. Das Ziel ist eine ausreichende und nützliche, nicht aber überbordende Funktionalität, welche unübersichtlich oder schwer zugänglich wird. Wir können ROS-Pakete auch als Software-Module betrachten, da wir mit ROS modulare Software entwickeln. Ein neues Paket erstellen wir mit catkin_create_pkg standardmäßig im Ordner src unseres ROS-Arbeitsbereichs.

      Die folgenden Ordner- und Dateinamen können in einem ROS-Paket vorkommen. Die Tabelle dient auch als Prüfliste bei der Arbeit mit Paketen. Ein häufiger Fehler ist, dass man die CMakeLists.txt nicht konfiguriert, während man Services, Messages etc. in den entsprechenden Ordnern bereits definiert hat. Die farbig gekennzeichnete Datei ist eine Pflichtdatei, die jedes ROS-Paket vorweisen muss, denn ROS-Programme suchen zuerst nach package.xml, um Abhängigkeiten aufzulösen oder zur Laufzeit benötigte Programme zu starten.

Скачать книгу


Ordner-/Dateiname Beschreibung