ROS 2 Iron 教程 第一章 CLI Tools 第六节 理解参数

前言

本系列文章是由笔者翻译自ROS 2 官方教程。笔者水平有限,如有错误,还请读者指正。

目标

学会如何得到,设置,保存以及重载 ROS 2 中的参数。

背景

参数是节点的配置值。你可以将参数当作是节点的设置项。一个节点可以将参数储存为整数型,浮点型,布尔型,字符串型,列表型。在 ROS 2 中,每个节点会使用自己的参数。

先决条件

本节教程使用 turtlesim 包。

一如既往,不要忘记在每个新终端中添加 ROS 2 启动文件。

任务

1 Setup (设置)

启动两个 turtlesim 节点, 和 </teleop_turtle> 。

打开一个新终端并运行:

ros2 run turtlesim turtlesim_node

打开另一个终端并运行:

ros2 run turtlesim turtle_teleop_key

2 ros2 param list (ROS 2 参数列表)

为了查看节点的参数,打开一个新终端并输入如下命令:

ros2 param list

你将会看到节点的命名空间,<teleop_turtle> 和 , 命名空间下面跟着每个节点的参数:

/teleop_turtle:
  qos_overrides./parameter_events.publisher.depth
  qos_overrides./parameter_events.publisher.durability
  qos_overrides./parameter_events.publisher.history
  qos_overrides./parameter_events.publisher.reliability
  scale_angular
  scale_linear
  use_sim_time
/turtlesim:
  background_b
  background_g
  background_r
  qos_overrides./parameter_events.publisher.depth
  qos_overrides./parameter_events.publisher.durability
  qos_overrides./parameter_events.publisher.history
  qos_overrides./parameter_events.publisher.reliability
  use_sim_time

每个节点都有use_sim_time参数;它并不是 turtlesim 所独有的。

基于它们的名字,可以推测出,turtlesim 的参数可以通过 RGB 颜色值来决定 turtlesim 窗口的背景颜色。

为了找到参数类型,你可以使用ros2 param get

3 ros2 param get (ROS 2 参数获取)

为了显示参数的当前值和类型,使用如下命令:

ros2 param get <node_name> <parameter_name>

让我们找到/turtlesim background_g参数的当前值:

ros2 param get /turtlesim background_g

返回内容为:

Integer value is: 86

现在你知道 background_g存放着整数型的值。

如果你对background_rbackground_b运行相同命令,你将会得到 69 和 255。

4 ros2 param set (ROS 2 参数设置)

为了在运行时改变参数的值,使用如下命令:

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

让我们改变 背景的颜色:

ros2 param set /turtlesim background_r 150

你的终端应该会返回这个消息:

Set parameter successful

与此同时,你的 turtlseim 窗口的背景颜色将会改变:

在这里插入图片描述

使用set命令设置的参数仅仅在当前会话有效,并不是永久的。但是,你可以保存你的参数并在下次启动节点之前重载它们。

5 ros2 param dump (ROS 2 参数转存)

你可以通过如下命令查看一个节点的当前所有参数值:

ros2 param dump <node_name>

这个命令默认情况下使用标准输出打印,但你也可以将参数保存为文件通过重定位参数值。为了在turtlesim.yaml文件中保存turtlesim的当前参数,输入如下命令:

ros2 param dump /turtlesim > turtlesim.yaml

你将会在你的当前 shell 工作目录中发现一个新文件。如果你打开这个文件,你将会看到如下内容:

/turtlesim:
  ros__parameters:
    background_b: 255
    background_g: 86
    background_r: 150
    qos_overrides:
      /parameter_events:
        publisher:
          depth: 1000
          durability: volatile
          history: keep_last
          reliability: reliable
    use_sim_time: false

如果您想在将来使用相同的参数重新加载节点,转储参数会派上用场。

6 ros2 param load (ROS 2 参数加载)

你可以从文件中向运行中的节点加载参数,使用如下命令:

ros2 param load <node_name> <parameter_file>

为了加载ros2 param dump生成的turtlesim.yaml文件到turtlesim节点的参数,输入如下命令:

ros2 param load /turtlesim turtlesim.yaml

你的终端将会返回消息:

Set parameter background_b successful
Set parameter background_g successful
Set parameter background_r successful
Set parameter qos_overrides./parameter_events.publisher.depth failed: parameter 'qos_overrides./parameter_events.publisher.depth' cannot be set because it is read-only
Set parameter qos_overrides./parameter_events.publisher.durability failed: parameter 'qos_overrides./parameter_events.publisher.durability' cannot be set because it is read-only
Set parameter qos_overrides./parameter_events.publisher.history failed: parameter 'qos_overrides./parameter_events.publisher.history' cannot be set because it is read-only
Set parameter qos_overrides./parameter_events.publisher.reliability failed: parameter 'qos_overrides./parameter_events.publisher.reliability' cannot be set because it is read-only
Set parameter use_sim_time successful

注意
只读的参数仅仅能在启动时编辑,而不能在启动后编辑,这就是在 "qos_overrides"参数有些警告。

7 Load parameter file on node startup (在节点启动时载入参数)

为了在启动一些节点的时候使用你保存的参数值,使用:

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

这是你启动 turtlesim 时使用的命令,只是多了标志-ros-args--params-file,在它们后面添上你想要加载的文件。

停止运行中的 turtlesim 节点, 随后重载你保存的参数,使用如下命令:

ros2 run turtlesim turtlesim_node --ros-args --params-file turtlesim.yaml

turtlesim 窗口应该和往常一样出现,但背景颜色变为了之前设置的紫色。

注意
当一个参数文件被用于节点启动,包括可读参数在内的所有参数,将会被更新。

总结

节点使用参数来定义它们的默认设置值。你可使用命令行查看和设置参数值。你也可以将参数保存在文件中,以备在未来载入。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值