智能车载平台的操作系统与中间件应用原理

文章来源:焉知智能汽车 发布时间:2021-09-09
分享到
随着智能汽车快速发展,智能汽车产业开始实现重大变革,主要体现为智能驾驶、智能座舱、智能网联汽车功能的不断升级,基于域端的操作系统也将逐渐形成,智能驾驶领域对于汽车行驶安全具备很高的要求。
随着智能汽车快速发展,智能汽车产业开始实现重大变革,主要体现为智能驾驶、智能座舱、智能网联汽车功能的不断升级,基于域端的操作系统也将逐渐形成,智能驾驶领域对于汽车行驶安全具备很高的要求。在软件定义汽车已成为共识的趋下,不论是传感器数量、芯片算力还是单车价值均实现了快速提升。整个过程要求下一代智能驾驶汽车能够具备车载智能计算平台,从而确保智能汽车的运算过程及能力能够满足现实要求。通常情况下,车载智能计算平台自下而上可大致划分为如下几个方面:
①硬件平台:AI单元-GPU、FPGA、ASIC芯片、CPU等;
②系统软件:硬件抽象层、OS内核、中间件等;
③功能软件:算法接口API、自动驾驶通用框架模块、库组件、中间件;
④应用算法软件:自动驾驶数据及地图、感知/规划/决策算法。
 
图片

智能汽车车载计算平台将具备更高算力能力、更大的通信带宽、以及更优秀的软件升级能力,同时,最重要的EE架构也将换代升级(包括硬件、软件、通信架构三大方向升级),伴随着EE架构从分布式向集中式演进过程中,自动驾驶也从L2向L2+、L3乃至L4逐渐升级。其中无论从芯片、操作系统、中间件、应用层算法、驾驶数据都是实现智能汽车的关键,以上这一系列组件的把控将会成为实现智能汽车的重要环节。这将是下一代自动驾驶汽车的发展需求。
 
图片

  作为软件定义汽车的灵魂,本文将重点论述如上几种要素中的不被大家熟知的关键要素: 操作系统及中间件。

智能车载平台操作系统

在分布式EE架构下,通常用于实现低等级的驾驶辅助系统,我们比较常用的方式是将计算单元放置于某一个传感器总成中(比如雷达控制器总成和摄像头控制器总成),这里的总成相当于分布式中央处理单元。通常前端原始传感器处理只涉及简单的、分辨率较低的点云或数字图像,这里的单元基本只需要调度某一单一任务。因此通常的计算功能只涉及一些简单的逻辑运算,风险系数也不高。

图片

在智能驾驶逐渐过度到集中式域控制方案时,其传感器种类和数量大幅增加、需要处理的数据量也是呈现指数级增长。包含涉及的任务量也更多,很多任务还是成多线程同时调度,这就需要将诸如原始感知能力集中到前端AI芯片上。而在集中式域控制器方案中,必须需要有一个强大的实时操作系统才能更好的分配、调度运算和存储资源。

图片

通常,我们所提到的操作系统通常是指的是其中的内核管理单元,内核实际是负责系统的最基本功能,决定着系统的性能和稳定性。承担着进程调度、内存管理、设备驱动程序、文件管理和网络管理等功能。目前,主流的自动驾驶系统的内核开发供应商包括黑莓公司的QNX、开源基金会的Linux以及风河公司的VxWorks几种。

在自动驾驶领域中,人们更加关注其各个传感器、软硬件组件、应用系统、控制算法等的稳定性,安全性、实时性等特征。操作系统作为底层驱动,所承担的职责处于如上各个子功能的底层。这就使得自动驾驶领域更加关注操作系统的功能安全。对于如上三大主流操作系统内核,只有QNX早在2011年就通过了ISO26262 ASIL-D安全认证,这是第一个通过这项认证的实时操作系统。这也是很多域控制器选型中重点关注的要素,甚至作为是否适配高级自动驾驶系统开发设计的门槛。而安全性也就意味着不可能免费提供,且部分QNX是一种不可更改内核的固化OS内核,也就意味着底层内核不是开源的。

这一点上,Linux和VxWorks相对于QNX而言,就开放很多,几乎是全开源的,tier1或主机厂可以根据实际需求进行中间件和应用软件的扩展编写,甚至可以根据自己的实力动其底层的OS内核驱动软件,这就大大的扩展了Linux在不同CPU架构上运行的效能,减少对于底层OS内核软件服务商的依赖,降本的同时也是真正自研软件的开始。当然,像类似Linux这样开源的操作系统,其内核的的组件要比QNX复杂得多,从而导致其稳定性也要差很多,且对于主机厂或tier1的开发能力提出了极高的要求,这一技术壁垒经常导致开发进程中的很小bug也会导致整个系统崩溃。

而VxWork这一操作系统,则是从技术上解决了QNX与Linux两者的弊端,他既解决了QNX不开源的弊端,同时,也在2019年2月,通过了ISO 26262 ASIL-D认证,成为了实现功能安全认证的第二款操作系统。然而这一款操作系统仍旧是收费的,且由于其综合实力较好,其开发工具链费用还相对较高,在讲求性价比的主机厂或tier1中应用并不广泛。

