ros学习7--Understanding Services Params (ROS服务参数理解)

本文系统配置ubuntu20.04+ros1,是初学者按照ros官网初级教程学习记录,仅作个人学习记录,如有问题可联系本文作者。

附上ros1官网学习教程链接Documentation - ROS Wikihttps://wiki.ros.org/ros2官网学习教程链接Project Governance — ROS 2 Documentation: Rolling documentationhttps://docs.ros.org/en/rolling/The-ROS2-Project/Governance.html

本篇文章假设上一篇学习6启动的turtlesim_node仍在运行,现在来看看turtlesim提供了什么服务:

一、ROS服务

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

二、使用rosservice

rosservice可以很容易地通过服务附加到ROS客户端/服务器框架上。rosservice有许多可用于服务的命令,如下所示:

用法:

rosservice list         输出活跃服务的信息
rosservice call         用给定的参数调用服务
rosservice type         输出服务的类型
rosservice find         按服务的类型查找服务
rosservice uri          输出服务的ROSRPC uri

2.1rosservice list

$ rosservice list

输出如下:

list命令显示turtlesim节点提供了9个服务:reset, clear, spawn, kill, turtle1/set_pen, /turtle1/teleport_absolute, /turtle1/teleport_relative, turtlesim/get_loggers, turtlesim/set_logger_level。同时还有几个与其他节点有关的服务。

2.2rosservice type

使用rosservice type命令进一步查看clear(清除)服务

用法:

rosservice type [service]

来看看clear服务的类型:

$ rosservice type /clear

输出如下:

 

服务的类型为empty(空),这表明调用这个服务时不需要参数(即,它在发出请求时不发送数据,在接收响应时也不接收数据)。

2.3rosservice call

下面我们使用rosservice call命令调用此服务

用法:

rosservice call [service] [args]

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

$ rosservice call /clear

跟想象的一样,它清除了turtlesim_node背景上的轨迹(上一篇杂乱的背景轨迹被消除)

 

再让我们看看服务具有参数的情况。查看spawn服务的信息:

$ rosservice type /spawn | rossrv show

 

这个服务可以在给定的位置和角度生成一只新的乌龟。name字段是可选的,这里我们不设具体的名字,让turtlesim自动创建一个。

$ rosservice call /spawn 2 2 0.2 ""

该调用返回了新产生的乌龟的名字:

现在我们的turtlesim如下,两只不一样的小乌龟:

 

三、使用rosparam

rosparam能让我们在ROS参数服务器(Parameter Server)上存储和操作数据。参数服务器能够存储整型(integer)、浮点(float)、布尔(boolean)、字典(dictionaries)和列表(list)等数据类型。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           列出参数名

我们来看看现在参数服务器上都有哪些参数:

3.1rosparam list

输入如下:

$ rosparam list

可以看到turtlesim节点在参数服务器上有3个参数用于设定背景颜色。

3.2rosparam set和rosparam get

使用rosparam set来试着改变一个参数值:

用法:

rosparam set [param_name]
rosparam get [param_name]

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

$ rosparam set /turtlesim/background_r 150

上述指令修改了参数的值,现在我们需要调用clear服务使得参数的修改能生效:

$ rosservice call /clear

现在我们的turtlesim看起来应该像这样,仔细看背景颜色已经改变

然后我们来查看参数服务器上其他参数的值。获取背景的绿色通道的值:

$ rosparam get /turtlesim/background_g 

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

$ rosparam get /

 

 

3.3rosparam dump和rosparam load

如果需要将其存储在一个文件中,以便下次可以重新加载它,通过rosparam很容易就可以实现。

用法:

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

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

$ rosparam dump params.yaml

甚至可以将yaml文件重载入新的命名空间,例如copy_turtle:

$ rosparam load params.yaml copy_turtle
$ rosparam get /copy_turtle/turtlesim/background_b

 

 至此已经学习了 ROS服务和参数的工作原理,可以继续接下来的学习了。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值