警告

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

特色创意

以下是一些功能设想,没有特定顺序。该列表包含了我们认为重要的功能,可以为 ROS 2 做出很好的贡献。 请与我们联系 在开发新功能之前。我们可以为您提供指导,并将您与其他开发人员联系起来。

设计/概念

  • IDL 格式

    • 利用新功能,如将常量分组到枚举中

    • 将使用范围扩大到 .idl 或声明参数的范围

    • 重新审视 IDL 界面命名的约束条件,参见 ros2/design#220

  • 为 ROS 1 -> ROS 2 过渡创建迁移计划

  • 节点名称的唯一性,参见 ros2/design#187

  • 节点在主题/服务等方面的具体 "API "描述格式,请参见 ros2/design#266

  • 在运行时配置 QoS,请参阅 ros2/design#280

基础设施和工具

  • 建筑

    • 合并 build.ros2.org 和 ci.ros2.org

    • 提供 macOS

    • Windows 和 Mac OS 软件包

    • 支持以下配置文件 胶管

  • 文件

    • 改进文献平台

    • 支持 文件 工作岗位 ROS 2 建筑群

    • 考虑与 design.ros2.org 合并

    • 提供三种不同的内容:

      • 用 "演示 "来展示功能,并用测试来覆盖功能

      • "示例 "显示简单/简约的用法,可能有多种方法来做某事

      • 包含更多评论和维基锚点的 "教程"(推荐的一种教学方式)

新功能

尾部的星表示粗略的努力:1颗星代表小型,2颗星代表中型,3颗星代表大型。

  • 日志记录改进 [* / **]

    • 文件中指定的配置

    • 每个记录仪配置(例如启用 rqt_logger_level)

  • 与时间有关

    • 支持基于时钟的速率和睡眠

  • 参数

    • 强制类型

  • 附加图形应用程序接口功能 [** / ***]

    • 自省所有(尤其是远程)主题的 QoS 设置

    • a la ROS 1 Master API: https://wiki.ros.org/ROS/Master_API

    • 基于事件的通知

    • 需要了解需要扩展的 rmw 接口

  • 执行人

    • 性能改进(主要围绕等待集)

    • 确定性排序(公平调度)

    • 与回调组一起工作

    • 解耦可等待程序

  • 信息生成

    • 为开箱即不支持的语言生成补充信息

    • 在信息中拼凑字段名,以避免使用特定语言的关键字

    • 在同一个 Python 解释器中运行,提高生成器性能

  • 启动

    • 支持使用 xacro 进行替换,然后再传递包含参数的结果

    • 使用 pytest 进行启动测试

    • 支持启动多节点可执行文件(即手动合成)

    • 扩展启动 XML/YAML 支持:事件和事件处理程序、标记命名空间和别名

  • 罗斯巴格

    • 支持记录服务(和行动)

  • ros1_桥

    • 支持衔接行动

  • RMW 配置

    • 配置中间件的统一标准方法

  • 重新映射 [** / ***]

    • 通过服务接口动态重映射和别名

  • 类型伪装 [***]

  • 扩展实时安全 [***]

    • 服务、客户和参数

    • 公开更多与实时性能相关的服务质量参数

    • 实时安全的进程内消息传递

  • 多机器人支持功能和演示 [***]

    • 所有机器人的所有节点共享同一域(并相互发现),这并不理想

    • 设计如何 "分割 "系统

  • 实施 C 客户端库 rclc [**]

  • 支持更多的 DDS / RTPS 实现:

  • 改善安全状况:

    • 更精细的安全配置(只允许验证、验证和加密等) [*]

    • 集成 DDS 安全日志插件(汇总安全事件并通过 ROS 界面向用户报告的统一方式)[**]

    • 密钥存储安全(目前,密钥只是存储在文件系统中) [**]

    • 更友好的用户界面(更容易指定安全配置)。也许是 Qt 图形用户界面?这个图形用户界面还可以帮助分发密钥。[***]

    • 一种可以说 "请确保正在运行的系统安全 "的方法,它的用户界面可以为当前正在运行的所有系统自动生成密钥和策略。[***]

    • 如果有特定于硬件的功能可用于确保密钥安全或加速加密/签名信息,那么将其添加到尚未使用的 DDS/RTPS 实现中可能会很有趣。[***]

现有 ROS 1 功能的移植

减少技术债务

  • 扩展测试并解决当前代码库中的错误

    • 等待集不一致

    • 组件的多线程问题

  • 修复不稳定的测试

  • 使用 Valgrind 等工具运行(所有)单元测试的能力

  • API 审查,特别是 rclcpp 和 rclpy 中面向用户的 API

  • 将 rclcpp 应用程序接口重构为专注于单一方面的独立软件包,之后 rclcpp 仍应提供面向用户的综合应用程序接口

  • 重新审视消息分配器,考虑使用 std::polymorphic_allocator 解决问题

  • 现代化

    • 支持/使用导出 CMake 目标(而不是使用 CMake 变量,如 *_INCLUDE_DIRS, *_LIBRARIES)

    • 使用 C++17 文件系统功能,而不是自定义代码

    • 为 rclpy 使用 pybind11

    • 移至 Python 代码中的 f 字符串

    • 为 Python 软件包使用 setup.cfg 文件

  • 同步/协调设计文档与实施。

    • 发布前回顾审查(应用程序接口、文档等)

  • 处理待处理票据/将其分类

  • 解决代码/文档中的待办事项