ROS学习笔记7-理解服务(services)和参数(parameter)
本文内容来自官方wiki:http://wiki.ros.org/ROS/Tutorials/UnderstandingServicesParams
- ROS服务(service)
服务也是ROS中一种通信机制,但是不同于主题的发布和订阅,服务采取了一种“请求(request)-响应(response)”的机制来进行数据交换。
和服务有关的功能可以使用rosservice命令来进行。rosservice list 列出活动的服务信息
rosservice call 使用给定参数调用服务
rosservice type 打印出服务类型
rosservice find 查找给定类型的服务
rosservice uri 打印服务的ROSRPC 源- rosservice list
该命令列出当前活动的服务,例如在小乌龟的例子中,我们运行rosservice list
返回如下:$ rosservice list
/clear
/kill
/reset
/rosout/get_loggers
/rosout/set_logger_level
/rostopic_21128_1568429034667/get_loggers
/rostopic_21128_1568429034667/set_logger_level
/rostopic_25467_1568471203069/get_loggers
/rostopic_25467_1568471203069/set_logger_level
/rqt_gui_py_node_25560/get_loggers
/rqt_gui_py_node_25560/set_logger_level
/rqt_gui_py_node_25926/get_loggers
/rqt_gui_py_node_25926/set_logger_level
/spawn
/teleop_turtle/get_loggers
/teleop_turtle/set_logger_level
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level - rosservice type
然后,使用rosservice type可以查看服务类型:$ rosservice type /clear
std_srvs/Empty返回Empty表示该服务不用指定参数,即只表示一个功能动作,而无需数据。
- rosservice call
使用rosservice call可以调用服务。
用法如下:rosservice call [service] [args]
例如,想调用/clear,则使用如下语句:
rosservice call /clear
则会清除掉小乌龟移动留下的轨迹。

我们可以看一下带有参数的服务/spwan的参数:
$ rosservice type /spawn | rossrv show
float32 x
float32 y
float32 theta
string name
---
string name可以看出/spawn服务类型的数据参数为3个float32表示位置(x,y)和朝向theta和一个字符串表示名字name。
用如下命令调用该服务:rosservice call /spawn 2 2 0.2 ""
则产生另外一个小乌龟:

- rosservice list
- ROS参数(rosparam)
rosparam允许在ROS参数服务器(Parameter Server)中存储并操作参数(个人理解类似于编程中的全局变量)。参数服务器采取YAML标记语言来存储如下数据类型:
integers(整型), floats(浮点型), boolean(布尔型), dictionaries(字典(键值类型)), 和lists(列表类型)。参数相关操作使用rosparam命令进行,用法如下:rosparam set 设置参数值
rosparam get 获取参数值
rosparam load 从文件加载参数
rosparam dump 存储参数到文件
rosparam delete 删除参数
rosparam list 列出参数名- rosparam list
该命令可以列出所有参数名,例如:
$ rosparam list
/background_b
/background_g
/background_r
/rosdistro
/roslaunch/uris/host_localhost__35773
/rosversion
/run_id rosparam set和rosparam get
可以通过rosparam set设置参数值,例如如下命令设置背景色中的红色通道值为200:rosparam set /background_r 200
必须再调用clear服务来刷新背景:
$ rosservice call /clear
则背景变成粉红色

