1. 在ROS package中定义新的消息
1.创建一个msg
在package/msg下面:添加自定义的消息文件xxx.msg。(在ROS中有一个特殊的数据类型:Header,它含有时间戳和坐标系信息。在msg文件的第一行经常可以看到Header header的声明.)
Header header
string child_frame_id
geometry_msgs/PoseWithCovariance pose
geometry_msgs/TwistWithCovariance twist
2.确保msg文件被转换成为C++,Python和其他语言的源代码
在package.xml中添加:
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
3.设置编译时依赖。在 CMakeLists.txt文件中,利用find_packag函数,增加对message_generation的依赖,这样就可以生成消息
find_package(catkin REQUIRED COMPONENTS
...
message_generation)
4.设置运行依赖
catkin_package(
...
CATKIN_DEPENDS message_runtime
...)
#添加自定义的xxx.msg文件(原CMakeLists.txt中有,需要去掉注释)
add_message_files(
FILES
xxx.msg
)
generate_messages() #确保CMake知道在什么时候重新配置我们的project
5.创建完成后检测ROS能否识别消息
$ rosmsg show [message type]
示例:
$ rosmsg show packagename/xxx #此处的xxx就是.msg文件名,或者可以省略packagename