第四章 自动驾驶操作系统
在电动化、智能化、网联化、共享化“新四化”的发展趋势下,智能网联汽车正快速成为继个人电脑、智能手机后的大型智能互联移动终端。智能网联汽车操作系统是产业发展的内核和基石,加快布局操作系统、突破关键共性技术,不仅对我国的智能网联技术和产业生态,而且对我国的产业安全、国家安全而言,都具有深远意义。
智能网联汽车操作系统是管理和控制汽车硬件与软件资源的程序系统,其功能是管理系统的硬件、软件和数据资源,控制运行程序、网络通信和安全机制及为用户提供界面交互等。智能网联汽车操作系统主要可分为两大类,即车载操作系统和车控操作系统。车载操作系统正在向智能座舱、实现网联功能演变;车控操作系统未来主要支撑实现对车辆的自动驾驶控制。自动驾驶操作系统是车控操作系统面向自动驾驶功能的延伸,是自动驾驶系统中软件体系的核心组成部分,提供自动驾驶计算平台硬件管理,并为各类自动驾驶算法提供运行平台,实现多传感器信息采集、车辆行驶环境感知、智能驾驶决策、底层车辆控制等诸多功能,是自动驾驶技术的“灵魂”所在。
第一节 自动驾驶操作系统关键技术
自动驾驶操作系统使用并包含了车控操作系统,其基于异构分布硬件/芯片组合,是车控操作系统的异构分布扩展。车控操作系统是指传统车控ECU中主控芯片MCU装载运行的嵌入式操作系统,如AUTOSAR(OSEK)操作系统,可参考Classic AUTOSAR软件架构,吸收了其模块化和分层思想。自动驾驶操作系统,既有车控操作系统的功能和特点,还能够提供高性能、高可靠的传感器、分布式通信、自动驾驶通用框架等模块,以支持自动驾驶感知、规划、决策、控制等功能的共性实现。自动驾驶操作系统将车控操作系统纳入整体系统软件和功能软件框架。车控操作系统运行在MCU上,一般以功能安全ASIL-D等级保障车载智能计算基础平台安全可靠,并根据自动驾驶需求进行一定程度上的扩展。
系统软件和功能软件是车载智能计算基础平台安全、实时、高效的核心和基础。自动驾驶操作系统包含系统软件和功能软件两部分。系统软件创建复杂嵌入式系统运行环境,可参考借鉴AUTOSAR软件架构分层思想,可以实现与Classic和Adaptive两个平台的兼容和交互。功能软件根据自动驾驶共性需求,进行通用模块定义和实现,可补充AUTOSAR架构在自动驾驶方面的不足和缺失。
一、系统软件
系统软件是针对汽车场景定制的复杂大规模嵌入式系统运行环境。系统软件一般包含异构分布系统的多内核设计及优化、Hypervisor、POSIX/ARA(AUTOSAR Runtime for Adaptive Applications)、分布式系统DDS(数据分发服务)等。
自动驾驶操作系统要求多内核设计,内核要求与Classic AUTOSAR和Adaptive AUTOSAR对内核的要求类似。车载智能计算基础平台支持异构芯片,需考虑功能安全、实时性能要求。当前异构分布硬件架构各单元所加载的内核系统安全等级有所不同,如AI单元内核系统QM~ASIL-B、计算单元内核系统QM~ASIL-D、控制单元内核系统ASIL-D,因而出现不同安全等级的多内核设计或单内核支持不同安全等级应用的设计。保证差异化功能安全要求的同时满足性能要求,是自动驾驶操作系统软件设计的关键。
目前应用在汽车或嵌入式系统中的RTOS(实时操作系统),如OSEK OS,VxWorks,RT-Linux等,可以作为计算单元内核的选择,但要考虑其汽车功能安全等级及市场成熟度。另外,车载智能计算基础平台的复杂性也要求内核系统对系统软件、功能软件及应用软件的库支持和可编程性。国内相关ICT企业如华为、中兴等也推出了自研实时内核系统,并开始商用或计划通过汽车功能安全评估。Linux内核紧凑高效、开源灵活、广泛支持芯片和硬件环境及应用层程序。目前技术路线也有对Linux系统进行定制优化、实现部分CPU和内存资源保护并高效实时的混合系统,达到功能安全等级要求。QNX是目前广泛应用的汽车嵌入式RTOS内核系统,其建立在微内核和完全地址空间保护基础之上,硬实时、稳定、可靠、安全,满足ASIL-D功能安全等级。
Hypervisor虚拟化技术有效实现资源整合和隔离。Hypervisor是一种硬件虚拟化技术,管理并虚拟化硬件资源(如CPU、内存和外围设备等),提供给运行在Hypervisor之上的多个内核系统。自动驾驶操作系统是基于异构分布硬件的,应用程序如AI计算和实时安全功能可能分别依赖不同的内核环境和驱动,但在物理层面共享CPU等。Hypervisor是实现跨平台应用、提高硬件利用率的重要途径。
系统软件可借鉴Adaptive AUTOSAR平台思想,采用POSIX API。POSIX(可移植操作系统应用程序接口)能够很好地适应自动驾驶所需要的高性能计算和高带宽通信等需求。Adaptive AUTOSAR采用基于POSIX标准的内核系统,可使用所有标准的POSIX API,旨在满足未来高级自动驾驶的需求。自动驾驶操作系统软件基于实时嵌入式软件单元架构,可借鉴Adaptive AUTOSAR平台思想,在不同内核系统采用POSIX API与应用软件、功能软件交互。
DDS满足多种分布式实时通信应用需求。DDS属于通用概念,是一种分布式实时通信中间件技术规范。自动驾驶操作系统需要建立跨多内核、多CPU、多板通用、高速高效的DDS机制。DDS可采用发布/订阅架构,强调以数据为中心,提供丰富的QoS(服务质量)策略,能保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。
目前自动驾驶算法大多在基于Linux内核的中间件环境ROS(机器人操作系统)中进行搭建和验证。ROS主要提供“节点”间数据传递服务。为了增强“节点”间数据的实时性、持续性和可靠性,近期发布的ROS2通信系统基于分布式系统数据分发服务设计。ROS依托于Linux系统,无法满足车规级和嵌入式系统要求,其效率、安全等方面的问题也限制其商业产品化。
管理平台和数据平台是自动驾驶操作系统实现的设计基石。管理平台和数据平台是复杂嵌入式系统的通用概念。管理平台包含日志、管理、配置、监控等非强实时功能,存在于每个硬件单元中。数据平台是实时控制平台,实现自动驾驶操作系统的主要功能和数据处理,运行自动驾驶通用数据、实时状态监控、数据收集、失效切换、网联、云控、信息安全等功能模块。
二、功能软件
功能软件主要包含自动驾驶的核心共性功能模块。核心共性功能模块包括自动驾驶通用框架、网联、云控等,结合系统软件,共同构成完整的自动驾驶操作系统,支撑自动驾驶技术的实现。
自动驾驶通用框架模块是功能软件的核心和驱动部分。L3及以上等级自动驾驶系统具备通用、共性的框架模块,如感知、规划、控制等及其子模块。一方面,自动驾驶会产生安全和产品化共性需求,通过设计和实现通用框架模块来满足这些共性需求,是保障自动驾驶系统实时、安全、可扩展和可定制的基础。另一方面,重点算法特别是人工智能算法仍在不断演进,如基于CNN(卷积神经网络)框架的深度学习感知算法、基于高精度地图等多源信息融合定位算法、基于通用AI和规则的决策规划算法和基于车辆动力学模型的控制算法等。自动驾驶通用框架模块定义核心、共性自动驾驶通用框架和数据流,包含共性模块的实现;提供对外接口API(应用程序编程接口)和服务,以接入非共性或演进算法、HMI(人机接口)等;通用框架模块也会调用自动驾驶操作系统内的云控、网联、信息安全等功能软件模块,或使用这些模块提供的服务。通用框架模块的设计和实现,可以充分利用市场不断成熟的、不同领域的算法子模块,促进产品高质高效的快速迭代。
网联模块是自动驾驶操作系统功能软件中实现网联通信、处理网联数据的功能子模块。除满足常规网联服务场景要求外,该子模块通过完善的通用框架模块设计实现网联协同感知、网联协同规划、网联协同控制等网联自动驾驶功能。网联数据通过V2X获得,包括路测数据、摄像头、智能信号灯、道路交通提示预警及其他车辆信息等,与单车传感器系统的多种探测手段相结合和融合处理,能够有效实现单车感知范围扩展到数百米,车辆间防碰撞,根据预警直接控制车辆启停等重要感知、规划和控制功能。单车智能化与V2X网联功能的有机结合增强自动驾驶系统整体的感知、决策和控制能力,降低自动驾驶成本,最终实现无人驾驶。该子模块是智能网联汽车的典型特征,也是自动驾驶操作系统的核心功能之一。
云控模块是与云控基础平台交互的功能子模块。云控基础平台为智能网联汽车及其用户、管理和服务机构等提供车辆运行、基础设施、交通环境等动态基础数据。云控基础平台具有高性能信息共享、高实时性云计算、多行业应用大数据分析等基础服务机制。云控模块通过自动驾驶通用框架模块的支持,提供云控基础平台所需的数据支撑,同时通过高速通信与中心云/边缘云进行云端感知、规划和控制等数据的实时同步,实现云—端分工协同,如基于广泛多车感知的云端感知、云端多车感知融合和云端最终裁决等。
功能软件需要支持深度学习嵌入式推理框架,便于成熟算法的移植和适配。自动驾驶是深度学习算法的重要应用场景,尤其在视觉、激光雷达及决策规划方面,算法企业、科研机构进行了长期且富有成效的研究和产品化工作。自动驾驶操作系统功能软件中需要支持深度学习嵌入式推理框架(如TensorRT),并兼容TensorFlow和Caffe等主流训练开发框架的深度学习模型,便于已有成熟算法和开发生态的移植和适配。
传感器模块规范和模块化各类自动驾驶传感器,为传感数据融合提供基础L3及以上等级自动驾驶技术方案多依赖激光雷达、摄像头、毫米波雷达等不同类型、不同安装位置的传感器,这些传感器的硬件接口、数据格式、时空比例标定方法不同。针对传感器的多样性、差异性和共性需求,自动驾驶操作系统功能软件用预置传感器模块来规范和模块化自动驾驶各类传感器,为异构传感器信息融合处理提供基础。
第二节 技术研究热点
一、微内核
内核是一个操作系统的核心,操作系统的内核一般分为微内核和宏内核两种结构。内核负责管理系统的进程、内存、设备驱动程序、文件和网络系统等,连接硬件和应用程序,决定着系统的性能和稳定性。内核为应用程序提供对计算机硬件安全访问的一部分软件。内核通常提供硬件抽象的方法来进行硬件操作,为应用软件和硬件提供简洁、统一的接口,从而屏蔽复杂性,使程序设计更为简单。
宏内核架构操作系统中的所有系统功能包括调度、内存管理、进程间通信、文件系统、设备驱动等都共享同一个地址空间,并且在特权模式下执行。微内核并非是一个完整的操作系统,而只是操作系统中最基本的核心部分,通常用于实现与硬件紧密相关的处理。完整的操作系统由特权模式的微内核(含基本服务)和非特权模式的系统服务、设备驱动这三个部分组成,共同为用户程序提供服务,操作系统和用户程序一起构成业务应用系统。
宏内核系统相关的服务基本都是放于内核态的内核中,例如文件系统、设备驱动、虚拟内存管理、网络协议栈等;而微内核则把更多的系统服务(例如文件系统、POSIX服务、网络协议栈及外设驱动)放到用户态应用,形成一个个服务,等待其他应用的请求。为了在宏内核与微内核之间扬长避短,也发展出了中间的混合内核形态,有部分服务也会放置于内核中。
微内核、宏内核、混合内核操作系统架构如图4-1所示。
图4-1 微内核、宏内核、混合内核操作系统架构
微内核操作系统建立在模块化、层次化的结构之上,且采用C/S模式和面向对象的设计。优点主要体现在:提高了系统的可扩展性,增强了系统的可靠性、可移植性,提供了对分布式系统的支持,融入了面向对象技术。由于服务都运行在用户态,服务与服务之间采用消息传递通信机制,当某个服务出现错误时,不会影响内核和其他服务。此外,微内核可以将任务划分成多种安全级别,从而采用相应的访问控制策略来实现任务间的隔离。
另外,微内核操作系统的运行效率较低。在微内核中,由于服务器之间、客户和服务器之间的通信都需要经过微内核,同样的服务请求至少需要进行4次上下文切换。
二、虚拟化
虚拟化是一种资源管理技术,通过对计算机资源的抽象和模拟,提供一个隔离执行环境,即虚拟机。虚拟化可以实现计算机资源的动态分配、灵活调度、有效共享,提高计算机的资源利用率。
智能化、网联化的需求持续推动汽车电子电气架构变革。随着汽车智能化、网联化发展,汽车电子底层硬件不再是由实现单一功能的单一芯片提供简单的逻辑计算,而是需要提供更为强大的算力支持;软件也不再是基于某一固定硬件开发,而是要具备可移植、可迭代和可拓展等特性。智能化与网联化共同推动了汽车电子电气架构的变革,一方面是车内网络拓扑的优化和高速网络的启用,另一方面是ECU(电子控制单元)的功能进一步集成到域控制器甚至车载计算平台。
另外,集中化的电子电气架构与汽车电子功能安全标准并不相符。根据功能安全ISO 26262标准,自动驾驶系统、仪表与HMI(人机接口)需要满足不同等级的功能安全要求,从安全角度应该进行物理上的隔绝。虚拟机管理的概念被引入汽车电子系统,允许在虚拟机之上运行不同安全等级的操作系统,从而保障不同功能域的功能和信息安全。
虚拟机技术一般可以分为全虚拟化、半虚拟化及硬件辅助的虚拟机。全虚拟化的典型代表是早期的VMWare,虚拟化管理程序在运行的时候捕获虚拟机操作系统的特权指令,并进行二进制翻译,使得虚拟机操作系统以为自己运行在物理机上。全虚拟化的优点在于无须修改虚拟机操作系统,缺点在于性能较差。半虚拟化的典型代表是早期的Xen,它在虚拟化管理程序中添加了一些接口函数,然后修改虚拟机操作系统,在特权指令等需要修改的地方修改虚拟机操作系统的代码以便支持虚拟化。半虚拟化的优点在于性能明显提升,缺点在于需要给虚拟机操作系统打补丁。硬件辅助的虚拟化指的是在处理器中直接加入虚拟化指令支持,处理器引入了新的虚拟化模式。
虚拟化的优势在于隔离性、独立性、兼容性。虚拟机独立运行在隔离的环境中,不会被其他虚拟机干扰和破坏,而且虚拟化屏蔽了底层硬件的差异,对上层操作系统及应用提供统一的硬件接口,易于实现软件的平台化。
参考文献
[1]中国软件评测中心.车载智能计算基础平台参考架构1.0(2019年)[R].2019.
[2]沈苏彬.物联网技术架构[J]. 中兴通信技术,2011(01):13-15.
[3]吴松,王坤,金海.操作系统虚拟化的研究现状与展望[J]. 计算机研究与发展,2019,56(1):58-68.
[4]李鹏,张凡.L4微内核操作系统及其应用技术研究[J]. 计算机技术与发展,2014,24(4):29-32.