ROS Python 入门学习笔记--4--服务与客户端模型

        前面我们学习了ROS当中的“发布--订阅“模型,知道了两个节点之间通过话题进行异步通信的具体方式。但是订阅与发布模型存在一个小小的问题,那就是当订阅者需要获得不同的数据时,发布者并不会根据订阅者的需要对发送的话题数据进行调整,它只负责发送设定好的话题数据。因此。针对这种情况,我们需要采用一种新的通信方式,它必须是同步的,请求一次数据,返回一次数据;多对一的,可以有多个客户端,但提供服务的服务端有一个就行了;

ROS Service 介绍

        我们来看看官方的WIKI中描述的:服务是节点之间通信的另一种方式,服务能够允许节点发送请求,并且作出响应。 (英语水平不高,翻译勉强能看)

简单点说,就是我们创建一个客户端节点,向服务端节点发送一些请求参数(我们称为request)然后服务端节点根据我们传入的参数进行处理,之后把结果再返回给客户端节点,这就是服务通信的基本过程。

Service 常用命令

  1. rosservice list (打印目前活跃的服务节点,用来查询可以用的服务)
  2. rosservice call(call后面一般加服务名以及传入参数,即向服务节点发起一次请求)

例子:

rosrun turtlesim turtlesim_node #运行小海龟节点
rosservice list #查询目前活跃的服务节点信息

可以看到,打印了很多服务节点出来,我们主要测试 /spawn 服务,这是一个用来创建小海龟的服务。

rosservice call /spawn 

我们先输一半,后面传递的参数我们不知道,这该怎么办呢?--单击tab进行格式化补全呗!

rosservice call /spawn "x: 1.0
y: 2.0
theta: 0.0
name: 'wanglei'" 

我们填入参数,分别是小海龟生成的坐标,角度,坐标

 这时我们可以看到,在左下角生成了一个新的小海龟!

扩展

        其实在ROS中还有一个特殊的服务,我们称为参数服务器,顾名思义,参数服务器就是用来存储参数数据的,比如说我们在节点执行的过程中,需要传入一些参数,我们就可以使用特殊的参数获取函数,向参数服务器获取参数,同时这个参数服务器中的参数是全局的,它的存在,相当于一位好管家,为我们提供了参数管理的服务,关于参数服务器的详情,我们将在后面讲解launch文件时进行分析。

详细参考

路漫漫其修远兮,吾将上下而求索。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值