您正在阅读的是旧版本但仍受支持的 ROS 2 文档。 Jazzy.

迁移接口

信息、服务和操作统称为 界面 在 ROS 2 中。

界面定义

信息文件必须以 .msg 必须位于子文件夹 信息.服务文件必须以 .srv 必须位于子文件夹 服务.操作文件必须以 .行动 必须位于子文件夹 行动.

这些文件可能需要更新,以符合 ROS 接口定义.删除了一些原始类型,并删除了 会期时间 在 ROS 1 中是内建类型,现在已被普通的消息定义所取代,必须从 内置接口 软件包。此外,一些命名约定也比 ROS 1 更为严格。 概念文章.

建筑界面

ROS 2 中构建接口的方式与 ROS 1 有很大不同。 CMakeLists.txt.如果您开发的是纯 Python 软件包,则应将接口放在另一个仅包含接口的软件包中(无论如何,这是最好的做法)。参见 自定义界面教程 了解更多信息。

将接口软件包迁移到 ROS 2

在您的 package.xml:

  • 添加 <buildtool_depend>rosidl_default_generators</buildtool_depend>;.

  • 添加 <exec_depend>rosidl_default_runtime</exec_depend>;.

  • 添加 <member_of_group>rosidl_interface_packages</member_of_group>;

  • 为每个从属报文包添加 <依赖>消息包</依赖>;.

在您的 CMakeLists.txt:

  • 启用 C++17

设置(cmake_cxx_standard 17)
  • 添加 find_package(rosidl_default_generators) 必填)

  • 为每个从属报文包添加 find_package(message_package 必填) 并将 CMake 函数调用替换为 生成消息生成接口.

这将取代 添加信息文件添加服务文件 可删除的所有信息和服务文件的列表。