参数--parameters

背景

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

任务练习

2.1 setup

开启两个turtle节点 , /turtlesim and /teleop_turtle.

请打开一个新的终端,并输入以下命令:

复制代码
ros2 run turtlesim turtlesim_node

请打开另一个新的终端,并输入以下命令:

复制代码
ros2 run turtlesim turtle_teleop_key

2.2 查看参数列表

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

复制代码
ros2 param list

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

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

要确定参数的类型,你可以使用 ros2 param get。

2.3 参数查询

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

复制代码
ros2 param get <node_name> <parameter_name>

让我们来查看 /turtlesim 的参数 background_g 当前的值:

复制代码
ros2 param get /turtlesim background_g

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

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

2.4 设置参数值

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

复制代码
ros2 param set <node_name> <parameter_name> <value>

让我们改变 /turtlesim 的背景颜色:

复制代码
ros2 param set /turtlesim background_r 150

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

2.5 参数拷贝

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

复制代码
ros2 param dump <node_name>

该命令默认会打印到标准输出(stdout),但你也可以将参数值重定向到文件中以便日后保存。要将当前 /turtlesim 的参数配置保存到文件 turtlesim.yaml 中,请输入命令:

复制代码
ros2 param dump /turtlesim > turtlesim.yaml

你会在当前你的终端正在运行的工作目录中找到一个新文件。如果你打开这个文件,你会看到以下内容:

导出参数很方便,如果你想在将来用相同的参数重新加载节点。

2.6 参数加载

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

复制代码
ros2 param load <node_name> <parameter_file>

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

复制代码
ros2 param load /turtlesim turtlesim.yaml

注意:需要先启动node,然后在运行加载参数指令

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

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

复制代码
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 窗口应该像往常一样出现,但背景是你之前设置的紫色。

总结

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

相关推荐
元让_vincent20 小时前
DaliyCoding C++ ROS | C++ 避坑指南:ROS 回调函数中的对象生命周期陷阱 (Use-After-Free)
开发语言·c++·机器人·ros·ros2
liuniu08182 天前
服务--services
ros
liuniu08183 天前
节点--node
ros
liuniu08185 天前
VMware虚拟机安装ubuntu2022
ubuntu·ros
Tfly__5 天前
在PX4 gazebo仿真中加入Mid360(最新)
linux·人工智能·自动驾驶·ros·无人机·px4·mid360
Eric.Lee202110 天前
SLAM 路径规划的安全走廊实现
python·机器人·ros·路径规划·避障·安全走廊
滴啦嘟啦哒13 天前
【机械臂】【LLM】一、接入千问LLM实现自然语言指令解析
深度学习·ros·vla
wzyannn15 天前
Ubuntu24.04下ROS2和MoveIt2控制六轴机械臂(持续更新)
ros·机械臂·ros2
岱宗夫up17 天前
基于ROS的视觉导航系统实战:黑线循迹+激光笔跟随双模态实现(冰达机器人Nano改造)
linux·python·机器人·ros