ROS 2边学边练(6)-- 何为参数(parameters)

概念

        这一知识点,应该很好理解,参数就是节点的属性,比如猫科动物,它所拥有的属性(参数)有胡子、能伸缩的爪子、随光线缩放自如的瞳孔、夜视能力、优秀的弹跳力、萌等等。ROS节点中参数支持的数据类型有整型、浮点型、布尔型、字符串以及列表。

动动手

启动小海龟

        小海龟又要出场了,我们按下面的命令分别启动小海龟节点和控制节点,

$ros2 run turtlesim turtlesim_node
$ros2 run turtlesim turtle_teleop_key

参数列表

如果想查看我们的活动节点都有哪些参数,我们可以通过下面的命令查看:

$ros2 param list

上图罗列出了/teleop_turtle和/turtlesim节点的所有属性情况,其中use_sim_time是所有ROS节点都拥有的一个参数,不单单/turtlesim和/teleop_turtle这俩节点才具有。另外/turtlesim节点有可以控制背景颜色的参数(background_b、background_g、background_r)。

获取参数值

        紧接上文,如果我们想获取到当前小海龟背后的海洋颜色RGB值,该怎么办呢?

$ros2 param get <node_name> <parameter_name>

套用下上面的命令我们来看看小海龟背景中RGB这些个参数值是多少。

$ros2 param get /turtlesim background_g

设置参数值

        除了获取参数,我们还能主动设置参数(节点运行时),它的命令是这样的:

$ros2 param set <node_name> <parameter_name> <value>

比如我们改变下小海龟的背景,我们让其显得稍稍紫一点,可以这样:

$ros2 param set /turtlesim background_r 150

当我们动起小心思想把参数值设置成了浮点数的时候(以为能像比如C/C++等语言能自动类型转换),它立即警告我们不能这样,你俩不配!

当前我们修改设置参数都是临时性的(生命为当前这个会话窗口的存活时间),如果想永久性设置参数,我们可以通过把参数保存到某个文件(命令创建的,如xx.yaml)中,在下次节点启动的时候加载这个参数文件即可。我们继续。

节点全参数值

        我们要查看某个活动节点的所有参数值,可以通过:

$ros2 param dump <node_name>

来达到目的(原文对该知识点的小标题是dump,我实在没找到合适的词去翻译它,我们取其意即可,所谓信雅达,信(本意)还是在第一位的), 我们试试:

   

刚刚上一小节也提到了保存参数到文件的事,我们还是可以利用上面的dump命令来实现,只不过我们还需要一个'>',熟悉Linux的同学应该不陌生哈。看看下面,我们将节点参数内容都保存进了一个我们取名为turtlesim.yaml的文件中(保存路径放在了桌面,当然你可以在命令行指定其他路径):

$ros2 param dump /turtlesim > turtlesim.yaml

参数运行时加载

        我们来试试加载读取刚刚保存的turtlesim.yaml参数文件,命令如下:

$ros2 param load <node_name> <parameter_file>

但是加载之前,我们手动修改一下该参数文件的一些属性值,比如将background_r改为180,看看加载看看效果:

$ros2 param load /turtlesim turtlesim.yaml

 额,看起来是更紫一点了,但是还有几个失败的参数加载,这些参数是只读参数,只能在启动时修改而不能在启动后修改,所以失败。那我们就关掉/turtlesim节点,来一次启动时加载参数文件。

参数启动时加载

$ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>

嗯,没错了啊。说明在启动时通过加载读取参数文件的方式,节点所有的参数都会被更新(对于只读参数也是)。

本篇完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值