6.ROS编程学习:服务通信——自定义服务数据

目录

一、服务通信原理

二、自定义服务数据类型

1.创建功能包

2.自定义服务数据

3.编辑配置文件

4.catkin_make编译

5.查看生成的中间文件


一、服务通信原理

服务通信原理图,在好多细节上与话题通信不同,需要注意。

区别:ROS机器人开发实践P20

话题服务
同步性异步同步
通信类型发布者/订阅者客户端/服务端
反馈
缓冲区
实时性
节点关系多对多一对多
适用场景数据传输逻辑处理

其中更多的细节还需在编写代码中观察。

二、自定义服务数据类型

1.创建功能包

 

名字

依赖

2.自定义服务数据

1.自定义服务数据类型保存在srv文件中,故创建srv文件夹和srv文件。

int32 num1
int32 num2
---
int32 sum

区别:可以观察到,数据类型与话题消息数据类型没有区别,但是需要在请求和应答描述的数据类型之间需要用“---”符号进行分割。

3.编辑配置文件

在package.xml文件添加依赖配置,这与话题通信无异:

<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

在CMakeList.txt文件添加配置,注意有区别:(ctrl+f查找功能)

添加编译时依赖。

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  message_generation
)

注意与话题通信区别(话题通信是add_message_files),同时注释也说明了为什么要建立srv文件夹,因为是从srv目录下去寻找srv文件。

## Generate services in the 'srv' folder
# add_service_files(
#   FILES
#   Service1.srv
#   Service2.srv
# )
add_service_files(
  FILES
  AddInts.srv
)

添加srv文件中的数据类型依赖,因为srv文件中的数据类型是基于std_msgs的,与话题通信无异。

generate_messages(
  DEPENDENCIES
  std_msgs
)

添加运行时依赖,与话题通信无异。(官网没有配置这个)

catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES server_client
 CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
#  DEPENDS system_lib
)

4.catkin_make编译

 生成一些c++和python的中间文件,之后能在头文件中调用,看看有没有异常,没异常配置成功。

5.查看生成的中间文件

c++

python

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值