ROS: Creating Messages

Last Updated on 8. October 2026 by SuffocationLink status: OK

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 gleichem Namen. Jeder Knoten kann diese Nachrichten dann abonnieren. Die Nachrichten werden automatisch vom sendenden Knoten ausgesandt und alle Abonnenten 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 ausführliche Anleitung sei auf https://wiki.ros.org/ROS/Tutorials/CreatingMsgAndSrv verwiesen.

Prerequisite

ROS: Create ServiceLink status: OK
ROS: CatkinLink status: OK

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 Datentyp 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 folgende Code enthalten ist.

  message_generation
  message_runtime

With me, they were only documented.

Zum Schluss müssen wir dafür sorgen, dass Make die Datei 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 Befehl kann überprüft werden, ob ROS die Nachricht findet

rosmsg show Num

Help

Gibt’s mit -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

Related Posts

ROS: Create ServiceLink status: OK
ROS: CatkinLink status: OK

Sources

http://wiki.ros.org/ROS/Tutorials/CreatingMsgAndSrv

http://wiki.ros.org/melodic/Installation/Ubuntu

https://wiki.ros.org/ROS/Tutorials/CreatingMsgAndSrvLink status: OK

Link status: OK
DateChangeAuthor
08.10.2026Überschriften-Hierarchie korrigiert (H1→H2, Unterebenen eine Stufe tiefer)Suffocation
04.10.2026Rechtschreibung korrigiert: Tippfehler, Kommas, GrammatikSuffocation
03.10.2026Log-Liste eingefügtSuffocation
14.04.2023Post createdSuffocation
Changelog

Leave a Reply

Your email address will not be published. Required fields are marked *