作者简介
姓名:赵伊齐,张引,申成刚,王严
单位:华晨汽车工程研究院
基金项目:国家重点研发计划(2016YFB0101107)
摘要
Abstract
为在短时间内完成大量验证高级驾驶辅助系统的产品性能,利用 Prescan 对控制器进行软件在环研究。首先对产品的性能及功能规范提出开发需求,作为测试依据;利用仿真软件 Prescan 完成测试场景及动力学模型的搭建;运用 Matlab/Simulink 实现自动化测试。结果表明,利用 Prescan 进行软件在环测试,可缩短开发周期,减少开发成本,有效提高产品性能。
前言
高级驾驶员辅助系统(以下简称 ADAS)是一项提高安全系数的主动安全技术,其主要通过传感器完成对周围信号的采集、CAN 等通讯系统完成相关信号的传递。最后将信号传送给整车控制器,使驾驶员能够在最快时间内察觉可能发生的情况。
目前,很多在研究高级驾驶员辅助系统设计环节中引入在环仿真测试,主要有模型在环(Model in the loop,以下简称 MIL)、软件在环(Software in the loop,以下简称 SIL)及硬件在环(Hardware in the loop,以下简称 HIL)。MIL主要验证控制模型,其控制算法模型是否准确实现功能要求;SIL 旨在通过 PC 验证代码实现的功能是否实现功能需求;HIL 是将被控对象模型放在模拟整车环境下进行测试。SIL可实现被控模型算法的在线或离线仿真,减少实际代码的调试,从而降低成本。
本文利用 Prescan 对控制器软件进行软件在环测试,将对产品提出的功能需求以及安全需求作为测试用例并作为仿真测试依据,利用 Prescan 完成测试场景以及传感器模型的搭建;将模型代码以 S function 的形式进行封装并通过 simu -link 进行比较;最后基于 Matlab 完成 M 文件的编写,实现控制器软件的自动化测试。
1 软件在环
当前 ECU 开发流程一般是工程师根据控制目标开发控制模型,由控制模型生成控制代码(或者手工编写控制代码),将代码导入 ECU 硬件然后通过模型仿真被控对象及系统环境进行硬件在环测试(HIL)。软件在环仿(SIL)测试可通过特定的控制软件设置 ECU 的相关信号代替 HIL 中的硬件,并将待测 ECU 代码信息集成配置为虚拟 ECU,通过运行虚拟控制器中的 I/O 模型和系统环境中的车辆模型来模拟控制器所需的各种传感器信号,并接收虚拟 ECU 发出的控制信号及台架传感器的信号。从而与被测 ECU 的代码信息和系统环境模型连接。最终实现闭环仿真,完成对控制系统进行测试验证。
由于目前许多汽车公司已经从传统的开发模式转移到 V形开发模型(如图 1),以减少重复的代码编制和实车试验。在 V 形开发模式下,通过 SIL 平台一方面可在开发过程中更早介入,确保前期开发过程中通过对嵌入式软件的测试及时发现存在的问题,以提高整改效率从而大幅节约 ECU 功能开发成本和周期;另一方面,由于 SIL 测试采用纯软件仿真的手段,无需真实车辆及 HIL 台架测试。可在开发和测试过程中灵活使用,因而软件在环测试系统正在成为一种理想的功能测试工具。
图 1 V 形开发模型
2 仿真软件
Prescan 是一款用于高级驾驶员辅助系统和主动安全系统开发验证的仿真软件,支持基于摄像头、雷达、激光雷达等多种应用功能的开发应用。包含场景搭建、传感器建模、开发控制算法以及运行仿真(如图 2)。其中场景搭建可利用prescan 自带软件库对道路、交通使用者、环境模型以及天气光照等车辆周边环境因素的搭建(如图 2);实现高级驾驶员辅助系统的前提即为可实时获取周边交通以及环境信息,Prescan 可通过模拟传感器并保证与真实传感器功能一致。传感器建模主要是针对摄像头、雷达/毫米波雷达以及车联网短程通讯传感器的模型仿真,根据 ECU 软件提供的传感器类型可运用 Prescan 对摄像头和雷达进行不同程度上的仿真。开发控制算法即通过仿真平台(Matlab/Simulink),可引入编程工具开发的算法代码。本文利用控制器软件算法作为输入端接收传感器模型输入的传感器信号,经过算法计算作为输出端发送请求指令给车辆动力学模型。动力学通过接收的请求指令做出响应形成驾驶场景,形成一个闭合的在环测试,从而达到验证控制器算法的目的,即为软件在环测试。动力学模型可在 Prescan 自带 demo 基础上通过更改模型参数(主要指底盘、传动系统和发动机,具体可参考图 3)或者直接通过第三方仿真软件直接插入得到理想动力学模型。
图 2 运行仿真
图 3 动力学模型
3 SIL测试流程
3.1 SIL测试
基于 SIL 平台,测试人员可根据不同的功能需求实现以下测试:
(1)手工测试
手工测试也称交互式测试。通常利用 SIL 系统配置相应的仿真面板 GUI,从而直接控制变量输入,并通过仿真面板的控界面直接观察输出量的变化是否符合要求。Prescan 仿真软件提供多种 GUI 单元。用户可以通过简单的拖放操作来创建及调试 GUI(如图 4)。
图 4 手工测试
手工测试操作具有较好的问题处理能力,能通过人为的逻辑判断校验当前步骤的功能实现正确与否。
(2)自动化测试
在仿真平台 Prescan 基础上利用 Matlab 编写脚本文件M.驱动仿真,通过配置完成代码覆盖率程度测试。在不同SIL 系统中,虽然配套使用的应用软件不同,但均可通过编写并运行脚本实现自动测试的目的。通常,不同的测试平台需要准备不同的测试脚本,测试脚本可随时修改调用以方便执行测试。脚本编辑完成后,SIL 可对控制器实现自动测试,并在自动测试完成后由应用软件自动生成相应的测试报告,下图为不同传感器扫描范围所得到结果。控制器功能测试需进行回归测试和重复测试,为节约测试成本以及提高测试效率。大部分功能测试建议采用自动测试来完成。下图 5 即为驾驶辅助系统在 Prescan 完成自动化测试所得到的结果。
图 5 驾驶辅助系统自动化测试结果
3.2 测试流程
本文基于 MATLAB 和 Simulink 平台完成自动化测试,SIL 的具体测试流程如下:
3.2.1 测试计划
系统开发工程师对产品分别提出性能及功能上的需求,供应商根据需求制定软件版本释放计划,SIL 测试人员根据软件释放计划和功能集成情况制定相应测试计划及方案。
3.2.2 测试需求
根据 SIL 测试计划制定测试需求,主要包括:测试样件需求、工具需求和文件需求。
(1)测试样件需求:根据开发工程师提出的产品需求,提供相应的控制器算法、对应接口及软件版本号;
(2)工具需求:根据 SIL 测试的搭建需求制定工具需求列表;
(3)文件需求:整车模型参数(底盘、传动以及发动机相关参数)及产品性能规范。
3.2.3 接收测试文件
测试人员在每一轮软件释放时间节点接收测试软件,若测试软件无更新,则开发工程师需要提前告知测试人员并不用再重新提交。测试人员需要对接收的测试软件进行登记并管理。
3.2.4 执行测试
SIL 测试包括及用户功能测试、回归测试。用户功能测试主要针对控制器的功能进行测试;回归测试主要是验证上一轮测试或更早之前发现的问题是否被解决;
(1)测试人员按照每一轮软件释放的 SIL 测试计划和测试目标执行测试任务;
(2)根据 SIL 测试任务筛选测试用例;
(3)SIL 场景搭建;
1)将测试用例提出的测试前提作为环境搭建依据;
2)完成虚拟道路、交通设施等元素的搭建;
3)完成虚拟传感器及车辆动力学模型建模;
4)修改动力学参数或利用动力学工具,利用外部接口,进行模型载入。
(4)利用脚本驱动仿真,通过配置或者软件编写自动化测试模块,执行自动化测试;
(5)编写脚本文件,自动生成测试报告,报告应包含以下内容:
a)本轮 SIL 测试的时间计划概况;
b)本轮 SIL 测试软件的版本概况;
c)本轮 SIL 测试的目标;
d)本轮 SIL 集成测试的结果;
e)本轮 SIL 集成测试的问题概况。
每轮测试阶段完成后,都需要提交本轮 SIL 测试报告。
3.2.5 分析测试结果
测试工程师应按照测试用例执行测试,做好每一条测试结果记录,将测试用例给定的期望结果与测试结果进行对比,通过记为“OK”,未通过记为“NO”并描述实际测试结果,当前 SIL 状态或者样件状态无法满足测试的记录为“NP”(Not Possible)。对于测试出的问题,测试人员需要按照模板编写问题报告提交给问题管理工程师。
4 结论
本文利用仿真软件 Prescan 完成高级驾驶辅助系统的软件在环测试,通过模拟雷达、摄像头传感器完成对周围环境的监测;通过 MATLAB/SIMUl
ink 完成模型的仿真以及自动化测试运行的脚本文件。结果表明:在给定的条件下进行仿真,利用仿真软件完成的软件在环测试与实际测试结果基本相同,很大程度缩短开发成本、缩短开发周期。达到理想 效果。