主要内容

高速公路车道跟随自动化测试

这个例子展示了如何通过定义基于需求的场景,自动化测试组件和为这些组件生成的代码来评估车道跟踪应用程序的功能。这些组件包括车道探测、传感器融合、决策逻辑和控制。此示例构建在高速公路车道跟踪的例子。

简介

高速公路车道跟踪系统引导车辆在有标记的车道内行驶。它还能在同一车道上与前面的车辆保持一个设定的速度或安全距离。该系统通常包括车道检测、传感器融合、决策逻辑和控制组件。系统级模拟是评估集成组件功能的常用技术。根据系统需求配置模拟以测试场景。自动运行这些模拟使回归测试能够验证系统级功能。

高速公路车道跟踪示例演示了如何模拟车道跟踪的系统级模型。这个例子展示了如何使用Simulink Test™针对多个场景自动化测试该模型。万博1manbetx这些场景基于系统级需求。在这个例子中,你将:

  1. 审核要求:需求描述了系统级测试条件。创建模拟测试场景来表示这些条件。

  2. 回顾试验台模型:回顾包含度量评估的系统级车道跟随测试台架模型。这些度量评估将测试台架模型与Simulink测试集成在一起进行自动化测试。万博1manbetx

  3. 禁用运行时可视化:运行时可视化被禁用,以减少自动化测试的执行时间。

  4. 自动化测试:测试管理器被配置为模拟每个测试场景,评估成功标准,并报告结果。结果在测试管理器中被动态地探索,并导出为PDF供外部评审员使用。

  5. 使用生成的代码自动化测试:车道检测、传感器融合、决策逻辑和控制组件被配置为生成c++代码。自动测试在生成的代码上运行,以验证预期的行为。

  6. 并行自动化测试:在多核计算机上使用并行计算可以减少运行测试的总体执行时间。

测试系统级模型需要一个逼真的仿真环境。在本例中,您通过与Epic Games®的虚幻引擎集成来启用系统级模拟。3D仿真环境要求Windows®64位平台。

如果~ ispc错误(3D模拟环境需要Windows 64位平台);结束

为保证模拟结果的重现性,设置随机种子。

rng (0);

评审需求

需求工具箱™允许您在Simulink中创建、分析和管理需求。万博1manbetx这个例子包含十个测试场景,为每个场景定义了高级测试需求。打开需求集。

要探索测试需求和测试台架模型,请打开项目示例文件的工作副本。MATLAB将文件复制到示例文件夹中,以便您可以编辑它们。的TestAutomation文件夹包含启用自动化测试的文件。

