ROS2 学习笔记6:了解ROS2参数 Parameters

Background 背景

参数是指节点的配置参数。可以将参数视为节点配置。节点可以将参数存储为整数、浮点数、布尔、字符串和列表。在ROS 2中,每个节点维护自己的参数。有关参数的更多信息,请参见 https://docs.ros.org/en/iron/Concepts/Basic/About-Parameters.html

备注: 该文档需详细阅读

Prerequisites 前提

Tasks 任务

1 source配置文件

启动节点, /turtlesim/teleop_turtle,在两个终端中分别运行:

ros2 run turtlesim turtlesim_node      
ros2 run turtlesim turtle_teleop_key      

2 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

思考及疑问: 这些参数的具体含义,定义方式,参数配置范围,参数配置依据,qos 配置策略

每个节点都有参数 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 

尝试使用此方法,查看其他节点参数。

4 ros2 param set

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

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

改变 /turtlesim 的背景色:

ros2 param set /turtlesim background_r 150

返回:

Set parameter successful  

turtlesim窗口的背景应更改颜色:

使用 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 生成的/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 窗口应该和往常一样出现,只不过背景变成了之前设置的紫色。

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

备注:实操中,此操作可使用不同配置文件修改初始节点参数,作用比较大,方便不同环境测试

Summary 总结

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

Next steps 下一步

回到 ROS 2 的通信方法,在下一个教程中,您将学习有关动作 actions 的知识。

命令合集:

ros2 param list           # 查看节点参数列表      

ros2 param get <node_name> <parameter_name> #获取节点参数            

ros2 param set <node_name> <parameter_name> <value> #设置参数的量值

ros2 param dump <node_name>  > parameter_name.yaml   #将节点的配置参数转储成文件   

ros2 param load <node_name> <parameter_file>     #将参数配置文件加载到节点     

ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>#启动执行文件并加载保存的参数文件

  • 26
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值