服务通信自定义srv
- 流程:
- 创建ROS功能包
- 按照固定格式创建srv文件
- 编译配置文件
- 编译生成中间文件
流程:
srv 文件内的可用数据类型与 msg 文件一致,且定义 srv 实现流程与自定义 msg 实现流程类似,需查阅msg文件的可以浏览ROS话题通信流程自定义数据msg格式:
-
1.创建一个ROS功能包
-
2.按照固定格式创建srv文件
-
3.编辑配置文件
-
4.编译生成中间文件
创建ROS功能包
- 选定 src 右击 —>
create catkin package

- 创建一个
pluming_server_client功能包

- 使用
roscpp rospy std_msgs作为依赖库

pluming_server_client功能包下的结构如图所示,功能包创建成功

按照固定格式创建srv文件
-
在功能包下创建一个
srv文件夹

-
在
srv文件夹下新建一个AddInts.srv文件

-
编辑
srv文件

服务通信中,数据分成两部分,请求与响应,在 srv 文件中请求和响应使用---分割,具体实现如上所示
编译配置文件
-
package.xml中添加编译依赖与执行依赖
在plumbing_server_client功能包下的package.xml文件添加如图所示的编译依赖和执行依赖
-
CMakeLists.txt编辑srv相关配置-
加入
message_generation
在CMakeLists.txt中找到find_package添加message_generation编译依赖,如图所示:
-
配置
srv源文件
在CMakeLists.txt中找到add_service_files配置srv文件,如图所示:
-
添加生成消息时依赖
std_msgs
在CMakeLists.txt中找到generate_messages添加生成依赖,如图所示:
-
添加执行时依赖
在CMakeLists.txt中找到catkin_package添加执行依赖,如图所示:
-
编译生成中间文件
-
编译
按快捷键ctrl + shift + B编译
-
生成的中间文件
编译完成后就生成了C++和Python调用时所需的中间文件-
C++的中间文件
生成的C++中间文件在工作空间的devel/include/pluming_server_client文件下,有一个请求文件和一个响应文件,请求文件就是需要请求的数据,响应文件就是响应请求数据后的返回数据

-
Python的中间文件
生成的Python中间文件在工作空间的devel/lib/python2.7/dist-packages/plumbing_server_client/srv文件下
-


