目录(fullfile (matlabroot,“工具箱”“开车”“drivingdemos”));helperDrivingProjectSetup (“HighwayLaneFollowing.zip”“workDir”pwd);
打开(“HighwayLaneFollowingTestRequirements.slreqx”

或者,也可以从需求在Simulink中,需求管理器应用程序的标签。万博1manbetx

该文件中的每一行都以文本和图形格式指定了测试场景中车道跟随系统的需求。的场景scenario_LF_前缀使您可以测试车道检测和车道跟踪算法,而不受其他车辆的阻碍。的场景scenario_LFACC_前缀使您能够测试车道检测,车道跟踪和ACC行为与其他车辆在道路上。

  1. scenario_LF_01_Straight_RightLane-直道场景,自我车辆在右车道。

  2. scenario_LF_02_Straight_LeftLane-直道场景,自负车辆在左车道。

  3. scenario_LF_03_Curve_LeftLane-弯道场景,自我车辆在左侧车道。

  4. scenario_LF_04_Curve_RightLane-弯道场景,自我车辆在右车道。

  5. scenario_LFACC_01_Curve_DecelTarget-弯道场景,前导车辆在自我车道减速。

  6. scenario_LFACC_02_Curve_AutoRetarget-弯道场景,在自我车道上更换领头车辆。这个场景测试了自我车辆在沿着弯道行驶时重新瞄准新的先导车辆的能力。

  7. scenario_LFACC_03_Curve_StopnGo-弯道场景,领头车辆在自我车道减速。

  8. scenario_LFACC_04_Curve_CutInOut-弯道场景,一辆快速行驶的汽车在相邻车道切入自我车道,并从自我车道切入。

  9. scenario_LFACC_05_Curve_CutInOut_TooClose-弯曲道路场景,一辆快速行驶的汽车在相邻车道切入自我车道,并从自我车道积极切入。

  10. scenario_LFACC_06_Straight_StopandGoLeadCar-直道场景,领头车在自我车道抛锚。

类中使用的场景名称相同的测试场景实现了这些需求HighwayLaneFollowingTestBench模型。

回顾试验台模型

此示例重用HighwayLaneFollowingTestBench模型高速公路车道跟踪的例子。打开试验台模型。

open_system (“HighwayLaneFollowingTestBench”);

这个试验台模型有三维仿真场景车道标志探测器车辆检测器前方车辆传感器融合车道跟随决策逻辑而且车道跟踪控制器而且车辆动力学组件。

此测试台模型是使用helperSLHighwayLaneFollowingSetup脚本。这个设置脚本需要scenarioName作为输入。scenarioName可以是前面描述的任何一个测试场景。要运行安装脚本,请使用以下代码:

scenarioName =“scenario_LFACC_03_Curve_StopnGo”;helperSLHighwayLaneFollowingSetup (“scenarioFcnName”, scenarioName);

现在可以模拟模型并可视化结果。有关模拟结果分析和试验台模型中各个组件设计的详细信息,请参阅高速公路车道跟踪的例子。

在这个例子中,重点更多的是在不同的测试场景中使用Simulink test自动化测试台架模型的模拟运行。万博1manbetx的指标的评估子系统支持与Simulink Test集成系统级度量评估。万博1manbetx这个子系统使用检查静态范围(万博1manbetx模型)这个集成的块。打开指标的评估子系统。

open_system (“HighwayLaneFollowingTestBench /指标评估”);

在本例中,使用四个指标来评估车道跟随系统。

  • 验证横向偏移:验证车道中心线的横向偏离是否在相应场景的规定阈值之内。在创建测试场景时定义了规定的阈值。

  • 在车道内验证:验证自我车辆在整个模拟过程中沿着道路上的一条车道行驶。

  • 验证时间差距:验证自车与前车时间差在0.8秒以上。两辆车之间的时间间隔被定义为计算车头时距与车辆速度的比值。

  • 确认无碰撞:验证自载车在模拟过程中没有与先导载车发生任何碰撞。

禁用运行时可视化

系统级测试台架模型在模拟分析模型中不同组件期间可视化中间输出。当测试自动化时,这些可视化是不需要的。您可以通过禁用自动化测试来减少执行时间。

控件的运行时可视化车道标志探测器子系统。

load_system (“LaneMarkerDetector”);黑色=“LaneMarkerDetector/Lane MarkerDetector”;set_param(黑色,“EnableDisplays”“关闭”);

控件的运行时可视化车辆检测器子系统。

load_system (“VisionVehicleDetector”);黑色=“视觉车辆检测器/视觉车辆检测器/ACF/ACF”;set_param(黑色,“EnableDisplay”“关闭”);

配置模拟三维场景配置块以无头模式运行虚幻引擎,其中3D模拟窗口被禁用。

BLK = ['HighwayLaneFollowingTestBench/模拟3D场景/'...“模拟3D场景配置”];set_param(黑色,“EnableWindow”“关闭”);

自动化测试

测试管理器被配置为自动测试车道跟踪应用程序。打开HighwayLaneFollowingTestAssessments.mldatx测试管理器中的test文件。

sltestmgr;testFile = sltest.testmanager.load(“HighwayLaneFollowingTestAssessments.mldatx”);

观察先前在此文件中编写的填充测试用例。每个测试用例都链接到需求编辑器中相应的需求,以实现可追溯性。每个测试用例都使用POST-LOAD回调函数以使用适当的输入运行设置脚本并配置输出视频文件名。在模拟测试用例之后,它调用helperGenerateFilesForLaneFollowingReport清理方法中解释的图形高速公路车道跟踪的例子。

运行并研究单个测试场景的结果:

要减少命令窗口输出,请关闭MPC更新消息。

mpcverbosity (“关闭”);

来测试系统级模型scenario_LFACC_03_Curve_StopnGo使用下面的代码:万博1manbetx

testSuite = getTestSuiteByName(testFile,测试场景的);testCase = getTestCaseByName(testSuite,“scenario_LFACC_03_Curve_StopnGo”);resultObj = run(testCase);

要在模拟后生成报告,使用以下代码:

sltest.testmanager.report (resultObj“Report.pdf”...“标题”“高速公路车道跟踪”...“IncludeMATLABFigures”,真的,...“IncludeErrorMessages”,真的,...“IncludeTestResults”0,“LaunchReport”,真正的);

检查报告Report.pdf.观察到测试环境部分显示了运行测试的平台和用于测试的MATLAB®版本。的总结部分以秒为单位显示测试的结果和模拟的持续时间。的结果部分显示了基于评估标准的及格/不及格结果。该部分还显示从helperGenerateFilesForLaneFollowingReport函数。

运行并探索所有测试场景的结果:

您可以通过使用来模拟所有测试的系统sltest.testmanager.run.您也可以通过单击模拟系统在测试管理器应用程序。

测试模拟完成后,所有测试的结果可以在结果和工件选项卡的测试管理器。对于每个测试用例,检查静态范围(万博1manbetx模型)模型中的块与Test Manager相关联,以可视化总体的通过/失败结果。

您可以在当前工作目录中找到生成的报告。该报告包含每个测试用例通过/失败状态的详细总结和图。

在需求编辑器中验证测试状态:

打开需求编辑器并选择显示.然后,选择验证状态查看每个需求的验证状态摘要。绿色和红色条表示每个测试的模拟结果的通过/失败状态。

使用生成的代码自动化测试

HighwayLaneFollowingTestBench模型支持集成测试车道标志探测器车辆检测器前方车辆传感器融合车道跟随决策逻辑,车道跟踪控制器组件。通过软件在循环(SIL)验证执行这些组件的回归测试通常是有帮助的。如果您拥有Embedded Coder™Simulink万博1manbetx Coder™许可证,则可以为这些组件生成代码。该工作流允许您在整个模拟过程中验证所生成的代码是否产生了与系统级需求匹配的预期结果。

车道标志探测器以软件在循环模式运行。

模型='HighwayLaneFollowingTestBench/车道标志检测器';set_param(模型,“SimulationMode”“Software-in-the-loop”);

车辆检测器以软件在循环模式运行。

模型=“HighwayLaneFollowingTestBench /车辆检测器”;set_param(模型,“SimulationMode”“Software-in-the-loop”);

前方车辆传感器融合以软件在循环模式运行。

模型=“HighwayLaneFollowingTestBench/Forward Vehicle Sensor Fusion”;set_param(模型,“SimulationMode”“Software-in-the-loop”);

车道跟随决策逻辑以软件在循环模式运行。

模型=“HighwayLaneFollowingTestBench/Lane Following决策逻辑”;set_param(模型,“SimulationMode”“Software-in-the-loop”);

车道跟踪控制器以软件在循环模式运行。

模型='HighwayLaneFollowingTestBench/Lane Following Controller';set_param(模型,“SimulationMode”“Software-in-the-loop”);

现在,运行sltest.testmanager.run为所有测试场景模拟系统。测试完成后,检查生成报告中的图和结果。

再次启用MPC更新消息。

mpcverbosity (“上”);

并行自动化测试

如果您拥有并行计算工具箱™许可证,则可以配置测试管理器以使用并行池并行地执行测试。若要并行运行测试,请使用禁用运行时可视化后保存模型save_system(“LaneMarkerDetector”)save_system(“VisionVehicleDetector”)而且save_system(“HighwayLaneFollowingTestBench”).测试管理器使用默认的并行计算工具箱集群,只在本地机器上执行测试。并行运行测试可以加快执行速度,并减少获得测试结果所需的时间。有关如何从测试管理器并行配置测试的详细信息,请参见使用并行执行运行测试(万博1manbetx仿真软件测试)

相关的话题