这里我们就需要以自动驾驶系统对芯片及底层驱动的需求,将这几类操作系统的优劣进行对比了,以便为后续的方案选型做准备。这里我们统计了这三种主流操作系统的不同特性得出如下的比较结论:

图片

几种操作系统在自动驾驶不同的芯片级厂家中应用范围是不同的,而由于几种不同的基础特征,可能导致主机厂或tier1在芯片选型中也会更加关注其操作系统的是否能够满足其性能需求。因为相当一部分主机厂或tier1有能力自研除操作内核以外的其他基础软硬件,比如中间件、自动驾驶通用框架、算法API等。

当前,由于主机厂或tier1自身研发能力受限,往往在评估可靠地车载计算平台时,会结合自身需求及能力选择适合的操作系统内核,选择的标准主要包括开放性、可扩展性、易用性、安全性、可靠性及成本等因素。然而,随着主机厂或tier1在软件技术能力上的不断提升,像Linux这种开源的软件将更加受欢迎,因为他不限制其开发的自主性,且面向未来的架构设计可以实现更高的可兼容性。诸如特斯拉、谷歌这类主机厂具备较高自主研发能力,通常能够很好地驾驭像Linux这类开源的操作系统。而像百度Robotaxi为了追求安全性与实现性能的综合性价比,就将感知算法计算能力放在Linux上,非感知算法计算能力放在QNX上。

自动驾驶中间件

实际上,真实地操作系统还包括了除操作内核之外的其他应用单元,比如板件支持、中间件、库组件及与上层接口之间的其他程序驱动单元。对于自动驾驶系统整体运算过程而言,由于其庞大计算量和超高的运算难度,需要在早期将计算任务化整为零,将整个软件工程分解成若干小任务,分散解决。在系统集成阶段时,又需要化零为整,根据需求将各个运算完成的任务整合成一个整体。

本质上,中间件可以认为是一种广义操作系统,不同于QNX、Linux、Vxworks这些底层OS内核,它是介于上层应用和底层系统之间的一套软件框架,是对软硬件资源进行管理、分配和调度的平台,充当着软件和硬件解耦的关键角色。同时,能为上层的应用软件提供开发和运行所需的环境,方便开发者快速、高效、灵活地开发和集成自动驾驶软件。因此,中间件是实现下一代面向服务SOA的重要单元。在一定程度上决定了未来自动驾驶系统能否实现最佳效能。


图片

当前,很多公司所涉及的操作系统自研能力实际都是指的对操作系统内核做补充开发中间件或裁减应用软件。而主机厂与Tier1在开发能力上的差异性往往体现在其所开发底层操作系统研发的整体框架上,而框架又取决于OS的中间件组合。比如基于QNX内核做开发时,由于底层OS内核不可被更改,主机厂或tier1只能通过叠加自己定制的上层算法来完成中间件的设计。而基于Linux内核开发时,则是先参照自身需求对底层OS内核做软件裁减配置,再上层适配不同的中间层算法,显然Linux难度要大得多。

借助于中间件平台,插拔式设计可以将主机厂的不同硬件配置进行统一定制化开发,整个自动驾驶系统方案,在开发时可以根据需求进行不同拓展,而这里的不同拓展,既可以体现为适配不同的传感器、芯片、车辆平台等硬件,也体现为选配不同的软件算法模块,实现不同级别的自动驾驶功能。同时,中间件的应用也能确保开发后可以快速高效地进行软件迭代。

 


对于中间件的开发而言,需要在底层系统层面,打通OSI(开放式系统互联)接口,对不同系统的接口进行封装。具体将以自下而上的自动驾驶系统算法处理模式来说明整个中间件的开发过程。

1、感知数据前端处理
自动驾驶的感知数据前端处理包括对世界模型的相关数据结构进行定义和描述,中间件将传感器数据解析成世界模型中的数据表示,分离传感器数据接入方式和数据解析。

2、数据采集
这里需要在基础平台库中,开发和配置自动驾驶系统应用的基础组件,包括日志、配置、通讯、资源隔离、线程池、内存池、无损队列,以上功能的开发可以实现传感器数据抽取、同步等操作。

3、系统功能模块
中间件需要提供了关于数据整合的执行管理、状态管理、时间同步、通讯、诊断、监控以及一些其他的模块。从而确保平台系统、应用功能、系统资源按照正确的配置运行,并且状态得到高效管理,模块间可以实现及时有效的通讯,出现问题时可以实现随时诊断。

总结

某种程度上来说,操作系统内核及其中间件的开发将成为自动驾驶应用背景下的一项“新基建”。尤其是随着自动驾驶产业化进程的深入,量产纷纷提上各家日程,越来越多人意识到操作系统和中间件的重要性和必要性。操作系统对实时性、功能安全、信息安全的要求都在提高。

总的来说,对使用什么样的操作系统内核和中间件,车企和芯片公司的话语权是高于操作系统厂商的。 因为主机厂是更加贴近用户知道需要在底层操作系统基础上如何做延伸开发以适配更多的软件功能。


收藏
赞一下
0