ROS2 基础概念 参数


1. Parameters

指令 功能
ros2 param delete /node parameter 删除参数值
ros2 param describe /node parameter 显示参数的相关描述
ros2 param dump /file 将参数保存到一个文件中
ros2 param get /node parameter 获取参数值
ros2 param list 列出所有节点的参数
ros2 param load /node /file 加载参数文件
ros2 param set /node parameter value 设置参数值


2. 参数

还是启动海龟及其遥控节点为例:

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

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

ros2 param list

# /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


3. 参数查看

ros2 param get <节点名称> <参数名称>

比如查看一项背景色:

ros2 param get /turtlesim background_g

# Integer value is: 86

还要了解关于这个参数的详情,可以通过:

ros2 param describe /turtlesim background_g

# Parameter name: background_g
#   Type: integer
#   Description: Green channel of the background color
#   Constraints:
#     Min value: 0
#     Max value: 255
#     Step: 1


4. 参数设置

ros2 param set <节点名称> <参数名称> <参数数据>

比如改变一项背景色:

ros2 param set /turtlesim background_g 250

# Set parameter successful

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

在这里插入图片描述


5. 参数保存

刚刚修改的背景色,只会在当前会话中更改参数,而不会永久更改
但是,可以保存设置并在下次启动节点时重新加载它们

ros2 param dump <节点名称>

比如,先只显示出来:

ros2 param dump /turtlesim --print

# /turtlesim:
#   ros__parameters:
#     background_b: 255
#     background_g: 250
#     background_r: 69
#     use_sim_time: false

储存的话,还可以指定目录

ros2 param dump /turtlesim --output-dir /

 

生产的默认文件名 turtlesim.yaml 节点名称相同

 


6. 参数加载

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

ros2 param load <节点名称> <参数文件>

比如加载刚刚保存的文件:

ros2 param load /turtlesim turtlesim.yaml

# Set parameter background_b successful
# Set parameter background_g successful
# Set parameter background_r successful
# Set parameter use_sim_time successful

只读参数只能在启动时修改,而不能在启动后修改

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

ros2 run <功能包> <可执行文件> --ros-args --params-file <参数文件>

比如启动海龟时,加载刚刚的参数文件:

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

窗口应该像往常一样出现,但背景的颜色和之前设置一样
在这种情况下,参数在启动时被修改,因此指定的只读参数也将生效