// 智能驾驶域控制器研究现状 //
图1 汽车电子电气架构演进
Kim H等利用CPU+GPU架构的Nvidia ARM 平台,实现了一种DNN调度框架DART。Soh J等为了简化开发和提高嵌入式应用程序之间的可移植性,使用硬件Zynq-7000 XC7Z045平台,提出一种无迹卡尔曼滤波器软硬件协同设计方法。Lai Y K等利用NVIDIA Jetson TX2硬件平台实现了目标检测功能,该硬件平台可符合目标检测算法选择目标检测配置以及给定帧率和检测精度等要求。Lin Z等研究用于执行交通标志分类和检测的现场可编程门阵列(FPGA)部署,并验证了FPGA会比GPU获得更高的功率效率。
图2 部分智能驾驶域控制器行业概况
英伟达在芯片上始终处于领跑地位,从2015年进入车载计算平台以来为智能驾驶提供基础算力,目前已经推出了4款产品,分别是Drive PX,Drive PX2,Drive AGX Xavier/Pegasus以及 Drive AGX/Orin。同时在2019年推出新一代SoC芯片Orin,相对于Xavier采用全新Amphere架构,算力进入智能驾驶域控制器前200名。恩智浦在2016年推出Blue-BOX装有NXP S32V汽车视觉处理和LS2088A内嵌式计算机处理器,对传感器进行模块化管理。英特尔在2017年发布Inter GO搭载两个Mobilieye EQ5摄像头芯片一个用于视觉感知,一个用于信息融合,Inter GO采用FPGA做加速硬件,同时支持5G通信。
图3(a) 部分国际智能驾驶域控制器
图3(b)部分国内智能驾驶域控制器
控制器开发流程主要是针对整个控制器开发全过程进行科学分解。其中包含了产品需求分析、功能方案设计、可靠性分析,同时包含了对产品硬件电路设计,产品系统的调试以及最后产品的封存归档等多个环节。其中不同环节顺序进行需要对上一环节进行不断完善和不断校验。本文主要设计一款智能驾驶域控制器,其主要功能不仅仅可以读取车辆动态信息、环境感知传感器信息,而且还可以针对已知信息进行数据解算,从而可以对已完成避障控制算法进行验证的功能。本文主要从ADCU整体开发流程的角度,针对产品的硬件电路设计、部分关键软件通信模块的开发、以及电路可靠性分析进行详细阐述。
图4 系统开发与过程设计流程图
(1)产品需求分析
针对一款产品的需求分析是ADCU在开发过程中必不可少的关键一环,其中涵盖了产品功能需求、产品应用范围、产品定位分析、产品成本、系统技术指标等,是针对一款性能良好的域控制器设计重要的参考指标。其中硬件需求涵盖了ADCU工作环境、安装空间、基本功能需求及性能指标、输入输出电气特性等。
(2)ADCU系统设计及开发
ADCU硬件设计及软件开发如图4所示,主要包含了对ADCU设计的关键工作内容,根据本文中智能驾驶避障控制算法需求,对ADCU整体功能方案进行关键电路详细模块设计、可靠性分析、PCB电路板设计及加工、ADCU关键通信模块开发及调试,最终对本文设计的ADCU进行归档导出等环节。
图5 ADCU应用场景图
ADCU微控制单元简介
微控控制单元主要是由微控制器和微控制器外围电路组成,其中微处理器作为算法程序的主要载体,实现控制指令、信息处理与采集以及信息交互等一系列关键功能,微控制器的选型工作直接决定一款产品能否实现系统指定的功能。因此在选型过程中需要从以下几方面综合考虑:①微控制器所提供资源是否可以达到产品的使用需求,其中包含了微处理器的Flash、SRAM、存储模块、ADC、CAN通讯等资源;②微控制器内核数量多少以及主频频率大小;③微处理器安全等级以及诊断保护;④微控制器开发工具以及市场使用率等。
表1 MPC5744P主要资源概述
ADCU关键电路模块设计
——电源电路设计
对于一般车辆来说,通常可提供12V的直流电源,而本文设计的ADCU中微处理器以及其他外设电路通常需要5V电源供电,因此电源电路设计对于ADCU尤为重要。本文选择电源调节器芯片为德州仪器(Texas Instruments)公司的TPS54362-Q1,其工作电压范围为3.6V至48V,负载电流最大高达3A,具有一定的欠压、过流、过温等保护能力。
ADCU在低压电源设计时,需要尽可能的对干扰源进行消除,并且使得低压电源一定抗干扰能力。一般提升低压电源抗干扰能力主要可以通过吸收尖峰滤除和消除脉冲干扰,一般采用元器件有TVS(Transient Voltage Suppressor)管、压敏电阻等;利用二极管拦截负向脉冲。本文中的低压电源电路利用S4二极管来防止电源正负极反接;AL1电感来进行滤波、筛选信号等抑制电磁波干扰作用;还有一系列电容来进行静电过滤,如图6所示。
图6电源模块电路原理图
——时钟和JTAG电路设计
本文设计的ADCU时钟电路主要作用是控制芯片的工作频率,保证设计的控制算法程序时钟频率有条不紊的进行工作。如下图7(a)所示,本文的时钟电路是芯片内部振荡器与外部晶振共同作用从而产生时钟信号,其中芯片内部的锁相环来保证系统时钟稳定性,图中8pF的电容对40M的晶振具有良好效果。微控制器MPC5744P集成JTAG控制器,可通过外部仿真器连接JTAG控制器引脚从而实现程序的调试和下载,图7(b)为JTAG接口电路原理图。
图7(a)时钟模块电路原理图
图7(b)JTAG引脚电路引脚图
现如今,车辆电子装置已经成为汽车上不可或缺的一部分,而CAN总线已然发展成汽车电子装置总线通信最为重要的一种之一。
图8 CAN通讯模块电路设计
关键通信模块设计
——嵌入式软件架构
本文为了简化ADCU的开发过程和缩短软件开发周期,基于汽车开放电子系统软件架构 (Automotive Open System Architecture,AUTOTSAR)作为本文的嵌入式软件开发架构。AUTOSAR软件架构可从底层部分到上层部分共分为3层:基础软件层、实时运行环境层和应用上层。
其中基础软件层BSW(Basic Software)主要用于服务上层软件,包含了一些已经标准化的功能软件接口,它主要由微控制器抽象层、复杂驱动、服务层以及ECU抽象层构成;运行实时环境RTE(Runtime Environment)主要针对虚拟功能总线接口的实现,它服务于应用层组件之间的通信并且是基础软件层和应用层之间的桥梁;应用层(Application Software)是汽车最为核心的功能软件,它由多个软件组件集成而来,组件会将功能接口显示出来。设计避障控制算法属于应用层部分。标准接口利用C语言定义,标准接口可在操作系统、运行环境、基础软件层之间进行函数调用;标准AUTOSAR接口完全由AUTOSAR标准进行定义,如图9所示。
图9 标准AUTOSAR架构图
在域控制器硬件设计完成之后,为了更高效快捷的实现域控制器功能。本文基于AUTOSAR架构开发了CAN通信模块,可使得域控制器实现CAN通信功能。其中包含了底层驱动程序和应用层解析CAN报文程序。在设计底层驱动程序之前需要对CAN模块进行配置即CAN节点初始化。
(1)CAN通信初始化函数
在CAN通信程序中设置H_CAN0Init函数进行初始化设置,其中具体CAN初始化流程如图10所示,主要步骤为:
1)设置计数器(0,1,2),用于判断CAN初始化过程中的状态(初始化成功、初始化超时和回调函数初始化超时);
2)通过调用底层文件status.h中的status_t作为状态码;
3)判断CAN模块是否处于未初始化状态;
4)回调函数初始化设置;
在CAN通信初始化结束后,需要对CAN通信参数进行设置其中包含数据长度、ID、波特率等等。其中波特率计算公式如下:
为CAN模块的时钟频率。
图10 CAN初始化流程图
(1)CAN通信接收与发送函数
在完成初始化之后,需要进行CAN数据的接收过程和发送过程。对于CAN通信的接收过程,本文设计步骤如下图11。
图11 CAN数据接收过程
上图中需要配置的缓冲区是调用底层库文件can_pal.h来进行实现的过程,其中can_buff_config_t为底层库文件自带的结构体,该结构体包含了数据周期(enableFD)、位率框架(enableBRS)、指定帧格式(idType)、指定帧(isRemote)和填充值(fdPadding),本文所设计的CAN通信模块底层库文件只进行调用不进行详细说明。CAN_ConfigRxBuff其配置包含了通道、和已经配置好的缓冲区。而对于CAN_Receive在选择好通道之后需要接收数据,其中数据报文CAN0RecMsg_Buff同样设置为一个结构体,包含有报文的ID、CAN报文数据字节数和数据长度。
在CAN接收报文数据之后,需要对报文数据进行解析,解析报文即读取报文对其进行识别,识别过程相对简单本文不做过多赘述。在进行数据报文解析之后,接下来需要设计发送报文函数,如图12所示需要设定状态激活,并且判断其状态是否处于忙线状态,然后激活CAN发送配置,在读取到报文数据信息之后,进行报文发送。
图12CAN发送流程图
基于以上硬件设计、可靠性分析和软件设计本文所设计的域控制器,如图13所示。
图13 域控制器实物图
//
智能驾驶域控制器及避障控制算法验证 //引言
为了进一步验证本文所开发的ADCU是否可以实现CAN通信功能以及验证避障控制算法能否在本文所开发的ADCU上应用,本文以现代化汽车常见的V模式开发作为本文的ADCU开发流程。搭建ADCU开发实验平台和摄像头硬件在环测试平台,对本文最为核心目标场景识别算法和避障控制算法进行实验验证。
ADCU的V模式开发流程
基于汽车V模式开发流程越来越受到广大汽车开发商的青睐。它对于汽车上大部分项目开发都是相当适用的,诸如整车控制项目、智能驾驶项目、BMS项目、插电式混合动力汽车整车热管理项目等等。它可以提高开发流程的效率,可以让开发控制策略更加通俗易懂,而且对于自动生成的代码无需调整可直接使用。汽车的V型开发流程如图14所示,它包含了功能需求分析、系统架构设计、功能设计、模型集成算法开发、自动代码生成、嵌入式软件测试、硬件在环测试、标定。
图14 ADCU的V模式开发流程
ADCU测试实验
——实验平台搭建
在实现CAN通信功能时,需要搭建如图15所示的ADCU开发测试平台。稳压电源提供12V,1.5A左右的直流电,用于给ADCU进行供电,利用USB-CAN适配器来调试CAN报文的接收和发送,在S32 Design Studio for Power Architecture Version 2017.R1中通过调用底层库文件并设计开发CAN通信模块,硬件的CAN通信接口用DB9接头进行连接。
图15 ADCU测试实验平台
——CAN通信模块测试
完成集成环境下CAN通信模块的开发之后,需要对CAN通信模块的可行性对其进行测试,其中本文所涉及到CAN通信的工具如图16所示,其中左图为Kvaser USBcan Pro CAN总线分析仪,右图为USB-CAN适配器。
图16 CAN通信工具
本文在测试CAN通信的过程时,Kvaser USBcan Pro CAN总线分析仪测试了ADCU中CAN通信的发送报文功能,而USB-CAN适配器测试了ADCU中CAN通信的接收报文功能,部分截取测试结果如图17所示,其中本文所设计的CAN通信模块在测试过程中表现良好。
图17 CAN报文数据接收发送测试
摄像头硬件在环实验测试
——实验平台搭建
完成CAN通信模块测试之后,即ADCU便有了CAN通信功能。本文应用CAN通信功能模块其目的主要是为了接收Prescan换道避障场景中摄像头所发送的数据以及Prescan所提供的车辆动力学信息,然后利用所采集到信息,完成智能车在结构化道路上进行换道避障控制算法的设计,并求解实时换道避障过程中计算所需的方向盘转角,最后利用已开发CAN通信的发送功能,再回传给Prescan来帮助完成车辆的换道避障过程,其实验测试平台如图18所示。
图18 硬件在环测试平台
——硬件在环实验验证
在进行硬件在环实验开始之前,首先要进行CAN通信的测试工作,确保已经开发完成的ADCU可以实现CAN通信功能,待测试完成之后,即可进行算法验证实验。
(1)目标场景识别实验验证
为了验证车辆在直道弯道行驶过程中目标场景识别的准确性和硬件在环平台在实际使用过程中的可行
性,本文设计了三种不同的测试工况,工况一:车辆在直道行驶过程中共有5组实验,每组实验又有 5次直道目标场景识别过程,共计25次换道实验。路径长度
,单车道路宽度,
假设本车与前方目标障碍物车辆车速相同均为,且两车距离为,实验采样周期为0.01s,各周期所需回归系数拟合点。工况二:车辆在弯道行驶过程中共有5组实验, 每组实验又有 5次弯道目标场景识别过程,共计25次弯道实验。转弯半径为,其余相关参数与直道参数相同。工况3:车辆在弯道换道行驶过程中共有5组实验,每组实验又有 5次弯道换道目标场景识别过程,共计25次弯道换道实验。转弯半径为,其余相关参数与直道参数相同。表2三种目标场景识别统计结果表
注:实际时刻值比理论时刻值晚为正,否则为负。
(2)换道避障实验验证
测试场景1
图19 直道换道过程
测试场景2
本文验证场景2选用弯曲的结构化交通道路,弯道道路半径为330m左右,实验过程中周期为0.01s。如图20所示。下图表示表示的是车辆在弯道上进行换道避障的过程图,在未触发决策模型之前,本车一直进行车道保持状态,当触发决策模型之后,主车开始进行向左换道过程,在换道避障过程中主车与CIPV车辆保持一定的横向间距且无碰撞风险,在换道完成之后车辆沿着旁边左车道继续进行车道保持。在弯道场景实验过程中同样选用车速为10m/s和车速为15m/s来测试车辆在横向运动过程中的安全性、舒适性以及稳定性。
图20 弯道换道避障过程
//
小结 //