7.1.3 ROS-Architektur
ROS-Dateisystem
Die ROS-Dateisystemstruktur auf der Festplatte ist wie folgt aufgebaut:
WorkSpace --- Benutzerdefinierter Workspace
|--- build: Build-Bereich zum Speichern von CMake- und catkin-Cache, Konfiguration und anderen Zwischenfiles.
|--- devel: Entwicklungsbereich zum Speichern kompilierter Zielobjekte einschließlich Header, dynamischer und statischer Bibliotheken, ausführbarer Dateien usw.
|--- src: Quellcode
|-- package: ROS-Paket (grundlegende ROS-Einheit), enthält mehrere Knoten, Bibliotheken und Konfigurationsdateien. Paketnamen sollten klein geschrieben sein und aus Buchstaben, Ziffern und Unterstrichen bestehen.
|-- CMakeLists.txt: Konfiguration der Build-Regeln, einschließlich Quelldateien, Abhängigkeiten und Zieldateien.
|-- package.xml: Paketinformationen wie Name, Version, Autor, Abhängigkeiten.
|-- scripts: Verzeichnis für Python-Dateien.
|-- src: Verzeichnis für C++-Quelldateien.
|-- include: Header-Dateien.
|-- msg: Dateien für das Kommunikationsformat von Nachrichten.
|-- srv: Dateien für das Kommunikationsformat von Services.
|-- action: Dateien für das Action-Format.
|-- launch: Launch-Dateien zum gleichzeitigen Ausführen mehrerer Knoten.
|-- config: Konfigurationsdateien.
|-- CMakeLists.txt: Grundkonfiguration für die Kompilierung.Einige dieser Verzeichnisse und Dateien wurden bereits behandelt, etwa die Erstellung von Paketen, das Schreiben von C++- und Python-Dateien in den Verzeichnissen src und scripts und die Erstellung von Launch-Dateien im Verzeichnis launch. Die Dateien package.xml und CMakeLists.txt wurden ebenfalls konfiguriert. Andere Verzeichnisse werden in späteren Tutorials vorgestellt.
package.xml
Die Datei package.xml definiert die Eigenschaften des Pakets, wie Name, Version, Autor, Maintainer und Abhängigkeiten. Das Format lautet wie folgt:
<?xml version="1.0"?>
<package format="2">
<name>hello_world</name>
<version>0.0.0</version>
<description>The hello_world package</description>
<maintainer email="xuzuo@todo.todo">xuzuo</maintainer>
<license>TODO</license>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>rospy</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>
<export>
</export>
</package>CMakeLists.txt
Die Datei CMakeLists.txt ist die Eingabe für das CMake-Build-System und wird zum Erstellen des Pakets verwendet. Sie enthält die Konfiguration zur Kompilierung von C++- und Python-Dateien sowie die Definition von Abhängigkeiten.
cmake_minimum_required(VERSION 3.0.2)
project(demo01_hello_vscode)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
)
catkin_package(
)
include_directories(
${catkin_INCLUDE_DIRS}
)
add_executable(hellow src/hello.cpp)
add_dependencies(hellow ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(hellow
${catkin_LIBRARIES}
)
catkin_install_python(PROGRAMS
scripts/hello.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)Befehle des ROS-Dateisystems
Häufig verwendete Befehle zur Interaktion mit dem ROS-Dateisystem:
- Paket erstellen:
catkin_create_pkg <package_name> <dependency_1> <dependency_2> ... - Paket installieren:
sudo apt install <package_name> - Paket entfernen:
sudo apt purge <package_name> - Pakete auflisten:
rospack list - Paket finden:
rospack find <package_name> - In Paket wechseln:
roscd <package_name> - Paketdateien auflisten:
rosls <package_name> - Paket suchen:
apt search <package_name> - Paketdatei bearbeiten:
rosed <package_name> <file_name>
Ausführen von ROS-Befehlen
- ROS Core starten:
roscore - ROS-Knoten ausführen:
rosrun <package_name> <executable_file_name> - ROS-Datei starten:
roslaunch <package_name> <launch_file_name>
ROS-Berechnungsgraph
Der Berechnungsgraph in ROS stellt die Laufzeitstruktur eines ROS-Systems dar und zeigt den Datenfluss zwischen verschiedenen Knoten. Er kann mit rqt_graph visualisiert werden:
rosrun rqt_graph rqt_graphFalls nicht installiert:
sudo apt install ros-<distro>-rqt
sudo apt install ros-<distro>-rqt-common-pluginsErsetzen Sie <distro> durch Ihre ROS-Version (z. B. kinetic, melodic, noetic).
Demonstration des Berechnungsgraphen
Als Nächstes demonstrieren wir den Berechnungsgraphen mithilfe der in ROS integrierten Schildkrötensimulation.
-
Beispiel ausführen: Folgen Sie den vorherigen Anweisungen, um die Schildkrötensimulation auszuführen.
-
Berechnungsgraph anzeigen: Öffnen Sie ein neues Terminal und geben Sie ein:
bashrqt_graphoder
bashrosrun rqt_graph rqt_graph
Sie sehen einen Netzwerktopologiegraphen, der die Beziehungen zwischen verschiedenen Knoten anzeigt, ähnlich dem Bild unten.
