ROSubuntu实战:了解ROS中的服务services和参数

本文深入探讨了ROS(机器人操作系统)中的两种核心通信机制:Services和Parameters。详细讲解了如何利用rosservice工具调用服务,包括list、type、call等命令的使用;并通过实例展示了如何通过rosparam工具操作ROS参数服务器上的数据。

在开始这部分前,要保证turtlesim_node正在运行。

1. ROS Services

除了之前所说的topic之外,Services是节点们之间通讯的另一种途径。services即服务,允许节点发送请求request并接受相应reponse。

2. rosservice

rosservice可以轻易地通过服务附加到ROS的client/service即客户/服务框架之上。rosservice有很多可以用于services的命令,展示如下:

rosservice list         print information about active services
rosservice call         call the service with the provided args
rosservice type         print service type
rosservice find         find services by service type
rosservice uri          print service ROSRPC uri

在这里插入图片描述

2.1 rosservice list

$ rosservice list

列表中的命令告诉我们turtlesim节点提供了9个服务services:
reset, clear, spawn, kill, turtle1/set_pen, /turtle1/teleport_absolute, /turtle1/teleport_relative, turtlesim/get_loggers, turtlesim/set_logger_level.
同时,也有两个与单独的 rosout节点相关的services:
/rosout/get_loggers , /rosout/set_logger_level.
在这里插入图片描述

2.2 rosservice type

使用方法:

rosservice type [service]

让我们看一下clear服务是什么类型:
在这里插入图片描述
该服务为空的,这意味着当服务进行调用时,它不接受任何参数(即,当做请求时它不发送任何数据,在接受回应时也不接受任何数据)。
让我们用rosservice call来调用它

2.3 rosservice call

使用方法:

rosservice call [service] [args]

此处我们将无参数调用因为该服务的类型是空的:

$ rosservice call /clear

在这里插入图片描述上图为命令使用前,上图为命令时用后
在这里插入图片描述如上图所示,这个命令把turtlesim_node节点的背景清除了。

下面,让我们通过查看spawn服务的信息来看一下有参数的服务的情形。

$ rosservice type /spawn | rossrv show

在这里插入图片描述如上图所示,$ rosservice type /spawn | rossrv show就是将两个命令相结合,并且第一个命令得到的结论,作为第二个命令的使用参数,通过上图可很清楚的看出来。

回归到spawn服务上来。该服务允许我们在指定的位置和方向上复制出一只乌龟,名字的字段是可选的,所以,我们不要为我们的新乌龟起名字,让turtlesim为我们生成一个。
在这里插入图片描述

3. rosparam

rosparam允许你在ROS参数服务器上存储和操作数据。参数服务器可以存储整型、浮点型、布尔型、字典和列表。rosparam使用YAML组成语言作为语法。再简单情况下,YAML看起来很自然:1是整数,1.0是浮点数,one是字符串,true是布尔型,[1,2,3]是整数列表,{a:b,c:d}是字典。rosparam有很多可以用于参数的命令,如下所示:

rosparam set            set parameter
rosparam get            get parameter
rosparam load           load parameters from file
rosparam dump           dump parameters to file
rosparam delete         delete parameter
rosparam list           list parameter names

让我们看一下参数服务器目前有哪些参数

3.1 rosparam list

$ rosparam list

在这里插入图片描述让我们用rosparam set命令来改变其中一个参数的值:

3.2 rosparam get 和 rosparam set

使用方法

rosparam set [param_name]
rosparam get [param_name]

这里,我们修改背景颜色的红色通道:

$ rosparam set /background_r 150

此时已经修改了参数值,但是你会发现背景颜色并没有发生改变,现在,我们必须调用clear服务,才能让上面的参数值更改命令生效/:

$ rosservice call /clear

在这里插入图片描述下面让我们看一下参数服务器中其他参数的值。让我们看一下绿色背景通道的值:

$ rosparam get /background_g 

我们也可以用 rosparam get / 来向我们展示所有参数服务器中的内容:

$ rosparam get /

在这里插入图片描述

3.3 rosparam dump 和 roaparam load

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

此处,我们将所有的参数写入文件 params.yaml

$ rosparam dump params.yaml

甚至可以将这些yaml文件加载到新的命名空间中,例如copy:

$ rosparam load params.yaml copy
$ rosparam get /copy/background_b

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值