迁移参数

在 ROS 1 中,参数与中央服务器相关联,该服务器允许通过使用网络 API 在运行时检索参数。 在 ROS 2 中,参数与每个节点相关联,并可在运行时使用 ROS 服务进行配置。

迁移 YAML 参数文件

本指南介绍如何将 ROS 1 参数文件适配到 ROS 2。

YAML 文件示例

YAML 用于在 ROS 1 和 ROS 2 中编写参数文件。 ROS 2 中的主要区别在于必须使用节点名称来寻址参数。 除了完全限定的节点名称外,我们还使用键“ros__parameters”来表示节点参数的开始。

例如,这是 ROS 1 中的一个参数文件:

lidar_name: foo
lidar_id: 10
ports: [11312, 11311, 21311]
debug: true

假设前两个参数用于名为“/lidar_ns/lidar_node_name”的节点,下一个参数用于名为“/imu”的节点,最后一个参数我们想在两个节点上设置。

我们将按如下方式构建 ROS 2 参数文件:

/lidar_ns:
  lidar_node_name:
    ros__parameters:
      lidar_name: foo
      id: 10
imu:
  ros__parameters:
    ports: [2438, 2439, 2440]
/**:
  ros__parameters:
    debug: true

请注意使用通配符(“/**”)来表示应在任何命名空间中的任何节点上设置参数“debug”。

功能奇偶校验

ROS 1 参数文件的某些功能在 ROS 2 中不存在:

  • 尚不支持列表中的混合类型(相关问题)

  • 不支持“deg”和“rad”替换