使用如下命令可以获得该背景中的绿色:
$ rosparam get /background_g
86使用rosparam get /命令可获得所有参数值:
$ rosparam get /
background_b: 255
background_g: 86
background_r: 200
rosdistro: 'kinetic '
roslaunch:
uris: {host_localhost__35773: 'http://localhost:35773/'}
rosversion: '1.12.14 '
run_id: d0977b84-d694-11e9-b3cd-502b73e82f34rosparam dump和rosparam load
可以使用rosparam dump存储参数,使用rosparam load加载参数:rosparam dump [file_name] [namespace]
rosparam load [file_name] [namespace]可以指定参数文件名和命名空间
如下命令将当前命名空间中的所有参数写入params.yaml文件。$ rosparam dump params.yaml
如下命令从params.yaml文件中加载所有参数到copy命名空间。
$ rosparam load params.yaml copy
然后可以读取该空间中的参数:
$ rosparam get /copy/background_b
255
- rosparam list
ROS学习笔记7-理解服务(services)和参数(parameter)的更多相关文章
- # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)
目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...
- 微信小程序开发:学习笔记[7]——理解小程序的宿主环境
微信小程序开发:学习笔记[7]——理解小程序的宿主环境 渲染层与逻辑层 小程序的运行环境分成渲染层和逻辑层. 程序构造器
- ROS学习笔记七:在ROS中使用USB摄像头
下面是一些USB摄像头的驱动(大多数摄像头都支持uvc标准): 1 使用软件库里的uvc-camera功能包 1.1 检查摄像头 lsusb ----------------------------- ...
- ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters
上一节完成了对nodes, Topic的理解,再深入一步: Services and Parameters 我不理解为何 ROS wiki 要把service与parameter放在一起介绍, 很想分 ...
- ROS学习笔记五:创建和使用ROS msg和srv
1 msg和srv简介 1.1 msg文件 msg文件就是一个简单的text文件,其中每行有一个类型和名称,可用的类型如下: int8, int16, int32, int64 (plus uint* ...
- ROS学习笔记1-引言
该学习笔记参考ROS官方wiki的内容,见:http://wiki.ros.org/ROS/Introduction 什么是ROSROS的全称是Robot Operating System,即机器人操 ...
- Android(java)学习笔记227:服务(service)之服务的生命周期 与 两种启动服务的区别
1.之前我们在Android(java)学习笔记171:Service生命周期 (2015-08-18 10:56)说明过,可以回头看看: 2.Service 的两种启动方法和区别: (1)Servi ...
- Netty学习笔记(二) 实现服务端和客户端
在Netty学习笔记(一) 实现DISCARD服务中,我们使用Netty和Python实现了简单的丢弃DISCARD服务,这篇,我们使用Netty实现服务端和客户端交互的需求. 前置工作 开发环境 J ...
- Dubbo -- 系统学习 笔记 -- 示例 -- 静态服务
Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 静态服务 有时候希望人工管理服务提供者的上线和下线,此时需将注册中心标识为非动态管 ...
随机推荐
- 第七届蓝桥杯javaB组真题解析-四平方和(第八题)
题目 /* 四平方和 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0^2 + 1 ...
- uniGUI之通过URL控制参数(25)
通过URL代入参数,在代码中读取,如: http://localhost:8077/?ServerPort=212&&ServerIP=192.168.31.12 procedure ...
- Scrapy 爬取动态页面
目前绝大多数的网站的页面都是冬天页面,动态页面中的部分内容是浏览器运行页面中的JavaScript 脚本动态生成的,爬取相对比较困难 先来看一个很简单的动态页面的例子,在浏览器中打开 http://q ...
- selenium webdriver 执行Javascript
@Test public void testElementByID() { //通过JS获取页面元素 driver.get(url); driver.manage().window().maximiz ...
- Struts2学习(五)
表达式 1.表达式语言 ( Expression Language )2.表达式的本质: 就是 按照某种规则 书写的 字符串3.表达式的处理: 一定有一套程序 对 表达式 中的 字符串进行解析和处理 ...
- 使用mysql服务实现负载均衡
mysql 长连接(tcp协议)模拟负载均衡 1.存在member,member的port与mysql服务port一致为3306 2.vip绑定浮动ip 3.开启mysql服务: #service m ...
- 监听EditView中的文本改变事件详解--转
转自: http://blog.csdn.net/zoeice/article/details/7700529 android中的编辑框EditText也比较常用,那比如在搜索框中,没输入一个字,下面 ...
- [libpng]CMake+VS2015下编译libpng,及使用小例
编译前的工作 在编译libpng前,需要把zlib编译好,并加载到编译环境里. CMake + VS2015 下编译zlib,及使用小例 下载与解压 libpng的官网是 http://www.lib ...
- CSS文本居中显示
因为一直为元素居中问题而困扰,所以决定把自己遇到和看到的方法记录下来,以便以后查看 如果要让inline或inline-block元素居中显示,则父元素css中包含text-align:center; ...
- Codeforces1301C. Ayoub's function
本题的收获是,要学会反向思维,正向找包含1的太多,我们就反向找,全排列-只有0的不满足题意的就是答案,一共有n-m个0,m个1,插空法,一共有m+1个地方可以插入0序列,总排列数为(n+1)*n/2, ...