操作系统:Ubuntu 18.04

所有的ROS节点都带有一组参数来允许其属性的重配置。例如配置节点的name/namespace,使用的topic/service名称等。

名称重映射

在节点中的名称(例如topic/service名称)可以被重映射,使用的语法为:=。而节点自己的名字/名字空间可以使用__node:= 和__ns:=来完成。
这些都是静态映射,配置后会影响节点的整个生命周期。

例子

如下的例子将talker节点变为my_talker节点。发布的topic从chatter改名为my_topic。用于限定topic/service的名字空间被设为/demo,这样使用topic时就变为/demo/my_topic,而非全局化的/my_topic。

ros2 run demo_nodes_cpp talker __ns:=/demo __node:=my_talker chatter:=my_topic


如果在一个进程中运行多个节点(例如使用composition),可以通过加上节点名前缀来进行参数的重映射。例如:

ros2 run composition manual_composition talker:__node:=my_talker listener:__node:=my_listener


Logger配置

在logging部分查看__log_level参数的使用。

参数

当前支撑通过yaml文件来从命令行进程参数设置。
例如:

talker:
    ros__parameters:
        some_int: 42
        a_string: "Hello world"
        some_lists:
            some_integers: [1, 2, 3, 4]
            some_doubles : [3.14, 2.718]


然后运行:

ros2 run demo_nodes_cpp talker __params:=demo_params.yaml


其他的节点就可以检索该节点的参数,例如:

$ ros2 param list talker
  a_string
  some_int
  some_lists.some_doubles
  some_lists.some_integers


————————————————