ROS: Create Service

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

Jeder Knoten kann Services anbieten. Ein Service zeichnet sich durch eine Anfrage, gefolgt von einer Antwort, aus. Services werden verwendet, um bestimmte Funktionen in Knoten aufzurufen. Zum Beispiel um einen Zustand abzufragen oder um einen Reset durchzuführen. Die Initiative geht hierbei vom Anfragenden aus. Dies unterscheidet sich von den Nachrichten (Messages), die abonniert werden.

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: Creating MessagesLink status: OK
ROS: CatkinLink status: OK

Ordner erstellen

Services werden im srv Ordner des Paketes abgelegt.

mkdir ~/<Workspace>/src/<Paket>/srv

Service Datei erstellen

Eine Service Datei hat die Endung .srv und beinhaltet zwei Teile: einen Ein- und einen Ausgang. Diese werden durch drei Minuszeichen voneinander getrennt. Auch hier werden nur die Daten der Schnittstelle definiert. Es wird nun eine Standard-Nachricht kopiert, diese Vorgehensweise ist auch in der Praxis hilfreich, da viele Services schon definiert sind. Zum Kopieren wird das Programm roscp (Ros Copy) verwendet.

roscp [Paket Name] [Dateiname] [Zeilpfad]

Hier mein Beispiel, ihr müsst euch hierzu im Paketordner befinden.

roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv

So sieht die Datei aus, es werden zwei Ganzzahlen erwartet und eine zurückgegeben.

int64 a
int64 b
---
int64 sum

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

  message_generation
  message_runtime

Bei mir waren sie schon eindokumentiert.

Zum Schluss passen wir noch die CMakeLists.txt Datei an. Bitte ö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_service_files(
  FILES
  AddTwoInts.srv
)

generate_messages(
   DEPENDENCIES std_msgs
)

catkin_package(
  CATKIN_DEPENDS roscpp rospy message_runtime std_msgs
)

Service erstellen

Nun catkin_make im Workspace Ordner ausführen

cd ~/<Workspace>
catkin_make

Es werden drei Dateien erstellt.

cd ~/<Workspace>/devel/include/<Paketname> | ls 
AddTwoInts.h  
AddTwoIntsRequest.h
AddTwoIntsResponse.h 

Verwenden von rossrv

rossrv show <service type>

Bei mir wie folgt

rossrv show beginner_tutorials/AddTwoInts

Output

int64 a
int64 b
---
int64 sum

Help

Gibt’s mit -h

rossrv -h

und zeigt alle Befehle von rossrv

rossrv is a command-line tool for displaying information about ROS Service types.

Commands:
	rossrv show	Show service description
	rossrv info	Alias for rossrv show
	rossrv list	List all services
	rossrv md5	Display service md5sum
	rossrv package	List services in a package
	rossrv packages	List packages that contain services

Type rossrv <command> -h for more detailed usage

Related Posts

Sources

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

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

DateChangeAuthor
08.10.2026Überschriften-Hierarchie korrigiert (H1→H2, Unterebenen eine Stufe tiefer)Suffocation
04.10.2026Rechtschreibung korrigiert: Tippfehler, Kommas, Grammatik, Groß-/KleinschreibungSuffocation
03.10.2026Log-Liste eingefügtSuffocation
15.04.2023Post createdSuffocation
Changelog

Leave a Reply

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