功能创意

以下是无特定顺序的功能构想。 此列表包含我们认为很重要且可以为 ROS 2 做出良好贡献的功能。 在深入研究新功能之前,请与我们联系。 我们可以提供指导,并让您与其他开发人员建立联系。

设计/概念

  • IDL 格式

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

  • 将使用范围扩展到仅包含常量的 .idl 文件和/或声明具有范围的参数

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

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

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

  • 以描述性格式描述节点在主题/服务/等方面的特定“API”,请参阅 ros2/design#266

基础设施和工具

  • 构建

  • 整合 https://build.ros2.org 和https://ci.ros2.org

  • 提供 macOS

  • Windows 和 macOS 软件包

  • colcon 中支持配置文件

  • 文档

  • 弃用 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 文档

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

  • 添加用于实施新 RMW 的文档。

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

  • “演示”用于展示功能并通过测试覆盖它们

  • “示例”用于展示简单/简约的用法,可能有多种方式来做某事

  • “教程”包含更多 wiki 评论和锚点(教授一种推荐的方式)

新功能

后面的星星表示粗略的努力程度:1 星代表小,2 星代表中,3 星代表大。

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

  • 在文件中指定的配置

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

  • 与时间相关

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

  • 其他 Graph API 功能 [** / ***]

  • 针对所有(尤其是远程)主题的 Introspect QoS 设置

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

  • 基于事件的通知

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

  • 执行器

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

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

  • 解耦可等待对象

  • 消息生成

  • 为不支持的语言生成即时消息

  • 修改消息中的字段名称以避免使用特定于语言的关键字

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

  • 启动

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

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

  • Rosbag

  • 支持记录服务(和操作)

  • ros1_bridge

  • 支持桥接操作

  • RMW 配置

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

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

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

  • 类型伪装 [***]

  • ROS 1 的消息特征:https://wiki.ros.org/roscpp/Overview/MessagesSerializationAndAdaptingTypes

  • 需要了解 typesupport 系统

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

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

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

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

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

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

  • 设计如何“分区”系统

  • 支持更多 DDS / RTPS 实现:

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

  • 安全性改进:

  • 安全配置更细粒度(仅允许身份验证、身份验证和加密等)[*]

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

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

  • 更友好的用户界面(使指定安全配置更容易)。也许是 Qt GUI?这个 GUI 还可以以某种方式协助分发密钥。 [***]

  • 一种说“请保护此正在运行的系统”的方法,使用一些 UI 来自动生成当前正在运行的所有内容的密钥和策略。[***]

  • 如果有用于保护密钥或加速加密/签名消息的硬件特定功能,那么将其添加到尚未使用它的 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 来解决问题

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

  • 处理/分类待处理的票据

  • 处理代码/文档中的 TODO

  • 删除 tinyxml 作为依赖项