Last Updated on 22 April 2023 by Suffocation
Für den Austausch von Daten zwischen verschiedenen Knoten werden Nachrichten benötigt. Diese werden in .msg Dateien definiert und dann mittels catkin generiert. Das Ergebnis ist eine .h Datei mit C-Code und gleichen Namen. Jeder Knoten kann diese Nachrichten dann abbonieren. Die Nachrichten werden automatisch vom sendenden Knoten ausgesandt und alle Abbonenten bekommen sie. Dies unterscheidet die Nachricht vom Server, bei dem der Empfänger Informationen explizit anfragt.
Wie das funktioniert soll hier kurz beschrieben werden. Für eine auführliche Anleitung sei auf https://wiki.ros.org/ROS/Tutorials/CreatingMsgAndSrv verwiesen.
Prerequisite
Folder structure
Messages are always in the msg folder of the package.
cd ~//src//
mkdir msg
Create Message
In Nachrichtendateien werden untereinander die Nachrichteninhalte angegeben. Jede Zeile enthält einen Datentype und einen Namen. Eine Nachricht mit nur einem Datum in Form einer Ganzzahl kann wie folgt erstellt werden.
echo "int64 num" > msg/Num.msg
Adjust build files
Nun müssen wir noch sicherstellen, dass die Nachricht auch generiert wird. Hierzu öffnen wir die package.xml Datei im eigenen Paket und schauen ob der folgenden Code enthalten ist.
message_generation
message_runtime
With me, they were only documented.
Zum Schluss müssen wir dafür sorgen, dass Make die Dateie bauen kann. Hierfür die CMakeLists.txt Datei öffnen und den folgenden Code vervollständigen.
cmake_minimum_required(VERSION 3.0.2)
project()
include_directories(
include
${catkin_INCLUDE_DIRS}ros melodie
)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
add_message_files(
FILES
Num.msg
)
generate_messages(
DEPENDENCIES std_msgs
)
catkin_package(
CATKIN_DEPENDS roscpp rospy message_runtime std_msgs
)
The message is now built with catkin_make. The header file can be found in the following directory
~//devel/include//Num.h
Mit dem rosmsg Befehlt kann überprüft werden ob ROS die Nachricht findet
rosmsg show Num
Help
Is there with -h
rosmsg -h
This shows all commands of rosmsg
rosmsg is a command-line tool for displaying information about ROS message types.
Commands:
rosmsg show Show message description
rosmsg info Alias for rosmsg show
rosmsg list List all messages
rosmsg md5 Display the message’s MD5 sum
rosmsg package List messages in a package
rosmsg packages List packages that contain messages
Type rosmsg -h for more detailed usage
Verwandte Beiträge
Sources
http://wiki.ros.org/ROS/Tutorials/CreatingMsgAndSrv
http://wiki.ros.org/melodic/Installation/Ubuntu
https://wiki.ros.org/ROS/Tutorials/CreatingMsgAndSrv
| Date | Change | Author |
|---|---|---|
| 14.04.2023 | Post created | Suffocation |
