功能点子
以下是无特定顺序的功能点子。此列表包含我们认为重要且可以为 ROS 2 做出良好贡献的功能。在开始新功能之前,请与我们 联系,我们可以提供指导,并将您与其他开发人员联系起来。
设计/概念
IDL 格式
利用新功能,如将常量分组为枚举
扩展用法至只包含常量和/或带有范围参数的
.idl
文件重新审视 IDL 接口命名的限制,请参阅 ros2/design#220
为ROS 1 -> ROS 2过渡创建迁移计划
节点名称的唯一性,参见 ros2/design#187
节点的特定"API",以描述性格式表示的主题/服务等,请参见 ros2/design#266
基础设施和工具
构建中
提供 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``文档
添加使用Jupyter笔记本与ROS 2的文档示例。
添加实现新的RMW的文档。
提供三种不同类型的内容:
“演示”以展示功能并对其进行测试覆盖。
“examples” 用于展示一种简单/简约的用法,可能有多种方式来完成某个任务
“tutorials” 包含更多注释和链接,以供维基教学(推荐一种方式)
新功能
尾随的星号表示大致的工作量:1颗星表示小,2颗星表示中等,3颗星表示大。
日志记录改进 [* / **]
文件中指定的配置
按记录器配置(例如启用
rqt_logger_level
)
与时间相关
支持率和基于时钟的睡眠
附加图形API功能 [** / ***]
检查所有(尤其是远程)主题的QoS设置
类似于ROS 1主节点API: https://wiki.ros.org/ROS/Master_API
基于事件的通知
需要扩展的rmw接口知识
执行器
性能改进(主要围绕等待集)
确定性排序(公平调度)
解耦等待对象
消息生成
为不支持开箱即用的语言进行补偿消息生成
将消息中的字段名称进行混淆,以避免特定语言的关键字
通过在同一Python解释器中运行它们来提高生成器的性能
启动
支持启动多节点可执行文件(即手动组合)
扩展启动XML/YAML支持:事件和事件处理程序,标签命名空间和别名
Rosbag
支持录制服务(和动作)
ros1_bridge
支持桥接动作
RMW配置
统一的中间件配置方式
重新映射 [** / ***]
通过Service接口进行动态重映射和别名设置
类型伪装 [***]
类似于ROS 1中的消息特性:https://wiki.ros.org/roscpp/Overview/MessagesSerializationAndAdaptingTypes
需要了解类型支持系统
详细介绍实时安全性 [***]
针对服务、客户端和参数
公开与实时性能相关的更多服务质量参数
实时安全的进程内消息传递
多机器人支持功能和演示 [***]
不希望所有机器人上的所有节点共享相同的域(并相互发现)
设计如何“分割”系统
支持更多的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的依赖