自动驾驶运动控制算法的模型在环测试*
2020-03-17张剑锋马玲李广召
张剑锋 马玲 李广召
(吉利汽车研究院)
如今,自动驾驶汽车已经成为各大车企竞相研发的领域之一。相对于传统汽车,自动驾驶汽车依靠系统中的感知、决策、控制三大子系统完成汽车的无人驾驶任务。自动驾驶控制系统的研发必须把该系统的安全性放在第一位,而如何保证系统的安全性成为研发中最具挑战性的难题。为了提高控制软件的开发效率和品质[1],基于MATLAB/Simulink 的MBD[2](Model-Based Development)开发方法,文章介绍了一套控制软件算法的仿真测试环境,并使用该环境对控制软件进行了测试,达到了预期的目的。
1 MIL环境的搭建及有效性验证
在V 字形开发流程中,MIL 测试环节的位置,如图1 所示。
图1 MIL 环节在V 字形开发流程中位置的示意图
文章介绍的MIL 环境主要分为4 个部分,如图2所示。
图2 MIL 环境的构成示意图
1)ADSM (Autonomous Driving Service Module)。ADSM模型主要包含传感器对环境的感知、数据融合和轨迹规划等功能。其中,传感器对环境的感知部分由CarSim 中的Sensor 模型来模拟,其它部分由ADSM中的模型来完成。
2)MCM(Motion Control Module)。该部分主要包含车辆的模式管理、横向控制、纵向控制、安全决策、人机管理等模型。这部分值得注意的是,搭建的自动驾驶车辆运动控制MIL 仿真模型的主要目的之一就是为了测试基于模型开发的MCM控制器的功能是否满足需求,在设计智能PHEV 系统MIL 平台时,更多考虑的是如何仿真实现MCM的所有功能,因此另外3 个部分是围绕如何实现MCM功能来设计的。
3)Vehicle。该模型由车辆动力学仿真工具CarSim来完成,通过S-Function 的形式和Simulink 中的控制算法模型进行联合仿真。CarSim 中动力系统的设置,如图3 所示,其中原车中的发动机、变速箱等部分被屏蔽掉,在差速器的输入端接入MCM 发来的驱动扭矩指令,另外再接入从MCM发来的转向盘转角指令和制动主缸压力指令,CarSim 输出车辆的坐标、速度、加速度、Yaw、Row、转向盘转角、车道线和障碍物信息等。
图3 CarSim 中动力系统的配置图
4)Others。这部分内容包括电子液压制动系统(EHB:Electric Hydraulic Brake)、车身稳定控制器(ESC:Electronic Stability Control)等,为了提高仿真效率,这部分的控制器模型大部分是使用现有车型的控制器模型做简化后集成的。
上述MIL 环境搭建好之后,为了验证该环境的正确性,选取了一种工况,采集实车的驱动扭矩、制动主缸压力和转向盘转角数据,同时在MIL 模型中模拟同一种工况,记录驱动扭矩、制动主缸压力和转向盘转角,并与实车数据进行了对比,如图4 所示。从对比结果来看,MIL 仿真结果在趋势上与实车结果是吻合的,因此,该环境可以用来对自动驾驶车辆控制算法进行功能性验证和测试。
图4 实车采集数据与MIL 仿真数据的对比结果图
2 测试用例的编写
测试用例编写的难易程度受到需求描述是否足够详细、明确,以及测试工具的易用程度的影响[3]。当上游工程将软件需求释放之后,准确理解需求是写好测试用例的前提条件。测试工具选择MATLAB/Simulink 工具箱Simulink Test,文章以MCM 中的模式管理模块为例,介绍测试用例的编写方法。
首先,自动驾驶车辆运动控制MIL 仿真模型中根据测试需求将需要操作的输入输出信号通过Simulink的Inport、Outport 模块引出来,创建带有Test Sequence模块的Test Harness(Test Harness 是Simulink Test 根据模型生成的测试框架模型,它附着在主模型上,也可以进行批量化管理),如图5 所示。在Test Sequence 模块中可以实现对输入信号的控制和对输出信号的判断,以及对每个测试步骤设置迁移条件。Test Sequence 支持丰富的语句,包含赋值语句、when、verify()、assert()等,迁移条件语句有duration (),after (),true。创建好Test Harness 后,便可在Test Sequence 中编写测试用例。
图5 Test Harness 中Test Sequence 的示意图
表1 示出模式管理模块的部分软件需求,依据该软件需求,使用Test Sequence 模块设计出的测试用例,如图6 所示。图7 示出从示波器中观察到的运动控制模式信号(XCU_AutoDriverSts)随测试步骤的跳转图。
表1 MCM 中模式管理模块部分模式的跳转需求
图6 Test Sequence 中测试步骤截图
图7 XCU_AutoDriverSts 信号的模式跳转图
如果编写的测试用例数量很多,可以借助Simulink Test 中的Test Manager 工具实现批量化自动执行,如图8 所示。Test Manager 可实现多个Test Harness 一键运行测试,并在运行结束后产生测试报告。应用此方法,在第1 轮MCM软件迭代开发过程中,MIL 测试共发现了包含软件开发与需求不符,软件bug 等在内的42 个软件问题,其中:1)软件bug 问题占4 个;2)需求功能软件暂未实现问题占6 个;3)软件功能与需求不符问题占32 个。
图8 Test Manager 中同时管理多个Test Harness 的截图
3 结论
文章主要介绍了一种基于Simulink Test 的自动驾驶车辆运动控制的MIL 测试方法。在完成对MIL 环境的搭建之后,通过与实车数据进行对比,验证了该MIL环境的正确性。在此基础上,对软件需求进行了理解和分析,借助于MATLAB/Simulink 工具箱Simulink Test,编写出相应的测试用例并进行了MIL 测试。测试结果表明,使用该方法,可以在控制软件开发的早期,发现软件中存在的bug 以及需求和软件不符之处,有效地提高了软件的品质,缩短了软件的开发周期。
然而,在实际测试过程中也发现了以下不足之处:1)软件需求难于理解;2)CarSim 交通场景搭建耗时耗力;3)MIL 模型复杂导致的仿真速度慢。对于此类问题,将在后续的工作中持续加以解决和改善。