ROS2教程(入门级):理解ROS 2的参数(parameter)
目标: 学习如何在ROS 2 中获取、设置、保存以及重新加载参数。
背景知识
参数是节点的配置,也就是应用的设置。一个节点的参数可以是整型(int)、浮点数(float)、布尔类型(booleans)、字符串(string)以及列表(list)等。在ROS 2中,每个节点都有自己的参数。所有的参数都可以动态进行设置,并且可以跟ROS 2中的服务(service)建立起关系。
前提条件
这个教程,将会使用到turtlesim包,具体的安装过程可以看:turtlesim的安装。还是那句话,不要忘记在每一个新打开的终端source ROS 2的设置文件:设置ROS 2环境。
任务
1. 实验设置
启动两个turtlesim的节点,/teleop_turtle 和 /turtlesim。
打开一个新的终端,并且运行:
ros2 run turtlesim turtlesim_node
打开另外一个终端,并且运行:
ros2 run turtlesim turtle_teleop_key
2. ros2 param list
为了查看属于你的节点的参数,打开一个新的终端,然后输入下面的指令:
ros2 param list
你将会看到节点的命名空间,/teleop_turtle 和 /turtlesim,后面跟着每一个节点的参数:
/teleop_turtle:
scale_angular
scale_linear
use_sim_time
/turtlesim:
background_b
background_g
background_r
use_sim_time
每个节点都有use_sim_time这个参数,它不是turtlesim独有的。
基于他们的名字,看起来像是/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
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>
比如,为了保存当前/turtlesim的参数的配置,输入下面的命令:
ros2 param dump /turtlesim
你的终端会返回下面的消息:
Saving to: ./turtlesim.yaml
你将可以在你正在运行的工作空间的文件夹中发现一个新的文件。如果你打开这个文件,你将会看到下面的内容:
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的命令,只是在后面加上了两个标志:--ros-args 和 --params-file,后面再跟上你需要加载的文件。
所以,现在你可以尝试停掉你正在跑的turtlesim,然后你就可以使用下面的命令,以及你保存好的参数,来测试重新加载:
ros2 run turtlesim turtlesim_node --ros-args --params-file ./turtlesim.yaml
你会看到turtlesim的窗口会正在打开,但是用的是你之前设置的紫色背景。
总结
节点可以通过参数类改变它的配置。你可以通过命令行来获取和设置参数的值。你还可以保存参数,在未来的启动的会话中加载这个参数文件。
下一步
后面我们再次回到ROS 2 的通讯方法,在下一个教程中,我们将讲解关于actions的内容。
更多推荐
所有评论(0)