警告

您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.

通过命令行向节点传递 ROS 参数

所有 ROS 节点都有一组参数,允许对各种属性进行重新配置。例如,配置节点的名称/命名空间、使用的主题/服务名称以及节点上的参数。所有 ROS 特有的参数都必须在 --ros-args 旗子

玫瑰2 运行 我的包 节点可执行 --ros-args ...

更多详情,请参阅 本设计文件.

名称重映射

节点内的名称(如主题/服务)可使用以下语法重新映射 -r name>:=<new name>;.节点本身的名称/命名空间可以使用 -r 节点:=<新 网站 name>;-r ns:=<new 网站 命名空间.

请注意,这些重映射是 "静态 "重映射,因为它们适用于节点的整个生命周期。目前还不支持在节点启动后对名称进行 "动态 "重新映射。

参见 本设计文件 以获取更多关于参数重映射的详细信息(目前尚未提供所有功能)。

示例

以下调用将导致 话匣子 节点名下启动的节点 我的发言人出版名为 我的主题 而不是默认的 唠叨.命名空间必须以斜线开头,设置为 /demo这意味着主题是在该命名空间中创建的 (/demo/my_topic),而不是全球 (/my_topic).

玫瑰2 运行 演示节点 话匣子 --ros-args -r __ns:=/demo -r __节点:=我的发言人 -r 唠叨:=我的主题

向特定节点传递重映射参数

如果在一个进程中运行多个节点(如使用 组成),重映射参数可以使用特定节点的名称作为前缀传递给该节点。例如,下面的代码将把重映射参数传递给指定的节点:

玫瑰2 运行 构成 手动合成 --ros-args -r talker:__node:=我的发言人 -r listener:__node:=我的监听器

下面的示例将同时更改节点名称和重新映射主题(节点和名称空间的更改始终会被应用 之前 主题重映射):

玫瑰2 运行 构成 手动合成 --ros-args -r talker:__node:=我的发言人 -r my_talker:chatter:=我的主题 -r listener:__node:=我的监听器 -r my_listener:chatter:=我的主题

记录仪配置

参见 --日志级 中的参数用法 日志页面.

参数

直接从命令行设置参数

您可以使用以下语法直接从命令行设置参数:

玫瑰2 运行 包名 可执行名称 --ros-args -p 参数名:=参数值

例如,您可以运行

玫瑰2 运行 演示节点 参数黑板 --ros-args -p some_int:=42 -p "a_string:=Hello world"; -p "some_lists.some_integers:=[1, 2, 3, 4]"; -p "some_lists.some_doubles:=[3.14, 2.718]";

其他节点可以检索参数值,例如

$ 玫瑰2 停止 清单 参数_黑板 a_string some_int some_lists.some_doubles some_lists.some_integers

从 YAML 文件设置参数

参数可以通过 yaml 文件的形式在命令行中设置。

参见此处 以获取 yaml 文件语法示例。

例如,将以下内容保存为 demo_params.yaml:

参数黑板:
    参数:
        some_int: 42
        a_string: 您好 世界";
        一些列表:
            一些整数: [1, 2, 3, 4]
            some_doubles : [3.14, 2.718]

然后在节点中用 declare_parameter声明参数 (见 文献资料 用于函数签名),或 将节点设置为自动声明参数 如果它们是通过命令行覆盖传入的。

然后运行以下程序:

玫瑰2 运行 演示节点 参数黑板 --ros-args --参数文件 demo_params.yaml

其他节点可以检索参数值,例如

$ 玫瑰2 停止 清单 参数_黑板 a_string some_int some_lists.some_doubles some_lists.some_integers