徐晓林,易 凡
(郑州科技学院大数据与人工智能学院,河南 郑州 450064)
车辆高级驾驶辅助系统(advanced driving assistance system,ADAS)目前已逐步应用于车辆安全控制领域,以提升车辆运行的安全水平。受限于处理器的性能,ADAS技术最早以实现单一功能为主,目前逐渐向以集成式、高性能、运算密集型的系统级芯片(system-on-chip,SOC)构建的综合控制系统为主的方向发展[1]。通过融合多传感器环境信息,ADAS可涵盖车道偏离及碰撞预警、盲点检测、全景环视、交通标志识别、行人检测等一系列高级辅助驾驶功能。但现有的ADAS技术并没有实现由集成式、高性能、运算密集型的SOC构建的综合控制系统,而只是一个个功能独立、硬件接口扩展性差、软件移植性差的分立系统。目前,应用在车辆的ADAS系统均以单芯片处理器、单一功能为主。由此导致的结果是不同的ADAS技术均以自带独立电子控制单元(electronic control unit,ECU)的方式实现。在硬件安装布置、功能可扩展性、客户需求升级等方面都存在延伸性弱、集成度低、软硬件耦合度高等问题。处理器体系架构单一、算力低、性能弱、集成化程度不高,导致软件上无法处理多个ADAS算法。硬件缺乏相应扩展接口,导致ADAS技术整体欠缺平台化设计[2],并不满足日益发展的ADAS技术高度集成化要求。
本文设计了1种基于SOC的车辆ADAS技术多源信息系统。该系统能将ADAS技术所需的多源感知信息从硬件接口设计、采集预处理、ADAS算法实现到车辆整体控制执行集成于1个计算平台中,从而解决单芯片处理器无法实现驾驶辅助技术集成化控制、平台化建设的问题。
车辆ADAS技术多源信息系统总体方案如图1所示。
图1 多源信息系统总体方案
系统自底向上依次为车辆底层控制执行机构、信息综合处理系统和多源感知信息。车辆底层控制执行机构主要功能包括车辆的制动系统、驱动系统、转向系统及人机交互和数据远程上传等。多源感知信息包含2类:一类是基于底层域间的车载以太网音视频桥接(audio video bridger,AVB)技术/车载控制器局域网(controller area network,CAN)总线的车辆原始车身数据,其为整体ADAS提供全面的车身信息[3];另一类是传感器环境感知信息(如激光雷达、单目相机、毫米波雷达等),其为整体ADAS的上层决策控制提供复杂、全面的环境信息。多源感知信息包含道路环境、车辆实时运行状态和不同障碍物构成的原始信息。原始信息经不同的数据通信链路传递至高性能、具备高速并行处理能力的多核异构中央处理器(central processing unit,CPU)作进一步处理[4-5],以便为ADAS功能提供决策规划依据,从而实现对车辆执行机构的精准合理控制及危险情况预警等。
由于多源传感器信息种类较多,本文以实际应用中的车身信息、激光雷达信息、摄像头信息为主,分别从硬件电路设计、软件算法及实际应用3个方面展开分析。
车辆ADAS技术多源信息系统以集成式ADAS功能为核心,集成车道线检测、障碍物识别跟踪、以太网AVB技术/CAN总线双冗余通信、激光雷达数据采集等多种功能[6]。为保证车辆辅助驾驶功能可靠、稳定、实时控制以及数据处理的时效性,主控芯片采用异构多核SOC系统,并在SOC上搭建视频编解码处理、视频显示输出单元、CAN/千兆以太网通信单元、基本输入输出数据接口、电源模组、驱动控制芯片等各种硬件及扩展接口,同时匹配嵌入式操作系统、通信中间件、总线/摄像头等驱动模块,以确保多源传感器的信息介入及复杂数据的综合处理。
车辆ADAS技术多源信息系统构建时可预留所有硬件接口及功能。整体功能以集成ADAS为核心。预留的功能接口后续可扩展至车联网等相关应用,以实现人机交互、信息采集、远程信息管理控制等。系统主要包括主控SOC部分及安全管理微控制单元(micro controller unit,MCU)部分。主控SOC搭建有内存与扩展外设、决策支持系统(decision support system,DSS)、显示子系统、高清视频处理单元CSI2、标清视频处理、BT/Wi-Fi无线通信单元、以太网AVB、CAN线及Control单元,用于与底层MCU的串行外设接口(serial peripheral interface,SPI)通信。底层MCU包含CAN收发器、SPI总线、Timer、内存及电源管理等。主控SOC和安全管理MCU共同构成了整个ADAS的外部环境信息采集、内部感知信息综合处理、底层车辆执行机构驱动控制。主控SOC采用DAR745为TI的Jacinto6多核异构处理器。该处理器具有双ARM Cortex-A15微处理器,是专为ADAS技术设计的高性能嵌入式处理器[7-8]。
整体ADAS的以太网通信分为2类:一类为顶层SOC的千兆以太网通信,用于和激光雷达、工控机等进行通信;另一类为底层MCU的两线以太网百兆通信,用于车辆不同域间系统的AVB通信。两类以太网通信分别基于各自的主控芯片与以太网媒体访问控制(media access control,MAC)收发器实现,并基于IEEE 802.3的标准介质无关接口(media independent interface,MII)、千兆吉比特MII(gigabit MII,GMII)直接连接到其匹配的MAC层,以实现满足特定功能的以太网通信[9]要求。
系统总体硬件结构如图2所示。
图2 系统总体硬件结构框图
2.1.1 底层MCU的AVB通信设计
底层安全控制MCU系统与以太网MAC芯片采用标准的AVB协议,以实现车辆各域间不同系统的AVB通信。
车辆域间网络通信的电子电气架构(electrical electronic architecture,EEA)如图3所示。
图3 车辆域间网络通信的EEA
所涉及的各域包括ADAS域、底盘域、网联域、车身域。每个域均为1个子网系统。各域控制器除具备自有域的专属业务逻辑功能以外,还要跨域实现各域间系统的数据交互。各域均以AVB为主干网,基于以太网路由(即以太网网关)实现跨域通信,以确保各域间系统的数据存储和转发[10]。因此,整车AVB网络交互的枢纽是以以太网网关为数据转发的核心点。
根据图3的车辆域间EEA架构,为实现ADAS域和其他三个域间的AVB通信,底层MCU采用英飞凌的安全控制芯片TC275。TC275具有100 Mbits以太网接口及 FlexRey、CAN、CAN FD等丰富的汽车总线接口[11]。TC275内部包含网络接口控制器,可扩展百兆以太网接口,与以太网物理层收发芯片DP83848实现两线以太网通信。底层MCU的域间AVB通信设计如图4所示。
图4 域间AVB通信设计
图4中的收发线路为一对差分线路。其中,R7为2.2 kΩ上拉电阻,可连接到MCU的输入/输出(input/output,I/O)引脚,用于网线热插拔等中断处理事件。标号为CRS和RX_DV的引脚均连接上拉电阻(R5、R6)并置高电平。DP83848上电强制进入简化MII(reduced MII,RMII)模式的硬件配置方式。DP83848的RD-、RD+、TD-、TD+分别连接R1~R4的(49.9±1%)Ω上拉电阻。差分对接经以太网变压器连接RJ45端口。
以太网变压器使用了屏蔽线进行屏蔽,具有阻抗匹配、网络隔离的作用。
2.1.2 SOC的AVB通信设计
DP83867以太网通信设计如图5所示。
图5 DP83867以太网通信设计
SOC的千兆以太网主要用于和激光雷达进行通信。由于SOC处理能力有限,SOC并不直接处理激光雷达原始数据,而是将其交由交换机透传。交换机进行组播后再交由工控机作进一步算法处理。主控SOC DRA745具有2个端口的千兆以太网吉比特媒体访问控制(gigabits media access control,GMAC)接口,并支持千兆以太网简化GMII(reduced GMII,RGMII)以及IEEE 802.3标准[12],匹配以太网MAC芯片实现与激光雷达3D点云数据的通信。以太网MAC芯片采用TI的千兆以太网物理层收发器DP83867。
DP83867通过RGMII与MAC层相连。在RX/TX端口上有16种可编程RGMII延迟模式。时钟此处为25 MHz同步时钟输出。图5中REF_CLOCK引脚作为连续时钟,为TX和RX端口提供时钟参考。由于此芯片集成终端电阻,不需要外部终端电阻器,本文设计时通过外部变压器直接连接双绞线介质。
在与激光雷达点云进行以太网通信时,由于所使用的16线激光雷达点云数据量巨大,每0.1 s就会转1圈,故需将点云数据按不同角度切分成不同的数据包。每个数据包又包含了当前扇区所有点的xyz位置、发射强度等信息。针对庞大的数据量,激光雷达需要通过以太网这种高带宽网络进行数据通信,以实现基于雷达点云的道路边界识别。
单目相机基于MCU的CAN总线图像采集电路如图6所示。
图6 单目相机基于MCU的CAN总线图像采集电路
车辆ADAS技术多源信息系统集成了车道偏离及碰撞检测功能。该功能基于前视单目相机实现。该功能所需的车道线、障碍物速度等原始数据均由单目相机输出的CAN数据组成。原始CAN数据经系统内部采集、计算解析后进一步供算法使用。本系统设计有多路CAN总线接口。单目相机模块以500 kbit/s的CAN速率向外发送图像检测的车道线参数、障碍物距离等一系列原始CAN数据,经采集、解析、误检滤波处理后进一步供上层决策使用。
采集电路由底层MCU TC275实现对图像数据的接收。其中,TLE9251V8J为英飞凌的CAN总线收发器,用于在TC275和单目相机系统之间进行总线驱动,即把单目相机的原始图像二进制码流转换为差分信号进行发送,同时把差分信号转换为二进制码流由TC275进行接收再处理。经过CAN总线传输的原始CAN数据按照相应协议要求进一步解析后,供上层应用模块使用。
MAC地址过滤的校验值计算流程如图7所示。
图7 MAC地址过滤的校验值计算流程图
由于所涉及的车辆域间AVB通信数据量庞大,单包以太网数据已超过上千字节。若把这些原始数据原封不动地传递给上层决策直接处理,势必严重影响决策自身业务效率,导致其处理能力下降、ADAS整体控制的鲁棒性和可靠性降低。因此,需要对原始AVB数据进行拆包、滤波处理,即将MAC层封装的AVB协议头等对于上层决策无效的数据进行过滤。本文采用Hash散列地址过滤算法。
Hash散列地址过滤算法采用基于自定义的AVB协议格式。Hash散列表按照64位双组地址模式进行过滤。由于底层MCU TC275为32位处理器,要计算目标MAC地址的CRC32校验值,需要使用2个32位寄存器进行存储。其中,高6位作为索引值用于查询散列表寄存器中对应的值,剩余的低5位则用于判断是否接收某一帧数据。校验多项式编码位如式(1)所示。
G(x)=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
(1)
式中:G(x)为生成多项式;x为变量。
本文先在图6的单目相机CAN总线数据采集的基础上对相机源数据进行解析处理,再由图像坐标系转化为车辆坐标系,从而实现在DRA756上的卡尔曼目标跟踪预测和车道线检测算法。单目相机采集的目标信息为动态信息。其中,位置坐标、相对速度、速度、距离等均存在噪声。基于卡尔曼滤波,可实现对动态目标的可靠估计,对未来状态进行最优预测。
由于相机检测到的速度和位置等信息会受到外部误差影响,所以实际状态呈现正态分布,以估计值和观测值综合考量实现对下一帧数据的预测。单目相机的卡尔曼滤波数学模型如式(2)所示。
xk=Axk-1+Buk+Kk[yk-C(Axk-1+Buk)]
(2)
式中:xk为后验估计;xk-1为先验估计;yk为预测后的结果;uk为控制向量;Kk为卡尔曼增益矩阵。
因相机追踪的障碍物目标的每一帧状态都要变化,需要先以相邻的前后两帧数据进行预测,再作更新。预测完成后,需要根据相机的实际测量值与卡尔曼增益进行修正,并在修正完成后估计下一帧。以此建立状态和观测方程,实现不断的预测-更新-再预测-再更新,直至结束。相机卡尔曼目标跟踪滤波的方程式如下。
①预测方程。
x″k=Ak×x′k-1+Bk×uk
(3)
式中:x″k为k时刻状态估计值;x′k-1为(k-1)时刻状态估计值;Ak为预测矩阵;Bk为控制输入矩阵。
②状态方程。
x′k=x″k+Kk×(Zk-Hk×x″k)
(4)
式中:x′k为k时刻最优估计值;Zk为当前观测矩阵;Hk为系统测量矩阵。
③最小均方误差。
(5)
④卡尔曼增益。
(6)
⑤修正的最小均方误差。
P′k=(I-Kk×Hk)×Pk
(7)
式中:P′k为修正后的最小均方误差。
由卡尔曼滤波实现的单目相机障碍物预测跟踪检测流程如图8所示。
图8 单目相机障碍物预测跟踪检测流程图
由于涉及ADAS的域间多系统及域内多模块间的通信,故域内与域间通信方式不同。其中:域间各系统主要以AVB通信实现整车车身信息数据在ADAS的采集;ADAS域内各传感器模块原始数据经CAN总线、千兆以太网的雷达原始点云进行检测。这些多源信息采集处理后的实时检测数据通过高并发通信框架zmq实现向上层决策的传递。基于此,为便于在调试过程中全面了解车辆运行状态信息,本文设计了1种多源信息综合处理上位机软件。该软件用于多源信息的数据收集、显示、查看、管理,以实时监控实车各系统是否正常工作、信息源是否正确收发通信。该软件采用Qt Creator集成开发环境设计。多源信息综合处理软件界面为上位机界面,按功能划分为车身信息和感知信息2大部分。
①车身信息。
车身信息主要包括车辆的实际运动状态及车辆状态信息。该车身信息来源主要基于底层AVB及CAN总线,一旦域间某个系统出现故障或通信不正常,界面数据会显示异常,从而影响感知、决策系统的信息处理。原始AVB的车身信息经主控系统采集处理后通过zmq及protobuf结构化数据存储格式向外发布信息,供其他感知模块及上位机监控软件订阅使用。车身信息部分proto数据格式如表1所示。
表1 车身信息部分proto 数据格式
②感知信息。
感知信息主要包括红绿灯信息、地理位置信息、障碍物目标检测信息等。原始数据经过主控系统采集处理后,各上层应用模块将以消息队列的pub方式基于proto协议对外发布。此综合处理上位机软件会采用消息队列的sub方式针对不同应用模块节点采用相应端口进行数据订阅,并将数据实时显示在上位机界面。
本文系统作为多源信息的综合处理平台,一方面通过车辆不同域间系统的以太网及冗余CAN通信获取并采集原始车身状态信息提供给上层应用,同时基于上层决策下发的控制信息对底层域间系统的动力、电器进行整车控制;另一方面获取各感知传感器信息,经采集预处理后发布给上层决策规划使用。主控系统开发基于嵌入式Linux系统及POSIX多线程的C++编程实现。作为安全冗余及域间AVB通信、单目相机CAN通信的底层MCU的相关功能采用C语言实现。
AVB通信功能根据以上硬件功能设计。其共包含2类:一类为SOC的千兆以太网通信,用于获取激光雷达点云数据;另一类由底层MCU及以太网控制芯片实现底层域间不同系统的车辆AVB通信。以实车为例,域间各控制器的AVB通信数据经散列滤波及实时更新后,通过Wireshark抓包后的车辆AVB报文如图9所示。
图9 车辆AVB报文
图9(a)为动力域AVB车身状态信息。标注框数据如(18 fe bf 0b 08 00 00 7d 7d 7d 7d ff ff)为1帧AVB以太网封装的有效CAN数据。其中:前4个字节为CAN报文ID标识;08代表CAN数据的长度,占1 B;后8个字节为CAN 有效数据。每帧AVB数据都会封装此格式的CAN有效数据,最大可封装50帧CAN数据。
图9(b)为车控信息AVB原始报文。其负责根据上层决策规划来控制底层执行机构。标注框(18 fa e1 2a 08 03 03 78 46 00 80 80)为车辆控制报文。由于AVB数据量巨大,需经过滤波更新提取出实时有效的数据。其中,标注框88为每帧AVB数据更新标志。只有更新的数据报文才会传递给上层感知、决策使用。AVB原始车身信息数据如车速、轮速、车门/车灯、制动、驱动等行车状态经解析后可作为ADAS功能共享数据使用,以实现数据对外发布。
基于图5的以太网通信设计,本文对VLP16的激光雷达点云数据进行采集。单包激光雷达数据包由42 B数据报头和1 206 B有效载荷数据组成。此有效数据包含激光方位角、反射率、时间戳及工厂数据等。每包数据起始标识符为0xfffe。本文利用wireshark软件抓取的1 246 B激光雷达单包点云数据(截取部分)如图10所示。其中,单包点云共有12个数据块。每个数据块都会从第1线至第16线进行2次扫描,即共有24个点云数据。图10中标注框(ff ff ff ff … 00 00)为每个数据包的42 B数据报头;标注框(ff ee)为每个数据块的固定起始标识,长度为2 B;标注框(ba 59)、(e1 59)、(08 5a)等为数据块N,N+2,…,N+22给出的角度值azimuth,长度为2 B;标注框(04)为反射强度Reflectivity,长度为1 B;标注框(be 0c)、(c3 0c)、(c5 0c)为反射距离Return distance,长度为2 B。
图10 激光雷达单包点云数据(截取部分)
智能网联是车辆未来发展的目标,为满足智能网联技术发展的需要,车辆ECU系统需要向海量内存、高速并行运算的AI芯片方向发展。本文通过搭建高可靠性、集成化的多源信息综合处理系统平台,以高性能、高处理能力的SOC实现了从底层域间系统的AVB通信、激光雷达3D点云数据的采集、单目相机的卡尔曼目标跟踪预测及车辆的决策控制等功能。本文将多源传感器信息从采集、处理到最终决策的控制执行集成在1个SOC系统上,既实现了软硬分立、灵活配置,又将各分立功能集于一体,满足未来车辆智能化技术平台化、高集成、可延伸的要求。通过此平台的构建和设计,未来可将其继续精细拓展在无人驾驶的计算平台上应用。