服务通信自定义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
文件下