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