前言
自动驾驶系统与HiL测试平台是“绝配”。
自动驾驶领域是软件定义汽车的现身说法。过去很长一段时间汽车的调性常常由三大件——发动机、变速箱和底盘来定义,一辆车是舒适取向还是操控取向,要看三大件的技术水平和调教方式。由于传统三大件的主体都是结构件,总的来说软件的重要性并不高。但随着汽车智能化的发展,这种态势变了:除了关心汽车的“腿脚”够不够灵活稳健,用户开始关心汽车的“大脑”是否智能,越来越多的整车厂也把汽车智能化水平作为卖点,最典型的像特斯拉,它的智能驾驶套件FSD是独立售卖的,搭载FSD的车辆能够实现L2级自动驾驶,代替驾驶员开车。类似FSD这一类的自动驾驶功能模块是纯软件的,可以与硬件解耦,实现跨车型兼容和OTA远程升级,就像手机APP一样方便,而就是这样的类似手机APP的汽车APP,定义了汽车的智能化程度。
在软件定义汽车的大前提下,自动驾驶系统的开发的重点就是自动驾驶软件。自动驾驶软件不同于一般的汽车控制器软件,它的功能验证需要在各种驾驶场景中才能测试,而使用低成熟度的软件进行实际的道路场景测试是非常危险且代价高昂的。HiL硬件在环测试平台本质上是一种仿真的测试平台,允许低成熟度的软件在仿真场景中进行测试的同时能兼顾安全性和经济性,是非常实用的自动驾驶系统开发工具。
HiL测试平台
HiL硬件在环仿真是一种用于实时嵌入式系统的开发和测试技术。汽车的车载系统一般由传感器——控制器——执行器构成,一般地,HiL硬件在环测试平台的测试对象是控制器,传感器信号、执行器信号以及其他通讯和负载信号由HiL测试平台提供,相当于将控制器置于仿真的整车环境中。
01
典型HiL测试平台架构
典型的HiL测试平台主要由上位机、实时机、通讯模块、IO模块、故障注入模块、信号调理模块、负载箱、供电系统等构成。其中,上位机是一台安装了测试软件的电脑,人机交互是基于这台电脑展开的;实时机是安装了实时系统的目标机,仿真模型在实时机上运行;通讯模块提供CAN/LIN/Flexray等车载通讯资源;IO模块提供数字/模拟的输入输出信号,包括电压、电流、电平、PWM、计数、定时、触发等;故障注入模块提供硬线信号的开路、短路、接地、接电源等故障;信号调理模块将IO模块的输入输出调理到控制器能够接受的范围;负载箱给控制器的一些驱动端口提供相应的负载以消除相关报错;供电系统给测试平台安全供电,提供220V/24V/12V/5V/3.3V的恒压电源以及可调电压和功率的程控电源。 基于以上的组件,HiL测试平台实现的功能包括:功能测试、性能测试、网络测试、标定、故障注入、诊断。 HiL测试的使用场景是ASPICE过程中的SYS.5系统合格性测试,在系统的软硬件集成完毕以后对其进行的合格性检查。当然,这种测试不是一次性的,而是一个迭代的过程,每次有需求变更或者bug修复引起的系统升版都需要进行新一轮的合格性测试。
02
ASPICE过程参考模型
对于迭代比较频繁的系统开发,则CI/CD的开发模式则更为高效。CI/CD是一种持续集成和持续交付的开发理念,HiL测试平台可以实现自动化测试,匹配CI/CD流程中的持续测试(continuous testing)的要求,能更及时地处理不断产生的测试需求。
03
CI/CD开发模式
对于实时性和同步性要求高的测试也应该优先考虑使用HiL测试,因为HiL测试引入了实时目标机作为模型运行和信号交互的载体来解决实时性问题;同时,实时机与外设之间使用同样的时钟信号保障同步性。
HiL测试的优点在于:
便捷性,不需要完成整个系统的搭建即可进行测试,大大加速了系统开发的进程;
安全性,使用仿真的场景来避免带有危险性的测试过程;
高效性,能够实现自动化测试,测试过程一键完成,测试用例、数据、结果统一管理;
复用性,测试用例是可以保存并复用的;
经济性,系统采用部分仿真的方式,节约了相关硬件或场景搭建的费用;
测试覆盖度高,参数化的测试配置,能够最大限度地覆盖测试要求;
交互性,良好的人机交互易于测试人员操作使用。
自动驾驶系统HiL测试平台
按照自动驾驶水平来分类,自动驾驶系统分为低阶的ADAS高级辅助驾驶(L0-L2)和AD全自动驾驶(L3-L5)。无论是ADAS也好,还是AD也好,系统的整体架构是不变的:传感器——控制器——执行器。 传感器主要包括了摄像头、毫米波雷达、激光雷达、超声波雷达等;控制器是指自动驾驶域控制器DCU,相比于分布式ECU,DCU是多个相似领域的ECU功能的整合,它的特点是集成了高性能的域主控处理器、丰富的硬件接口资源以及强大的软件功能特性,同时它的测试也相应会更加复杂;执行器是指驾驶车辆用到的方向盘、油门、刹车以及挡位。 真实的域控制器DCU是测试对象,而传感器和执行器则是需要仿真的,HiL测试平台的架构如下图:
04
自动驾驶系统HiL测试平台
从左至右依次是传感器仿真模块、待测域控制器、测试控制核心以及执行器仿真模块,其中测试控制核心又包含了上位机和实时机,那么HiL测试的业务流程就是:
上位机运行场景仿真程序并调度传感器进行场景的感知,在仿真程序中包含一台自动驾驶的主车和为实现特定自动驾驶功能搭建的道路、信号灯、路牌等交通元素,主车在其中行驶就形成了特定的场景;
传感器仿真模块将感知到的场景信息以CAN或者以太网的通讯方式发送给域控制器;
域控制器对感知信号进行融合和决策,确定是否激活某种自动驾驶功能,并发送相应的控制信号;
实时机运行动力学仿真,将域控制器发送的控制信号解算为位姿信号,并将其反馈给场景仿真程序;
场景仿真程序接收位姿信号,实时调整场景中仿真车辆的位置和姿态;
执行器仿真模块是一台驾驶模拟器,用于模拟驾驶员的功能,在自动驾驶功能未激活时可以驾驶车辆,在其激活时作为后备驾驶员;
记录上述过程中产生的数据,即可根据功能规范/测试用例的标准判断测试的成败。
另外,上位机搭载了测试自动化软件,可实现测试过程的自动化;故障注入、信号调理、负载箱、电源管理等标准模块默认是包含在自动驾驶HiL测试平台中的,上一章节有提及,不再赘述。
传感器的仿真包括了对摄像头、毫米波雷达、激光雷达以及超声波雷达的仿真,对摄像头的仿真有两种形式——暗箱仿真和视频注入。暗箱仿真是指将场景仿真软件生成的视频文件呈现至高清显示器上,控制真实摄像头进行图像拍摄,通过图像处理和格式转换后反馈至域控制器;视频注入是将场景仿真软件生成的视频信号通过显卡传输至视频注入单元,根据模拟摄像头帧率,分辨率以及颜色空间等进行转码,并通过高速串行接口输出至域控制器。暗箱仿真的形式适合单目摄像头且摄像头数量不多的应用场景,视频注入的形式适合双目、鱼眼摄像头和摄像头数目较多的场景。
05
毫米波雷达仿真也有两种方式:暗箱仿真和信号注入。暗箱仿真是指将虚拟场景中的毫米波雷达模型信息进行分析计算,控制待测雷达发送雷达信号给雷达目标模拟器,模拟器接收信号,加入延时后再发送与接收信号相同振幅、频率和周期的信号给暗箱中的真实雷达,雷达直接将信号发送给域控制器。信号注入是指在场景仿真软件的车辆模型中加入待测雷达的模型,然后在测试中将雷达模型的反馈通过下位机实时传递给域控制器。激光雷达和超声波雷达的仿真在原理上与毫米波雷达是一致的。
06
雷达暗箱仿真示意图
场景仿真可以使用常用的仿真软件来,比如Prescan、Carla、Vires VTD,来完成。场景仿真完成的任务是根据测试规范中的要求,通过对各类交通参与者、交通元素、基础设置、自然环境、天气条件的排列组合,搭建出相应的测试场景。
07
动力学仿真同场景仿真一样,也可以由成熟的工业软件,比如Amesim,来实现。Amesim采用功率键合图的形式,借助单个零件的组合搭建车辆的动力学模型。动力学仿真的主要内容就是基于车身质量、车身尺寸、转动惯量、重心位置、发动机扭矩、变速箱变比、轮胎、轮毂、接触阻力等等一系列参数建立的动力学模型,这个动力学模型跟场景模型联合仿真,让车辆在场景中跑起来。
08
Amesim车辆动力学模型
执行器的仿真工作由一台驾驶模拟器完成,主要是驾驶控制信号的输入和车身姿态的反馈。测试人员操作驾驶模拟器的方向盘、油门、刹车、档杆进行驾驶操作,这些操作转化为驾驶控制信号输入给仿真场景中的主车;主车的动力学模型对驾驶操作进行解算得到位姿数据,这些数据再反馈给驾驶模拟器的底座。值得注意的是,如果要获得车身姿态的反馈,驾驶模拟器需要配备6自由度的座椅。
结语
软件定义汽车的大趋势给自动驾驶系统的开发带来比其他车载控制器更高的要求:高迭代速度和高测试覆盖度。传统的测试手段费时耗力,而HiL测试平台凭借仿真的测试环境和参数化的测试配置,能够快速响应高强度大范围的测试需求,是自动驾驶系统测试的不二选择。