功能点子

以下是无特定顺序的功能点子。此列表包含我们认为重要且可以为 ROS 2 做出良好贡献的功能。在开始新功能之前,请与我们 联系,我们可以提供指导,并将您与其他开发人员联系起来。

设计/概念

  • IDL 格式

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

    • 扩展用法至只包含常量和/或带有范围参数的 .idl 文件

    • 重新审视 IDL 接口命名的限制,请参阅 ros2/design#220

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

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

  • 节点的特定"API",以描述性格式表示的主题/服务等,请参见 ros2/design#266

基础设施和工具

  • 构建中

  • 文档

    • 废弃https://design.ros2.org。内容应该转移到一个REP,到https://github.com/ros2/ros2_documentation,或者被删除。

    • 修复每个软件包的文档生成器,能够记录构建产物,如消息、服务、动作等。

    • 使https://docs.ros.org/en/ros2_documentation在https://github.com/ros2/ros2_documentation更改时自动重新构建。

    • ``ament``文档

    • 添加使用Jupyter笔记本与ROS 2的文档示例。

    • 添加实现新的RMW的文档。

    • 提供三种不同类型的内容:

      • “演示”以展示功能并对其进行测试覆盖。

      • “examples” 用于展示一种简单/简约的用法,可能有多种方式来完成某个任务

      • “tutorials” 包含更多注释和链接,以供维基教学(推荐一种方式)

新功能

尾随的星号表示大致的工作量:1颗星表示小,2颗星表示中等,3颗星表示大。

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

    • 文件中指定的配置

    • 按记录器配置(例如启用 rqt_logger_level

  • 与时间相关

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

  • 附加图形API功能 [** / ***]

  • 执行器

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

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

    • 解耦等待对象

  • 消息生成

    • 为不支持开箱即用的语言进行补偿消息生成

    • 将消息中的字段名称进行混淆,以避免特定语言的关键字

    • 通过在同一Python解释器中运行它们来提高生成器的性能

  • 启动

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

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

  • Rosbag

    • 支持录制服务(和动作)

  • ros1_bridge

    • 支持桥接动作

  • RMW配置

    • 统一的中间件配置方式

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

    • 通过Service接口进行动态重映射和别名设置

  • 类型伪装 [***]

  • 详细介绍实时安全性 [***]

    • 针对服务、客户端和参数

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

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

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

    • 不希望所有机器人上的所有节点共享相同的域(并相互发现)

    • 设计如何“分割”系统

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

    • RTI Connext DDS Micro(已实现,但默认情况下未启用或官方支持)。

  • 安全性改进:

    • 在安全配置中提供更多的细化选项(仅允许身份验证、身份验证和加密等)[*]

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

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

    • 更用户友好的界面(更容易指定安全配置)。也许有一个Qt图形界面?该图形界面还可以在某种程度上协助分发密钥。 [***]

    • 一种通过某种界面来表示“请保护此运行系统”,该界面将自动生成当前正在运行的所有内容的密钥和策略。 [***]

    • 如果有硬件特定的功能用于保护密钥或加速加密/签署消息,则可以将其添加到尚未使用的DDS/RTPS实现中。 [***]

减少技术债务

  • 修复在 https://ci.ros2.org/view/nightly 上的不稳定测试。

  • 能够使用工具(例如valgrind、clang-tidy、clang静态分析(scan-build)、ASAN、TSAN、UBSAN等)运行(所有)单元测试。

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

  • 将rclcpp API重构为专注于单个方面的独立软件包,随后rclcpp应仍然提供组合的面向用户的API

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

  • 将`设计文档 <https://design.ros2.org>`__与实现进行同步/协调。

  • 处理/分类待处理的工单

  • 在代码/文档中处理待办事项

  • 移除tinyxml的依赖