基于前两者的衍生创新:参数(parameter)通信
学会提问:
- 为什么要聪明的提问:《提问的智慧》精读注解版
- 如何聪明的提问:关于“提问的智慧”和“别像傻瓜一样提问”-CSDN博客
目标:了解如何在 ROS 2 中获取、设置、保存和重新加载参数。
01. 背景知识
参数(Parameters)是节点的配置值。我们可以将参数视为节点设置。节点可以将参数存储为整数、浮点数、布尔值、字符串和列表(注释:这些用于告知计算机如何在底层硬件对数值进行描述、存储)。在 ROS 2 中,每个节点都维护自己的参数。有关参数的更多背景信息,请参阅Parameters概念。
02. 准备工作
加载环境变量。为了在每个新打开的终端里面使用 ROS2 的命令工具,我们需要用如下命令加载关于 ROS2 的配置信息:
source /opt/ros/jazzy/setup.zsh
运行必要的节点。启动两个 turtlesim 节点 /turtlesim
和 /teleop_turtle
。
打开新终端并运行:
ros2 run turtlesim turtlesim_node
打开另一个终端并运行:
ros2 run turtlesim turtle_teleop_key
03. 学习任务
3.1 ros2 param list
要查看属于某个节点的参数,请打开一个新终端并输入命令:
ros2 param list
我们将看到节点命名空间 /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
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.2 ros2 param get
要显示参数的类型和当前值,请使用以下命令:
ros2 param get <node_name> <parameter_name>
我们来查看一下 /turtlesim
的 background_g
参数的当前值:
ros2 param get /turtlesim background_g
这将返回值:
Integer value is: 86
现在我们知道 background_g
包含一个整数值。
如果我们在 background_r
和 background_b
上运行相同的命令,您将分别获得值 69
和 255
。
3.3 ros2 param set
要在运行时更改参数的值,请使用以下命令:
ros2 param set <node_name> <parameter_name> <value>
让我们更改 /turtlesim
的背景颜色:
ros2 param set /turtlesim background_r 150
终端应返回以下消息:
Set parameter successful
且 turtlesim 窗口的背景应该会改变颜色:
使用 set
命令设置参数只会在当前会话中更改它们,而不会永久更改。但是,我们可以保存设置并在下次启动节点时重新加载它们。
3.4 ros2 param dump
我们可以使用以下命令查看节点的所有当前参数值:
ros2 param dump <node_name>
默认情况下,该命令将打印到标准输出 (stdout),但我们也可以将参数值重定向到文件中以备后用。要将 /turtlesim
的当前参数配置保存到文件 turtlesim.yaml
中,请输入以下命令:
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
如果我们想在将来使用相同的参数重新加载 (load) 节点,Dumping parameters 会派上用场。
3.5 ros2 param load
我们可以使用以下命令将参数从文件加载到当前正在运行的节点:
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
参数有一些警告的原因。
3.6 节点启动时加载参数文件
要使用已经保存的参数值启动某个节点,请使用:
ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>
这与我们启动 turtlesim 时经常使用的命令相同,添加了 --ros-args
和 --params-file
标志,后面跟我们要加载的文件。
停止正在运行的 turtlesim 节点,并尝试使用我们已经保存的参数(turtlesim.yaml
)重新加载它,使用以下命令:
ros2 run turtlesim turtlesim_node --ros-args --params-file turtlesim.yaml
turtlesim 窗口应该像往常一样显示,但变成了以保存配置文件中的紫色背景。
注意:在节点启动时使用参数文件时,包括只读参数在内的所有参数都会被更新。
04. 总结
节点(Node)具有用于定义其默认配置值的参数(Parameter)。我们可以从命令行获取
(get) 和设置
(set)参数值。此外,我们还可以将参数设置保存到文件中,以便在将来的会话中重新加载它们。 节点使用日志以多种方式输出有关事件和状态的消息。而我们用户大多将各种自己感兴趣的内容通过日志内容进行输出、打印。
附录:销售初体验
Author:
- Rui LI
- Heng ZHANG
- Yanling ZHANG
(To Be Continued)