功能创意
以下是无特定顺序的功能构想。 此列表包含我们认为很重要且可以为 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 作为依赖项