ROS: 理解ROS服务和参数


写个学习笔记方便自己以后看和更新


ROS Services

服务(services)是节点之间通讯的另一种方式。服务允许节点发送请求(request) 并获得一个响应(response)

使用rosservice

rosservice list         输出可用服务的信息
rosservice call         调用带参数的服务
rosservice type         输出服务类型
rosservice find         依据类型寻找服务find services by service type
rosservice uri          输出服务的ROSRPC uri

rosservice list

rosservice list

list 命令显示turtlesim节点提供了9个服务:重置(reset), 清除(clear), 再生(spawn), 终止(kill), turtle1/set_pen, /turtle1/teleport_absolute, /turtle1/teleport_relative, turtlesim/get_loggers, and turtlesim/set_logger_level. 同时还有另外两个rosout节点提供的服务: /rosout/get_loggers and /rosout/set_logger_level.

/clear
/kill
/reset
/rosout/get_loggers
/rosout/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命令更进一步查看clear服务:

rosservice type

用法

rosservice type [service]

我们来看看clear服务的类型:

rosservice type clear

在这里插入图片描述
服务的类型为空(empty),这表明在调用这个服务是不需要参数(比如,请求不需要发送数据,响应也没有数据)。下面我们使用rosservice call命令调用服务:

rosservice call

使用方法:

rosservice call [service] [args]

因为服务类型是空,所以进行无参数调用:

rosservice call clear

正如我们所期待的,服务清除了turtlesim_node的背景上的轨迹。
在这里插入图片描述

rosservice type spawn| rossrv show

在这里插入图片描述
这个服务使得我们可以在给定的位置和角度生成一只新的乌龟。名字参数是可选的,这里我们不设具体的名字,让turtlesim自动创建一个。

rosservice call spawn 7 9 0.3 "hahaha"

服务返回了新产生的乌龟的名字:
在这里插入图片描述
现在我们的乌龟看起来应该是像这样的:

在这里插入图片描述

Using rosparam

rosparam使得我们能够存储并操作ROS 参数服务器(Parameter Server)上的数据。参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。rosparam使用YAML标记语言的语法。一般而言,YAML的表述很自然:1 是整型, 1.0 是浮点型, one是字符串, true是布尔, [1, 2, 3]是整型列表, {a: b, c: d}是字典. rosparam有很多指令可以用来操作参数,如下所示:

rosparam set            设置参数
rosparam get            获取参数
rosparam load           从文件读取参数
rosparam dump           向文件中写入参数
rosparam delete         删除参数
rosparam list           列出参数名

在这里插入图片描述
我们来看看现在参数服务器上都有哪些参数:

 rosparam list

我们可以看到turtlesim节点在参数服务器上有3个参数用于设定背景颜色:
在这里插入图片描述

Let’s change one of the parameter values using rosparam set:

rosparam set and rosparam get

rosparam set [param_name]
rosparam get [param_name]

现在我们修改背景颜色的红色通道:

rosparam set background_r 150

上述指令修改了参数的值,现在我们调用清除服务使得修改后的参数生效:

rosservice call clear

在这里插入图片描述
现在 我们的小乌龟看起来应该是像这样:
在这里插入图片描述

现在我们来查看参数服务器上的参数值——获取背景的绿色通道的值:

rosparam get background_g 

我们可以使用rosparam get /来显示参数服务器上的所有内容:

rosparam get /

你可能希望存储这些信息以备今后重新读取。这通过rosparam很容易就可以实现:
在这里插入图片描述

rosparam dump and rosparam load

rosparam dump [file_name]
rosparam load [file_name] [namespace]

现在我们将所有的参数写入params.yaml文件:

rosparam dump params.yaml

你甚至可以将yaml文件重载入新的命名空间,比如说copy空间:

rosparam load params.yaml copy
rosparam get copy/background_b

在这里插入图片描述

参考文献

ros官方教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值