您正在阅读的是开发版本的文档。有关最新发布的版本,请访问 Jazzy.

了解参数

目标 了解如何在 ROS 2 中获取、设置、保存和重新加载参数。

辅导水平: 初学者

时间 5 分钟

背景介绍

参数是节点的配置值。可以把参数看作节点的设置。节点可以将参数存储为整数、浮点数、布尔值、字符串和列表。在 ROS 2 中,每个节点都维护自己的参数。有关参数的更多背景信息,请参阅 概念文件.

先决条件

本教程使用 海龟模拟软件包.

与往常一样,别忘了在 您打开的每个新终端.

任务

1 设置

启动两个海龟模拟节点、 /turtlesim/teleop_turtle.

打开一个新终端并运行

ros2 运行 turtlesim turtlesim_node

打开另一个终端并运行:

ros2 run turtlesim turtle_teleop_key

2 ros2 参数表

要查看属于节点的参数,请打开一个新终端并输入命令:

ros2 参数列表

您将看到节点命名空间、 /teleop_turtle/turtlesim,然后是每个节点的参数:

/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
  缩放矩形
  线性比例
  使用模拟时间
/turtlesim:
  背景_b
  背景_g
  背景_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
  使用模拟时间

每个节点都有参数 使用模拟时间这并不是乌龟模型所独有的。

从他们的名字来看,好像是 /turtlesim的参数使用 RGB 颜色值决定海龟模拟窗口的背景颜色。

要确定参数的类型,可以使用 玫瑰2 停止 获取.

3 ros2 参数获取

要显示参数的类型和当前值,请使用命令:

ros2 param get <node_name> <parameter_name>;

让我们找出 /turtlesim的参数 背景_g:

ros2 param get /turtlesim background_g

将返回值:

整数值为: 86

现在你知道了 背景_g 持有一个整数值。

如果在 背景_r背景_b您将得到以下值 69255分别为

4 ros2 参数集

要在运行时更改参数值,请使用命令

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

让我们改变 /turtlesim的背景颜色:

ros2 参数设置 /turtlesim background_r 150

您的终端应返回该信息:

设置参数成功

然后,Turtlesim 窗口的背景颜色就会改变:

.././././_images/set.png

使用 设置 命令只会在当前会话中更改设置,而不会永久更改。不过,您可以保存设置,下次启动节点时重新加载。

5 ros2 参数转储

使用该命令可以查看节点的所有当前参数值:

ros2 param dump <node_name>;

该命令默认打印到标准输出(stdout),但也可以将参数值重定向到文件中保存备用。要保存当前配置的 /turtlesim参数到文件 turtlesim.yaml输入命令:

ros2 param dump /turtlesim > turtlesim.yaml

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

/turtlesim:
  参数:
    背景_b: 255
    背景_g: 86
    背景_r: 150
    qos_overrides:
      /parameter_events:
        出版商:
          深度: 1000
          耐久性: 易变
          历史: keep_last
          可靠性: 可靠
    使用模拟时间: 错误

如果将来要使用相同的参数重新加载节点,转储参数就会非常方便。

6 ROS2 参数负载

您可以使用该命令将参数从文件加载到当前运行的节点:

ros2 param load <node_name> <parameter_file>;

要加载 turtlesim.yaml 生成的文件 玫瑰2 停止 转储/turtlesim 节点的参数,输入命令:

ros2 param load /turtlesim turtlesim.yaml

您的终端将返回信息:

设置参数 background_b 成功
设置参数 background_g 成功
设置参数 background_r 成功
设置参数 qos_overrides./parameter_events.publisher.depth 失败:无法设置参数 'qos_overrides./parameter_events.publisher.depth',因为它是只读参数
设置参数 qos_overrides./parameter_events.publisher.durability 失败:无法设置参数 'qos_overrides./parameter_events.publisher.durability',因为它是只读参数
设置参数 qos_overrides./parameter_events.publisher.history 失败:无法设置参数 'qos_overrides./parameter_events.publisher.history',因为它是只读参数
设置参数 qos_overrides./parameter_events.publisher.reliability 失败:参数 'qos_overrides./parameter_events.publisher.reliability'无法设置,因为它是只读参数
设置参数 use_sim_time 成功

备注

只读参数只能在启动时修改,不能在启动后修改,这就是为什么 "qos_overrides "参数会出现一些警告。

7 节点启动时加载参数文件

要使用保存的参数值启动同一节点,请使用

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

该命令与启动 turtlesim 时使用的命令相同,但添加了以下标记 --ros-args--参数文件然后是要加载的文件。

停止正在运行的 turtlesim 节点,并尝试使用保存的参数重新加载:

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

这时,"turtlesim "窗口应该和往常一样出现,只不过背景变成了之前设置的紫色。

备注

在节点启动时使用参数文件时,所有参数(包括只读参数)都将被更新。

摘要

节点有定义默认配置值的参数。您可以 获取设置 参数值。您还可以将参数设置保存到文件中,以便在以后的会话中重新加载。

下一步工作

回到 ROS 2 的通信方法,在下一个教程中,您将学习到 行动.