使用``ros2 param``命令行工具 [1139]
目录 []
在ROS 2中,通过一组服务,可以获取、设置、列出和描述参数,如 概念文档 中所述。ros2 param
命令行工具是这些服务调用的包装器,可轻松从命令行操纵参数。 [16031]
ros2 param list
[1141]
此命令将列出给定节点上的所有可用参数,如果未指定节点,则列出所有可发现的节点的参数。 [1142]
要获取给定节点上的所有参数: [1143]
ros2 param list /my_node
要获取系统中所有节点的所有参数(在复杂网络上可能需要很长时间): [1144]
ros2 param list
ros2 param get
[1145]
该命令将获取特定节点上特定参数的值。 [1146]
要获取节点上参数的值: [1147]
ros2 param get /my_node use_sim_time
ros2 param set
[1148]
此命令将在特定节点上设置特定参数的值。对于大多数参数而言,新值的类型必须与现有类型相同。 [1149]
要在节点上设置参数的值: [1150]
ros2 param set /my_node use_sim_time false
在命令行中传递的值采用YAML格式,允许使用任意的YAML表达式。然而,这也意味着某些表达式的解释可能与预期不同。例如,如果节点``my_node``上的参数``my_string``是字符串类型,以下操作将不起作用: [1151]
ros2 param set /my_node my_string off
这是因为YAML将"off"解释为布尔值,而``my_string``是字符串类型。可以通过使用YAML语法来显式设置字符串来解决这个问题,例如: [1152]
ros param set /my_node my_string '!!str off'
此外,YAML支持包含(比如说)字符串、布尔值和整数的异构列表。然而,ROS 2参数不支持异构列表,所以任何包含多种类型的YAML列表都会被解释为字符串。假设节点``my_node``上的参数``my_int_array``是整数数组类型,下面的示例将无法工作: [1153]
ros param set /my_node my_int_array '[foo,off,1]'
下面的字符串类型参数可以工作: [1154]
ros param set /my_node my_string '[foo,off,1]'
ros2 param delete
[1155]
此命令将从特定节点中删除一个参数。但是,请注意,这只能删除动态参数(未声明的参数)。有关更多信息,请参阅 概念文档。 [16032]
ros2 param delete /my_node my_string
ros2 param describe
[1157]
该命令将提供有关特定节点上特定参数的文本描述: [1158]
ros2 param describe /my_node use_sim_time