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