Skip to content

Autoware 概念#

Autoware 是世界上第一个用于自动驾驶系统的开源软件.Autoware 为两者提供价值:自动驾驶系统的技术开发人员可以基于 Autoware 创建新组件.另一方面,自动驾驶系统的服务运营商可以通过 Autoware 选择合适的技术组件.这是通过微自治架构实现的,该架构将其软件堆栈模块化为核心和宇宙子系统(模块).

微自治架构#

Autoware 使用 管道架构 来支持自动驾驶系统的开发.Autoware 中使用的管道架构由类似于 three-layer-architecture 的组件组成.而且它们并行运行.有 2 个主要模块:Core 和 Universe.这些模块中的组件设计为可扩展和可重用.我们称之为微自治架构.

core-and-universe.svg

Core 模块#

Core 模块包含基本的运行时和技术组件,满足自动驾驶系统所需的传感、计算和驱动的基本功能和能力.AWF 通过其工作组与架构师和领导成员一起开发和维护 Core 模块.任何人都可以为 Core 做出贡献,但 PR(Pull Request)的接受标准与 Universe 相比更加严格.

Universe 模块#

Universe 模块是 Core 模块的扩展,可由技术开发人员提供,以增强传感、计算和驱动的功能和能力.AWF 提供了要从中扩展的基本 Universe 模块.微自治架构的一个关键特性是 Universe 模块可以由任何组织和个人贡献.也就是说,您甚至可以创建自己的 Universe 并将其提供给 Autoware 社区和生态系统.AWF 负责 Universe 模块在其开发过程中的质量控制.因此,Universe 模块有多种类型,有些模块经过 AWF 的验证和确认,而另一些则没有.由 Autoware 的用户选择和集成哪些 Universe 模块来构建他们的最终应用程序.

接口设计#

接口设计是微自治架构中最重要的部分,分为内部和外部接口.组件接口是为 Universe 模块中的组件而设计的,以便与 Autoware 内部的其他模块(包括 Core 模块)中的组件进行通信.另一方面,AD(Autonomous Driving) API 是为 Autoware 的应用程序设计的,可以从外部访问 Autoware 的 Core 和 Universe 模块中的技术组件.设计可靠的接口,微自治架构与 AWF 的合作伙伴一起成为可能,同时对合作伙伴来说也是可行的.

挑战#

微自治架构的一大挑战是实现实时能力,这保证了系统中激活的所有技术组件都能预测性地满足时序约束(给定的截止日期).一般来说,如果不是不可能的话,很难严格估计组件的最坏情况执行时间 (WCET).

此外,如果不是不可能的话,也很难严格估计由 DAG 连接的组件的端到端延迟.因此,基于微自动驾驶架构的自动驾驶系统必须设计为故障安全,但不能永不失败.我们接受,只要考虑到超限,可能会违反 timing constraints (可能会错过给定的 deadlines).溢出处理程序分为两个部分:(i) 平台定义和 (ii) 用户定义.默认情况下,平台定义的处理程序作为平台的一部分实现,而用户定义的处理程序可以覆盖它或向系统添加新的处理程序.这就是我们所说的及时的 故障安全 .

要求和路线图#

目标:

  • 全部开源
  • 用例驱动
  • 具有超限处理的实时(可预测)框架
  • 代码质量