1、消息和服务的介绍
消息(msg): msg文件就是一个描述ROS中所使用消息类型的简单文本。msg文件实际上就是每行声明一个数据类型和变量名。可以使用的数据类型如下:
在ROS中有一个特殊的数据类型:Header,它含有时间戳和坐标系信息。在msg文件的第一行经常可以看到Header header的声明。下面是一个msg文件的样例,它使用了Header,string,和其他另外两个消息类型。
服务(srv): 一个srv文件描述一项服务。srv文件分为请求和响应两部分,由’—'分隔。下面是srv的一个样例:
其中 A 和 B 是请求, 而Sum 是响应。
2、创建消息
2.1 定义新的消息:
2.2 在package.xml中添加以下两条语句:
注意,在构建的时候需要"message_generation",在运行的时候需要"message_runtime"。
2.3 打开CMakeLists.txt文件:
2.3.1 在find_packag函数中增加对message_generation的依赖,可以直接在COMPONENTS的列表里增加message_generation:
2.3.2 在catkin_package函数中设置运行依赖:
2.3.3 去掉add_message_files函数前的注释符号#,并将里面的.msg文件换成自己的.msg文件:
2.3.4 去掉generate_messages函数前的注释符号#,并附加上自己的消息文件所依赖的所有含有.msg文件的package:
2.4 重新编译工作空间:
2.5 通过rosmsg show命令,检查ROS是否能够识消息:
3、创建服务
3.1 定义一个新的服务,也可以从其他地方复制过来:
3.1.1 roscp是一个很实用的命令行工具,它实现了将文件从一个package复制到另外一个package的功能:
3.2 打开CMakeLists.txt文件:
3.2.1 在find_packag函数中增加对message_generation的依赖,可以直接在COMPONENTS的列表里增加message_generation:
3.2.2 去掉add_service_files函数前的注释符号#,并将里面的.srv文件换成自己的.srv文件:
3.2.3 去掉generate_messages函数前的注释符号#,并附加上自己的消息文件所依赖的所有含有.msg文件的package:
3.2.4 通过rossrv show命令,检查ROS是否能够识该服务:
3.3 重新编译工作空间:
PS:加粗部分为相同内容