Autoware Core/Universe 与 Autoware.AI 和 Autoware.Auto 有何不同?#
Autoware 是世界上第一款用于自动驾驶汽车的 一体化 开源软件.
自 2015 年首次发布以来,已经发布了多个版本,具有不同的基本概念,每个版本都旨在改进软件.
Autoware.AI#
Autoware.AI 是基于 ROS 1 发布的 Autoware 的第一个发行版.该存储库包含各种软件包,涵盖自动驾驶技术的不同方面 - 传感、驱动、定位、地图、感知和规划.
虽然它成功地吸引了许多开发人员和贡献,但由于多种原因,改进 Autoware.AI 的功能很困难:
- 缺乏具体的架构设计导致大量积累的技术债务,例如模块之间的紧密耦合和模块责任不明确.
- 每个软件包的编码标准不同,测试覆盖率非常低.
此外,没有明确定义支持 Autoware 的自动驾驶汽车可以运行的条件,也没有明确的定义支持的用例或情况(例如:超车静止车辆的能力).
从 Autoware.AI 开发中吸取的经验教训,Autoware.Auto 采用了不同的开发流程来开发 Autoware 的 ROS 2 版本.
警告
Autoware.AI 目前处于维护模式,将于 2022 年底结束生命周期.
Autoware.Auto#
自动软件.Auto 是基于 ROS 2 发布的第二个 Autoware 发行版.作为向 ROS 2 过渡的一部分,决定避免简单地将 Autoware.AI 从 ROS 1 移植到 ROS 2.相反,代码库是用适当的工程实践从头开始重写的,包括定义目标用例和 ODD(例如:自动代客泊车 [AVP]、货物交付等)、设计适当的架构、编写设计文档和测试代码.
Autoware.Auto 开发最初似乎运行良好,但在完成 AVP 和 Cargo Delivery ODD 项目后,我们开始看到以下问题:
- 新工程师的门槛太高.
- 将新功能合并到 Autoware.Auto 中需要做大量工作,因此研究人员和学生很难为开发做出贡献.
- 因此,大多数 Autoware.Auto 开发人员都来自 Autoware Foundation 的公司,因此很少有人能够从研究论文中添加最先进的功能.
- 进行大规模的架构更改太困难了.
- 为了尝试实验性架构,在保持主分支稳定,同时确保每个更改都满足持续集成需求,这涉及到非常大的开销.
Autoware Core/Universe#
为了解决 Autoware.Auto 开发中的问题,Autoware Foundation 决定创建一个名为 Autoware Core/Universe 的新体系结构.
Autoware Core 继承了 Autoware.Auto 的原始策略,成为一个稳定且经过充分测试的代码库.除了 Autoware Core 之外,还有一个名为 Autoware Universe 的新概念,它是 Autoware Core 的扩展,具有以下优势:
- 用户可以轻松地将 Core 组件替换为 Universe 等效组件,以便使用更高级的功能,例如新的 Localization 或 Perception 算法.
- Universe 的代码质量要求更加宽松,以便新的开发人员、学生和研究人员更容易做出贡献,但仍将比 Autoware.AI 的要求更严格.
- 任何添加到 Universe 中、对更广泛的 Autoware 社区有用的高级功能都将被审查并考虑是否可能包含在主 Autoware Core 代码库中.
通过这种方式,可以实现拥有稳定和安全的自动驾驶系统的主要要求,同时允许访问由第三方贡献者创建的最新功能.有关 Autoware Core/Universe 设计的更多详细信息,请参阅 Autoware 概念文档页面.