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

1.2.3ROS-Meta-Paket

Оглавление

Im Gegensatz zu einem einzelnen ROS-Paket ist ein ROS-Meta-Paket eine Ansammlung mehrerer loser ROS-Pakete in einem großen Gesamtpaket. Angenommen, wir entwickeln einen Roboter, der fahren, sehen und sprechen kann. Wir würden ein Paket für das Fahren, eines für das Sehen und zuletzt ein Paket für das Sprechen erstellen. Nun befinden sich diese Pakete innerhalb unseres src-Ordners und sobald weitere Pakete dazukommen, leidet die Übersichtlichkeit. Ein Meta-Paket bedeutet zugleich, dass ROS-Pakete in einem Unterordner von src gesammelt werden. Die Struktur unseres Beispielroboters könnte folgendermaßen aussehen, wenn wir es als ROS-Meta-Paket anlegen.

/home/<benutzername>/catkin_ws/src/meinbot-kinetic-master

/home/<benutzername>/catkin_ws/src/meinbot-kinetic-master/meinbot

/home/<benutzername>/catkin_ws/src/meinbot-kinetic-master/meinbot_fahren

/home/<benutzername>/catkin_ws/src/meinbot-kinetic-master/meinbot_sehen

/home/<benutzername>/catkin_ws/src/meinbot-kinetic-master/meinbot_sprechen

Die Anatomie eines ROS-Pakets kennen wir bereits. Interessant ist hier nur das ROS-Paket meinbot. Es vermittelt von seinem Namen her keine Funktion, die wir besprochen haben. Schauen wir also in den Ordner.

meinbot

|__ CMakeLists.txt

|__ package.xml

Das Verzeichnis von meinbot, welches ein Meta-Paket realisiert, enthält lediglich die Pflichtdatei package.xml und die Bauanleitung CMakeLists.txt. Der Inhalt von CMakeLists.txt verrät uns mehr über seine Funktion.

cmake_minimum_required(VERSION 2.8.3)

project(meinbot)

find_package(catkin REQUIRED)

catkin_metapackage()

Das Makro catkin_metapackage() weist CMake an, das Verzeichnis meinbot wie ein ROS-Meta-Paket zu behandeln. Werfen wir zuletzt noch einen Blick in die stark verkürzte Datei package.xml.

...

<buildtool_depend>catkin</buildtool_depend>

<run_depend>meinbot_fahren</run_depend>

<run_depend>meinbot_sehen</run_depend>

<run_depend>meinbot_sprechen</run_depend>

<export>

<metapackage />

</export>

Abgesehen von dem benötigten <buildtool_depend>-Element dürfen Meta-Pakete nur <run_depend>-Elemente haben. In diesen Elementen werden die losen ROS-Pakete zu einem großen, ganzen Meta-Paket geschnürt. Am Ende steht ein <export>-Element, das dieses ROS-Paket als ein ROS-Meta-Paket auszeichnet.

Roboter mit ROS

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