【ROS2】初级:CLI工具-理解参数

理解参数

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

 教程级别:初学者

 时间:5 分钟

 目录

  •  背景

  •  先决条件

  •  任务

    •  设置

    • 2 ros2 参数列表

    • 3 ros2 参数获取

    • 4 ros2 参数设置

    • 5 ros2 参数转储

    • 6 ros2 参数加载

    • 在节点启动时加载参数文件

  •  摘要

  •  下一步

 背景

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

 先决条件

本教程使用 turtlesim 包。

始终不要忘记在您打开的每个新终端中获取 ROS 2 的源。

 任务

1. 设置

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

打开一个新的终端并运行:

ros2 run turtlesim turtlesim_node

打开另一个终端并运行:

ros2 run turtlesim turtle_teleop_key

2 ros2 参数列表 

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

ros2 param list

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

cxy@ubuntu2404-cxy:~$ ros2 param list
/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
  start_type_description_service
  use_sim_time
/turtlesim:
  background_b
  background_g
  background_r
  holonomic
  qos_overrides./parameter_events.publisher.depth
  qos_overrides./parameter_events.publisher.durability
  qos_overrides./parameter_events.publisher.history
  qos_overrides./parameter_events.publisher.reliability
  start_type_description_service
  use_sim_time

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

基于它们的名称, /turtlesim 的参数似乎使用 RGB 颜色值确定 turtlesim 窗口的背景颜色。

确定参数类型,您可以使用 ros2 param get 。

3 ros2 参数 获取 

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

ros2 param get <node_name> <parameter_name>

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

ros2 param get /turtlesim background_g

将返回值:

cxy@ubuntu2404-cxy:~$ ros2 param get /turtlesim background_g
Integer value is: 86

现在你知道 background_g 保存一个整数值。

如果你在 background_r 和 background_b 上运行相同的命令,你将分别得到 69 和 255 的值。

4 ros2 参数 设置

在运行时更改参数的值,请使用以下命令:

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

让我们改变 /turtlesim 的背景颜色:您的终端应返回消息:

cxy@ubuntu2404-cxy:~$ ros2 param set /turtlesim background_r 150
Set parameter successful

您的 turtlesim 窗口的背景应该变色:

38dbcdf611a607690734c692186cb001.png

使用 set 命令设置参数只会在您当前的会话中更改它们,而不是永久性的。但是,您可以保存您的设置,并在下次启动节点时重新加载它们。

5 ros2 参数转储

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

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
    holonomic: false
    qos_overrides:
      /parameter_events:
        publisher:
          depth: 1000
          durability: volatile
          history: keep_last
          reliability: reliable
    start_type_description_service: true
    use_sim_time: false

如果您将来想要用相同的参数重新加载节点,转储参数会很方便

6 ros2 参数加载 

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

ros2 param load <node_name> <parameter_file>

要加载用 ros2 param dump 生成的 turtlesim.yaml 文件到 /turtlesim 节点的参数中,请输入命令:

ros2 param load /turtlesim turtlesim.yaml

您的终端将返回消息:

cxy@ubuntu2404-cxy:~$ ros2 param load /turtlesim turtlesim.yaml
Set parameter background_b successful
Set parameter background_g successful
Set parameter background_r successful
Set parameter holonomic 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 start_type_description_service failed: parameter 'start_type_description_service' cannot be set because it is read-only
Set parameter use_sim_time successful

 便条

只读参数只能在启动时修改,之后不能修改,这就是为什么“qos_overrides”参数会有一些警告。

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

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

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

乌龟仿真窗口应该像往常一样出现,但是有你之前设置的紫色背景。

 便条

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

 摘要

节点具有参数来定义其默认配置值。您可以从命令行 get 和 set 参数值。您还可以将参数设置保存到文件中,以便在未来的会话中重新加载它们。

 下一步

跳回到 ROS 2 通信方法,在下一个教程中,您将学习关于动作https://docs.ros.org/en/jazzy/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Actions/Understanding-ROS2-Actions.html 的内容。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值