栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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文件时进行分析。

详细参考

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/846323.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号