一、系统HIL组成
硬件在环hardware-in-the-loop,简称HIL
“hardware”硬件,即是这个测试手段的被测对象,一般是控制器实物,比如整车控制器VCU、电池管理系统BMS、ADAS控制器或者是自动驾驶的计算平台;“in-the-loop”在环,强调了被测控制器要在一个闭合的回路里,这个回路即是控制器接收被控对象的状态并发出控制指令,然后得到被控对象反馈并再次发出控制指令的过程。形成了这个测试闭环,就可通过设置被测对象不同的状态,来测试控制器能否对不同的工况进行正确处理,其功能是否都能够正常工作。
真实的自动驾驶控制器控制真实车辆时,控制器发送控制指令(如加速、减速、转向等)给车辆上的执行器,车辆根据控制指令做出相应的动作,然后车辆上安装的传感器检测状态信息(如车速、横摆角、障碍物信息等),并反馈给控制器,控制器继续根据新的状态信息计算并发出控制指令,周而复始。
进行HIL测试时,使用HIL设备替代真实被控对象,接收所有控制指令,并模拟所有状态信息返回给真实控制器,使控制器以为自己在控制真实对象,从而形成测试闭环。
这要求HIL设备一方面能够按照真实被控对象和控制器接口的线路形式和协议收发信息,另一方面能够对控制指令做出正确响应并发出正确的状态值。从而,HIL设备一般由这样几部分构成:
(1)被控对象仿真模型:用来精确的模拟被控对象,发出正确状态信息,比如车辆动力学模型、电池模型、交通场景模型和传感器模型等。
(2)实时处理器:由于接入了控制器实物,由HIL设备模拟的虚拟被控对象也要能够实时运行,这样才能准确模拟真实对象。从而需要一个高性能的实时处理器来运行仿真模型以及处理I/O通信、数据记录等各项HIL测试中的任务。
(3)I/O接口:用来模拟控制器和被控对象间的交互,按照真实的线路形式(如硬线、CAN总线、以太网等)和协议收发信息,按照与真实对象一样的形式通过线路与控制器相连,并实现信号的收发。
(4)操作界面:有时也被称为上位机软件、试验管理软件,其与实时处理器通信,提供可视化操作和观测界面,进行设备硬件、软件和测试任务的管理。
为了使用的便利性,HIL设备的各个部分有时会集成到一个机柜中。
二、HIL测试步骤
HIL测试该怎么做呢?可以分为HIL工具开发、HIL系统集成、测试场景开发和HIL测试执行四个步骤。
(1)HIL工具开发
HIL工具涉及到软件工具和硬件工具。对于自动驾驶测试来说,软件工具包括场景和传感器仿真软件、车辆动力学仿真软件、测试管理软件等不同功能的软件;硬件工具有实时仿真机、IO接口板卡和传感器模拟器等。这些工具可以根据具体的需求情况和开发能力,在市场上选择适合的现有工具或者自行开发。
(2)HIL集成
HIL系统集成包含两个方面的工作:①根据测试需要选择合适的测试工具并将其集成为完整的HIL测试环境;②将被测算法与HIL测试环境集成,实现闭环测试。
第一方面工作的难点在于:①市场上的测试工具种类较多,哪个能满足测试需求?②这些测试工具多是由不同公司开发的,在将其集成到一起时,相互之间的数据接口需要定制化开发。
第二方面工作的难点在于:①现成的工具与被测算法的数据接口也不一致,在定制化开发通信接口的过程中,既需要创造性的思考,也需要步步为营的调试。②如何能够保证仿真环境与真实环境的相似度,比如传感器的信号是否与真实情况一致、车辆动力学模型的响应是否与真实车辆一致?
(3)测试场景开发
测试场景开发工作的一个关键问题是:如何保证仿真测试的场景覆盖度?或者说算法在仿真环境进行了1000万个场景、1000万公里的测试后,我们可以有多大信心在真实世界的同样场景下进行自动驾驶?
这需要针对自动驾驶算法的设计运行域进行详细而系统的测试场景设计。充分考虑道路、周围车辆的位置和运动、传感器感知局限和自车状态等等不同方面的影响。
(4)HIL测试执行
HIL测试执行包含两个方面的工作:①对测试场景库的维护和针对不同算法选择合适的测试场景并进行测试;②在测试完成后,整理并提供清晰的测试报告,并提供测试结果的统计数据,为算法团队的改进提供有效支撑。
HIL测试一般是自动化测试,配置好测试用例后进行无人值守的自动化运行和评估,这有利于提供测试效率、正确性和一致性。