Note: This tutorial assumes that you have completed the previous tutorials: ROS tutorials.
(!) Please ask about problems and questions regarding this tutorial on Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Defining Custom Messages

Description: This tutorial will show you how to define your own custom message data types using the ROS Message Description Language.

Tutorial Level:

Next Tutorial: Using a C++ class in Python

Generating Messages

Generating a message is easy. Simply place a .msg file inside the msg directory in a package. Please follow previous tutorial about creating .msg files (don't forget to choose build system type at the top of the page there).

Including or Importing Messages


Messages are put into a namespace that matches the name of the package. ie.

   1 #include <std_msgs/String.h>
   3 std_msgs::String msg;


   1 from std_msgs.msg import String
   3 msg = String()


If you are using the new custom message defined in a different package, remember to add:

to manifest.xml:

<depend package="name_of_package_containing_custom_msg"/>

to package.xml:


and you will need to add this to your CMakeList.txt:

add_dependencies(your_program ${catkin_EXPORTED_TARGETS})

If you are building C++ nodes which use your new messages, you will also need to declare a dependency between your node and your message, as described in the catkin msg/srv build documentation

The ROSNodeTutorialPython tutorial shows an example of the previously described talker and listener tutorials using a custom message, with implementations in C++ and Python.

Wiki: ROS/Tutorials/DefiningCustomMessages (last edited 2018-04-27 16:38:09 by PaulBouchier)