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