ROS 之自定义 service

service 和 topic 都是ROS中数据交流的方法,区别在于:

1. topic 发送之后,并不要求有人能接收,或者说,并不确定谁来接收;

2. 接收topic之后,处理的结果并不会返回给 发送者。

但是对于 service 来说,client 是数据的发送者/客户/请求者, server 是接收端/服务者,提供某些操作,两者是一对一的,而且,server处理结果会返回给 client。

自定义 service 主要分为两个步骤:

1. 定义request 和 response 数据的类型: 类似 自定义消息类型

2. 定义回调函数: 类似 subscriber 中的回调函数

而且,使用service 也类似于 topic 。

当完成上面两部之后,一个server 已经完成了。那如何调用这个服务呢?

两种办法:1) 命令行。 rosservice call /server_name

2) 类似 publisher , 定义一个 client

可以参考:

自定义消息类型     如何创建并调用server

下面总结下小问题:

1. 自己要写好 mydata.srv 文件,并且放置在 srv 文件夹下, cmake时候自动可以找到。

2. mydata.srv 文件中,变量类型要注意 int要写成  int64  等等,否则编译失败

3. mydata.srv 的文件名字 就是我们定义的消息类型名字

4. cmake编译生成自定义消息类型时,会自动生成一个mydata.h文件,在devel/include文件下。我们在使用 自定义消息类型的文件中, 一定要包含这个头文件 include "package_name/mydata.h"

问题:

1. cmakelist中不添加如下代码也可以编译通过

add_dependencies(my_node ${catkin_EXPORTED_TARGETS} ${PROJECT_NAME}_generate_messages_cpp)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值