本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》。
此专栏是关于《自动驾驶汽车平台技术基础》书籍的笔记.
1.自动驾驶汽车软件架构
1.1 软件平台概述
- 汽车上因使用了大量的电子控制单元(Electronic Control Unit,ECU),使得电子软件的开发难度越来越大;
- 为了实现容错操作的系统,汽车制造商必须从汽车的整体架构入手,确保将备援机制等安全措施部署在以下3个功能区:感测、运算、制动;
- 车载系统需提供更多的安全功能。多层式策略通常是解决这个安全难题的关键;首先,在应用层执行相关安全通信,加上应用访问控制,确保流动数据的可信度,这对于无线软件更新(OTA)或相关服务功能特别重要;其次,软件平台的安全模块需要包含分隔化、入侵预防和ECU验证;最后,在硬件层方面,CPU安全、针对整合硬件安全模块(HSM)的支持及ECU自身的防火墙,这些功能都有利于为汽车建立全方位的安全平台;
- 采用开放式平台/开放式系统策略有助于加快整体创新流程,促进业界开发可互通、模块化且可扩充的自动驾驶系统;
- 我国智能汽车的软件研发技术现状,在车控软件方面,”核高基”重大专项部署支持开发实时嵌入式操作系统及开发环境、汽车电子控制器嵌入式软件开发平台和国产汽车电子基础软件平台等产品;
- 国内软件平台厂商参照OSEK/VDX和AUTOSAR等国际标准,已经研发出面向ECU的操作系统产品及解决方案;
- 浙江大学ESE实验中心成功开发出符合AUTOSAR标准的集成ECU开发工具链,支持用于ECU软件架构、 络系统配置、基础软件配置、诊断、标定和仿真测试的快速迭代开发模式;
- 在车载软件方面,国内的阿里云研发出可用于车载终端的阿里云操作系统,且涌现出科大讯飞、高德等实力较强的车载应用软件供应商和普华、博思等车载终端系统供应商;
1.2 自动驾驶汽车软件架构
1.2.1 AUTOSAR软件架构
-
AUTOSAR概述
-
AUTOSAR是Automotive Open System Architecture(汽车开放系统架构)的缩写,是一家专注于制定汽车电子软件标准的联盟;
-
AUTOSAR是由全球汽车制造商、零部件供应商及其他电子、半导体和软件系统公司联合建立,各成员企业之间保持开发合作伙伴关系;自2003年起,各伙伴公司携手合作,致力于为汽车工业开发一个开放的、标准化的软件架构;
-
整车软件系统可通过AUTOSAR架构对车载 络、系统内存及总线的诊断功能进行深度管理,并改善了系统的可靠性和稳定性;
-
目前支持AUTOSAR标准的工具和软件供应商都已经推出相应的产品,提供需求管理、系统描述、软件构建算法模型验证、软件构建算法建模、软件构建代码生成、RTE(Real Time Environment)生成、ECU配置及基础软件和操作系统等服务,帮助软件系统提供商实现无缝的系统软件架构开发流程;
-
传统的ECU架构的两个缺点:抽象程度低、基础软件模块少;针对这两个问题,AUTOSAR规范提出了抽象程度更高的解决措施,划分出更多的基础模块;
-
为了实现应用软件和硬件模块的解耦,汽车电子软件架构被抽象出4层,如下图所示:
-
为了达到上述目标,针对在汽车电子行业中遇到的难题,AUTOSAR采用的解决方案及其优点如下表所示:
非AUTOSAR面临的挑战 AUTOSAR方案 AUTOSAR优势 对功能需求缺乏追溯手段, 没有兼容性的工具链 对功能需求缺乏追溯手段,\没有兼容性的工具链 对功能需求缺乏追溯手段,没有兼容性的工具链 需求交互格式标准化 ( A R X M L ) 需求交互格式标准化(ARXML) 需求交互格式标准化(ARXML) 从内容和格式上改进了规范, 为了无缝的工具链提供可能 从内容和格式上改进了规范,\为了无缝的工具链提供可能 从内容和格式上改进了规范,为了无缝的工具链提供可能 基础软件模块不能复用, 带来的时间和精力浪费 基础软件模块不能复用,\带来的时间和精力浪费 基础软件模块不能复用,带来的时间和精力浪费 基础软件 ( B S W ) 基础软件(BSW) 基础软件(BSW) 提高软件质量,供应商提供基础软件 提高软件质量,供应商提供基础软件 提高软件质量,供应商提供基础软件 升级主芯片带来大量的重新设计 升级主芯片带来大量的重新设计 升级主芯片带来大量的重新设计 微控制器抽象层 ( M C A L ) 微控制器抽象层(MCAL) 微控制器抽象层(MCAL) 主芯片可以随意替换, M C A L 有芯片厂家提供 主芯片可以随意替换,\MCAL有芯片厂家提供 主芯片可以随意替换,MCAL有芯片厂家提供 集成工作繁琐 集成工作繁琐 集成工作繁琐 运行时环境 ( R T E ) 运行时环境(RTE) 运行时环境(RTE) 集成自动化 集成自动化 集成自动化 软件耦合性大 软件耦合性大 软件耦合性大 接口标准化 接口标准化 接口标准化 不同供应商可交互组件 不同供应商可交互组件 不同供应商可交互组件 -
AUTOSAR架构是为了改善电子系统软件的更新与交换,同时更快捷有效地管理日趋复杂的汽车电子软件系统;
-
AUTOSAR规范的使用让不同结构的电子控制单元的接口特征标准化,应用软件具备良好的可扩展性和可移植性,很大程度减小了开发周期;
-
AUTOSAR提倡”在标准上合作,在实现上竞争”的原则,其核心思想是”统一标准、分散实施、集中配置”;
-
-
AUTOSAR模块构成
-
软件组件
- 软件组件由最小逻辑单元(Atomic Component)组成;最小逻辑单元有Application、Sensor/Actuator两种类型;
-
其中:Application是算法实现类型,能在各ECU上自由映射;Sensor/Actuator是为Application提供I/O端口类型,用于与ECU绑定,但不像Application能在各ECU上自由映射;
-
数个SWC的逻辑集合组合成Composition,如下图所示:
-
可运行实体(Runnable Entities)
可运行实体(Runnable Entities),亦称Runnables;可运行实体包含实际实现的函数,可以是具体的逻辑算法或是实际操作;可运行实体由RTE周期性或是事件触发调用,如接收到数据,如下图所示:
RTE是这些交互使用的接口的集散地,汇总了所有需要和软件体外部交互的接口;从某种意义上看,设计符合AUTOSAR规范的系统就是在设计RTE;
SWC间的通信是通过调用RTE API函数而非直接实现的,均有RTE管理和控制;每个API遵循统一的命名规则且仅与软件组件自身的描述有关;具体通信实现取决于系统设计和配置,由工具供应商提供的RTE Generator自动生成;
在设计开发阶段,软件组件通信层面引入了一个新的概念,虚拟功能总线(Virtual Functional Bus,VFB),如下图所示:
Basic Software(基础软件)
-
现代汽车中有多种ECU,各自具有不同功能,但实现这些功能所需要的基础服务是可以抽象出来的,如:I/O操作、AD操作、诊断、CAN通信、操作系统等;
-
不同的ECU功能所操作的I/O、AD代表不同的含义,所接收和发送的CAN消息具有不同的内容,操作系统调度的任务周期优先级不同;
-
这些可以被抽象出来的基础服务被称为基础软件;根据不同的功能对基础软件可继续细分为:服务层(Service Layer)、ECU抽象层(ECU Abstract Layer)、复杂驱动(Complex Drivers)和MCAL层(Microcontroller Abstraction Layer),这4部分相互依赖程度不尽相同,如下图所示:
System Services(系统服务)
-
系统服务是一组可以由所有层模块调用的模块和功能,如:实时操作系统、错误管理器和库功能,为应用和基本软件模块提供基本服务;具体包括:AUTOSAR OS、BSW调度器、模式管理器3个部分,如下图所示:
-
各模块介绍
-
校准模块
使用前必须对传感器校准和标定,包括激光雷达与摄像头、毫米波雷达与摄像头等;校准是对齐激光雷达、摄像头及毫米波雷达获得的信息;激光雷达可以获取详细的三维环境信息,但不能获得颜色信息;摄像头可以获取颜色信息,但无法获得深度等三维信息;毫米波雷达不能获取颜色信息,但可以获得三维信息;将三者采集的信息对齐后,就可以同时了解实际环境中的三维信息和颜色信息;
-
车辆CAN总线控制模块
接收控制指令,同时给控制模块Control发送车身状态信息;CanBus有两个数据接口,第一个数据接口是基于计时器的发布者,回调函数是OnTimer;如果启用,此数据接口会定期发布底盘信息;第二个数据接口是一个基于事件的发布者,回调函数是OnControlCommand,当CanBus模块接收到控制命令时,会触发该函数;
-
控制模块
基于决策规划的输出路径及车身状态,使用不同的控制算法来输出控制命令,如:转向、制动、加速等;有3个主要的数据接口:OnPad、OnMonitor、OnTimer;OnPad和OnMonitor是仿真和HMI的交互接口,主要数据接口OnTimer会定期产生实际的控制命令;
-
决策模块
在接收全局路径后,根据从感知模块得到的环境信息,及本车当前的行驶路径等状态信息,做出具体的行为决策;
-
可视化模块
查看规划的轨迹及实时的转向、制动和节气门信息;
-
驱动模块
GNSS设备驱动,包括:NovAtel、Applanix、u-blox、激光雷达、Velodyne驱动,用来读取传感器内容并输出对应的消息;
-
人机交互模块
可视化自动驾驶模块的输出,如:规划轨迹、汽车定位、底盘状态等,为用户提供人机交互界面,以查看硬件状态,打开或关闭模块,及启动自动驾驶汽车;
-
端到端强化学习
通过深度神经 络连接输入输出两端,即神经 络直接发送车辆控制指令,从而对车辆进行横向和纵向控制,此过程没有人的参与;横向控制指:通过方向盘控制车身横向移动,即方向盘角度;纵向控制指:通过节气门和制动控制车身纵向的移动,即加速、制动等;横向模型的输出不是方向盘角度,而是道路行驶的曲率;
-
定位模块
聚合各种数据以定位自动驾驶车辆,有两种类型的定位模式:OnTimer和多传感器融合;第一种基于RTK的定位方法,通过计时器的回调函数”OnTimer”实现;第二种是多传感器融合(MSF)方法,其中注册了一些事件触发的回调函数;
-
高精地图模块
输出结构化地图信息,如:车道线、十字路口等;其显著特征是表征路面特征的准确性;
-
监控模块
包括硬件在内的,车辆中所有模块的监控系统;监控模块从其他模块接收数据并传递给HMI,以便驾驶员查看并确保所有模块都正常工作;如果模块或硬件发生故障,监控会向Guardian发送警 ,然后决定需要采取哪些操作来防止系统崩溃;
-
感知模块
感知依赖LiDAR点云数据和摄像头原始数据;除了传感器数据输入外,交通灯检测需要依赖定位及高精地图,需要依赖定位确定何时何地开始通过摄像头捕获的图像检测交通灯。
在感知模块中,Apollo平台有以下几个特点:
- CIPV检测/尾随,可实现远程精确度;摄像头安装有高低两种不同的安装方式;
- 异步传感器融合,因为不同传感器的帧速率差异,毫米波雷达为10ms,摄像头为33ms,LiDAR为100ms,所以异步融合LiDAR、毫米波雷达、摄像头数据,并获取所有信息得到数据点的功能非常重要;
- 在线姿态估计,自动驾驶汽车在出现颠簸或斜坡时需确定与估算角度变化,以确保传感器随汽车移动且角度或姿态相应地变化;
- 超声波传感器,作为安全保障传感器,与Guardian一起用于自动紧急制动和停车;
-
预测模块
负责预测所有感知到的障碍物的未来运动轨迹,输出预测消息封装了感知信息;预测定位和感知障碍物消息时,当接收到定位更新后,预测模块更新其内容状态;当感知模块发布感知到障碍物信息时,触发预测模块实际执行;
-
通用监控与可视化工具
包括一些可视化工具,bag包录制及回放脚本;
-
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!