ROS: Nachrichten Erstellen

Last Updated on 22. April 2023 by sfambach

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.

Voraussetzung

Ordnerstruktur

Nachrichten liegen immer im msg Ordner des Paketes.

cd ~/<Workspace>/src/<Paketname>/
mkdir msg

Nachricht erstellen

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

Build-Dateien anpassen

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.

  <build_depend>message_generation</build_depend>
  <exec_depend>message_runtime</exec_depend>

Bei mir waren sie nur ausdokumentiert.

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(<PacketName>)


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
)

Mit catkin_make wird die Nachricht nun mit erstellt. Die Header-Datei kann im folgenden Verzeichnis gefunden werden

~/<Workspace>/devel/include/<Paketname>/Num.h

Mit dem rosmsg Befehlt kann überprüft werden ob ROS die Nachricht findet

rosmsg show Num

Hilfe

Gibts mit -h

rosmsg -h

dies zeigt alle Befehle von 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 message md5sum
	rosmsg package	List messages in a package
	rosmsg packages	List packages that contain messages

Type rosmsg <command> -h for more detailed usage

Verwandte Beiträge

Quellen

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

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

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert