ROS2学习之旅(7)——理解ROS2 Graph中的参数(Parameter)

参数是节点的配置值,可以将参数视为节点设置,节点可以以整数、浮点数、布尔值、字符串和列表的形式存储参数。在ROS2中,每个节点保持自己的参数。所有参数都是动态、可重新配置的,在ROS2服务的基础上构建。

1.准备

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

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

此时,出现窗口:

2.ros2 param list

为了查看节点具有那些参数,可以运行:

ros2 param list

此时,终端返回:

/teleop_turtle:
  scale_angular
  scale_linear
  use_sim_time
/turtlesim:
  background_b
  background_g
  background_r
  use_sim_time

根据返回结果,可以看到每一个节点的参数。每一个节点都会有use_sim_time参数,不仅仅是turtlesim。

根据参数的名称,/turtlesim的参数使用RGB颜色值来决定turtlesim窗口的背景颜色,下面对此进行设置。

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是一个整数值。

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

可以“dump”(转储)一个节点的所有当前参数值到一个文件保存,使用以下命令:

ros2 param dump <node_name>

保存当前turtlesim节点中的参数,可以使用:

ros2 param dump /turtlesim

此时,终端返回:

Saving to:  ./turtlesim.yaml

将在工作区所在的目录中发现一个新文件:

image-20210713144811661

如果打开这个文件,会看到以下内容:

/turtlesim:
  ros__parameters:
    background_b: 255
    background_g: 86
    background_r: 150
    use_sim_time: false

如果将来用相同的参数重新加载节点,转储参数将非常有用。

6.加载参数文件

要使用保存的参数值启动节点,可以使用:

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

以启动turtlesim为例:

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

此时,出现窗口:

7.总结

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

如果给您带来帮助,希望能给点个关注,以后还会陆续更新有关机器人的内容,点个关注不迷路~欢迎大家一起交流学习。

都看到这了,点个推荐再走吧~

未经允许,禁止转载。

posted @ 2021-07-13 22:01  Love&Robot  阅读(682)  评论(0编辑  收藏  举报