首先需要理解msg和srv
创建一个message
$ cd ~/catkin_ws/src/beginner_tutorials
$ mkdir msg
$ echo "int64 num" > msg/Num.msg
查看package.xml, 确保它包含一下两条语句:
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
如果没有,添加进去。 注意,在构建的时候,我们只需要"message_generation"。然而,在运行的时候,我们只需要"message_runtime"。
在 CMakeLists.txt文件中,利用find_packag函数,增加对message_generation的依赖,这样就可以生成消息了。 如下:find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs message_generation)
确保设置了运行依赖:
catkin_package(
...
CATKIN_DEPENDS message_runtime ...
...)
省略号表示其他部分不变化
找到如下代码块:
# add_message_files(
# FILES
# Message1.msg
# Message2.msg
# )
去掉注释符号#,用你的.msg文件替代Message*.msg,就像下边这样:
add_message_files(
FILES
Num.msg
)
还要让cmake知道什么时候重新配置工程
generate_messages()
到这里cmakelist.txt修改完毕。
查看是否新加入的消息被ros识别
创建一个服务
message_generation 对msg和srv都起作用,所以之前加过了就不需要了