Überblick über die HelloWorld-Implementierung
Die ROS-Programmierung verwendet hauptsächlich C++ und Python. Die meisten Programme lassen sich in beiden Sprachen umsetzen. Jedes Tutorial zeigt Beispiele sowohl in C++ als auch in Python, sodass Anwender die für sie passende Implementierung wählen können.
Der allgemeine Implementierungsprozess in ROS ist über verschiedene Sprachen hinweg ähnlich. Am Beispiel des HelloWorld-Programms sind die Schritte:
- Einen Workspace erstellen.
- Ein Paket erstellen.
- Quelldateien bearbeiten.
- Konfigurationsdateien bearbeiten.
- Kompilieren und ausführen.
Der Hauptunterschied zwischen C++ und Python liegt in den Schritten 3 und 4. Die folgenden Abschnitte beschreiben die gemeinsamen Schritte beider Implementierungen mit jeweils eigenen Abschnitten für C++ und Python.
HelloWorld (C++-Version)
-
Workspace erstellen und initialisieren
bashmkdir -p <workspace_name>/src cd <workspace_name> catkin_makeZum Beispiel:
bashmkdir -p seeed_ws/src cd seeed_ws catkin_make -
ROS-Paket erstellen und Abhängigkeiten hinzufügen
bashcd src catkin_create_pkg <package_name> roscpp rospy std_msgsZum Beispiel:
bashcd src catkin_create_pkg hello_world roscpp rospy std_msgs -
Quelldatei bearbeiten
Wechseln Sie in das
src-Verzeichnis Ihres Pakets und erstellen Sie eine neue C++-Quelldatei (z. B.hello.cpp):bashcd ~/<workspace_name>/src/<package_name>/src touch hello.cppzum Beispiel:
bashcd ~/seeed_ws/src/hello_world/src touch hello.cppKopieren Sie folgenden Code in
hello.cpp:cpp#include "ros/ros.h" int main(int argc, char *argv[]) { ros::init(argc, argv, "hello"); ros::NodeHandle n; ROS_INFO("Hello World!"); return 0; } -
CMakeLists.txtbearbeitenFügen Sie am Ende der
CMakeLists.txtIhres Pakets Folgendes hinzu:cmakeadd_executable(<node_name> src/hello.cpp) target_link_libraries(<node_name> ${catkin_LIBRARIES})zum Beispiel:
cmakeadd_executable(hello src/hello.cpp) target_link_libraries(hello ${catkin_LIBRARIES})Hinweis: Die hier genannte
CMakeLists.txt-Datei befindet sich im Verzeichnis des erstellten Pakets, nicht im Workspace-Verzeichnis. -
Workspace kompilieren
bashcd <workspace_name> catkin_makezum Beispiel:
bashcd ~/seeed_ws catkin_make -
Programm ausführen
Öffnen Sie ein Terminal und starten Sie ROS core:
bashroscoreÖffnen Sie ein weiteres Terminal, sourcen Sie den Workspace und führen Sie den Knoten aus:
bashcd <workspace_name> source devel/setup.bash rosrun <package_name> hellozum Beispiel:
bashcd ~/seeed_ws source devel/setup.bash rosrun hello_world hello
Sie sollten die Ausgabe Hello World! sehen.
HelloWorld (Python-Version)
-
Workspace erstellen und initialisieren
bashmkdir -p <workspace_name>/src cd <workspace_name> catkin_makeZum Beispiel:
bashmkdir -p seeed_ws/src cd seeed_ws catkin_make -
ROS-Paket erstellen und Abhängigkeiten hinzufügen
bashcd src catkin_create_pkg <package_name> roscpp rospy std_msgsZum Beispiel:
bashcd src catkin_create_pkg hello_world roscpp rospy std_msgs -
scripts-Verzeichnis hinzufügen und Python-Datei erstellenWechseln Sie in das Verzeichnis Ihres Pakets, erstellen Sie ein
scripts-Verzeichnis und eine neue Python-Datei (z. B.hello.py):zum Beispiel:
bashmkdir ~/seeed_ws/src/hello_world/scripts cd ~/seeed_ws/src/hello_world/scripts touch hello.pypython#!/usr/bin/env python import rospy if __name__ == "__main__": rospy.init_node("hello") rospy.loginfo("Hello World!") -
Ausführungsrechte vergeben
bashsudo chmod +x hello.py -
CMakeLists.txtbearbeitenFügen Sie am Ende der
CMakeLists.txtIhres Pakets Folgendes hinzu:cmakecatkin_install_python(PROGRAMS scripts/hello.py DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} ) -
Workspace kompilieren
bashcd <workspace_name> catkin_makezum Beispiel:
bashcd ~/seeed_ws catkin_make -
Programm ausführen Öffnen Sie ein Terminal und starten Sie ROS core:
bashroscoreÖffnen Sie ein weiteres Terminal, sourcen Sie den Workspace und führen Sie den Knoten aus:
bashcd <workspace_name> source devel/setup.bash rosrun <package_name> hello.pyZum Beispiel:
bashcd ~/seeed_ws source devel/setup.bash rosrun hello_world hello.pySie sollten die Ausgabe
Hello World!sehen.
Hinweis
Damit das Sourcen der Workspace-Setup-Datei bequemer wird, fügen Sie es Ihrer .bashrc hinzu:
echo "source ~/<workspace_name>/devel/setup.bash" >> ~/.bashrcDies stellt sicher, dass der Workspace automatisch gesourcet wird, sobald ein neues Terminal geöffnet wird.