Читать книгу Roboter mit ROS - Murat Calis - Страница 19

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
CATKIN_IGNORE Optionale leere Datei. Verhindert, dass dieses Paket von catkin kompiliert bzw. verarbeitet wird
CMakeLists.txt Bauanleitung für CMake
package.xml Software-Abhängigkeiten, Copyright, Autor, Version usw.
config Ordner für Konfigurationsdateien (xml, yaml)
include/paket_name Ordner für C++-Header-Dateien In CMakeLists.txt muss die Variable INCLUDE_DIRS auf den Speicherort dieser Header-Dateien verweisen
src/paket_name Ordner für C++-Dateien und Python-Module In CMakeLists.txt muss für C++-Dateien folgende Definition angepasst werden: add_executable( mein_programm src/paket_name/mein.cpp ) Bei Verwendung von Python-Modulen muss eine konfigurierte Datei setup.py im Paketverzeichnis erstellt werden und folgende Definition in CMakeLists.txt existieren: catkin_python_setup()
nodes Python-Skripte, die eine Node-Funktionalität implementieren
scripts Ausführbare Skript-Dateien, insbesondere Python-Skripte Implementiert ein Python-Skript eine Node-Funktionalität, dann kann es in scripts oder aber auch im Ordner nodes residieren
srv Service-Definitions-Dateien mit der Endung .srv Bei Verwendung von srv-Dateien müssen die folgenden Makros in CMakeLists.txt aktiviert werden: add_service_files(…) generate_messages()
msg Message-Definitions-Dateien mit der Endung .msg. Bei Verwendung von msg-Dateien müssen die folgenden Makros in CMakeLists.txt aktiviert werden: add_message_files(…) generate_messages()
action Ordner mit .action-Dateien. Bei Verwendung von .action-Dateien müssen die folgenden Makros in CMakeLists.txt aktiviert werden. add_action_files(…) generate_messages()
launch Start-Dateien mit der Endung .launch.
urdf Ordner mit .urdf-, .xacro- und .gazebo-Dateien.
meshes Ordner mit .dae-, .stl-, .jpeg-, .tiff-Dateien.
cad Ordner mit Konstruktionsdateien.
worlds Ordner mit .world-Dateien wird von Gazebo verwendet.
models Ordner mit .dae- und .sdf-Dateien wird von Gazebo verwendet. Der Ordner muss in der Umgebungsvariable $GAZEBO_MODEL_PATH enthalten sein.
buildings Ordner mit .sdf-Dateien wird von Gazebo verwendet.

Tab. 1–2Ordner- und Dateinamen in einem ROS-Paket

Der Befehl rospack liefert nützliche Informationen über die auf dem System installierten ROS-Pakete. Um alle installierten ROS-Pakete aufzulisten, verwendet man folgenden Befehl.

rospack list

Ist der Name des ROS-Pakets bekannt und möchte man wissen, ob das Paket auf dem System installiert ist, dann kann man sich mit dem nächsten Befehl schnell Gewissheit darüber verschaffen.

rospack find abot_description

Meist hängt ein ROS-Paket von diversen anderen Paketen ab. Die Abhängigkeiten überprüfen wir in folgendem Beispiel für das Programm RViz.

rospack depends rviz

Roboter mit ROS

Подняться наверх