6-理解参数

背景

任务

    1 设置

    2 ros2 param list

    3 ros2 param get

    4 ros2 param set

    5 ros2 param dump

    6 ros2 param load

    7 在节点启动程序中加载参数文件

总结

背景

    参数是节点的配置值。可以将参数视为节点设置。节点可以将参数存储为整数、浮点数、布尔值、字符串和列表。在ROS 2中,每个节点维护自己的参数。

任务

1 设置

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

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

ros2 run turtlesim turtlesim_node

    另启一终端运行:

ros2 run turtlesim turtle_teleop_key

2 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 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。

4 ros2 param set

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

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

    改变/turtlesim的背景颜色:

ros2 param set /turtlesim background_r 150

    终端应该返回以下消息:

Set parameter successful

   窗口的背景应该改变颜色:

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

5 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

    如果希望将来用相同的参数重新加载节点,那么可以使用这种方式转储参数。

6 ros2 param load

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

ros2 param load <node_name> <parameter_file>

    为了加载用ros2 param dump 生成的.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 在启动节点时加载参数文件

    要使用保存的参数值启动一个节点,使用:

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

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

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

    海龟窗口应该像往常一样出现,但是带有您之前设置的紫色背景。

    注意:当在节点启动时使用参数文件时,将更新所有参数,包括只读参数。

总结

    节点具有用于定义其默认配置值的参数。您可以从命令行获取和设置参数值。您还可以将参数设置保存到文件中,以便在以后的使用中重新加载它们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值