2.6 KiB
2.6 KiB
Header Message Errors
When wanting to introduce headers do the following steps.
You should have a CMake package created already (as only Cmake packages can implement custom msgs as of now).
Custom Message File
- Create a *.mgs file inside the
msg/
directory and start the file name with a capital letter - Add the line
std_msgs/Header header
in order to use the header message, this msg type is from standard messages (std_msgs) - Only introduce absolutely necessary comments in *.msg file (eg. #Header) in order to minimize possible errors.
Configure package.xml
- Add buildtool_depend:
<buildtool_depend>ament_cmake</buildtool_depend>
<buildtool_depend>rosidl_default_generators</buildtool_depend>
- Add build_depend:
<build_depend>builtin_interfaces</build_depend>
<build_depend>std_msgs</build_depend>
- Add exec_depend:
<exec_depend>rosidl_default_runtime</exec_depend>
<exec_depend>builtin_interfaces</exec_depend>
<exec_depend>std_msgs</exec_depend>
Configure CMakeLists.txt
- Add required packages:
find_package(ament_cmake REQUIRED)
find_package(rosidl_default_generators REQUIRED)
find_package(builtin_interfaces REQUIRED)
find_package(std_msgs REQUIRED)
- Create msg files set (exchange with your own
msg/*.msg
files):
set(msg_files
"msg/IMUInfo.msg"
"msg/Extrinsics.msg"
)
- Load set into rosidl_generate_interfaces and add the dependency for std_msgs:
rosidl_generate_interfaces(${PROJECT_NAME}
${msg_files}
DEPENDENCIES builtin_interfaces std_msgs
)
Build Colcon Workspace
- Move to root of workspace:
cd ~/<path_to_ws>
- Run build:
colcon build
Test and Verify
- Run publisher:
ros2 topic pub /chatter <pkg_name>/msg/<custom_msg_file>
- Run subscriber:
ros2 topic echo /chatter
You should see your custom msg being published and received, including the header.
Source
Link to the problem's solution at ros.org forum
Example Files:
- ROS2 Realsense: