可参考:https://blog.csdn.net/u012319441/article/details/78309781
1. 新建ros package
1.1 创建一个空的package
catkin_create_pkg test_msgs
然后我们就有了这样一个ros包。
1.2 新建msg的存放文件
在包里建一个文件夹存msg。
在msg/建立一个.msg文件
1.3 定义msg的内容
打开test.msg文件,写入自定义的msg,例如下面的内容:
float32[] data
float32 vel
geometry_msgs/Pose pose
string name
1.4 将msg关联到ros包
接下来将我们定义的msg内容需要message_generation生成C++或Python能使用的代码,需要message_runtime提供运行时的支持,所以package.xml中添加以下两句:
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>
1.5 将ros msg关联到cmake
这里有四个需要修改的地方:
1.5.1 调用find_package查找依赖的包
必备的有roscpp rospy message_generation
,其他根据具体类型添加,比如上面的msg文件中用到了geometry_msgs/Pose pose
类型,那么必须查找geometry_msgs
find_package(catkin REQUIRED COMPONENTS roscpp rospy message_generation std_msgs geometry_msgs)
1.5.2 添加msg文件——add_message_files
add_message_files(
FILES
Test.msg
# Message2.msg
)
1.5.3 指定消息文件的依赖项
generate_messages,比如上面嵌套了其他消息类型geometry_msgs,那么必须注明
#generate_messages必须在catkin_package前面
generate_messages(
DEPENDENCIES
geometry_msgs
)
1.5.4 设置ROS msg运行依赖
catkin_package(
CATKIN_DEPENDS message_runtime
)
然后就可以编译运行了。