高速公路车道跟随自动化测试
这个例子展示了如何通过基于需求定义场景、自动化测试组件以及为这些组件生成的代码来评估车道跟踪应用程序的功能。这些组件包括车道检测、传感器融合、决策逻辑和控制。本示例构建在高速公路车道后的例子。
简介
高速公路车道跟踪系统引导车辆在标明的车道内行驶。它还能与同一车道上的前车保持固定的速度或安全距离。该系统通常包括车道检测、传感器融合、决策逻辑和控制组件。系统级模拟是评估集成组件功能的常用技术。根据系统需求配置仿真,以测试场景。自动运行这些模拟使回归测试能够验证系统级功能。
的高速公路车道后示例演示了如何模拟车道跟踪的系统级模型。这个例子展示了如何使用Simulink Test™针对多个场景自动化测试该模型。这些场景基于系统级需求。在这个例子中,你将:
审核要求:需求描述了系统级测试条件。创建模拟测试场景来表示这些条件。
回顾试验台模型:回顾包含度量评估的系统级车道跟踪测试台架模型。这些度量评估将测试台架模型与Simulink测试集成起来,用于自动化测试。
禁用运行时可视化:禁用运行时可视化,以减少自动化测试的执行时间。
自动化测试:测试管理器被配置为模拟每个测试场景,评估成功标准,并报告结果。结果在测试管理器中被动态地探索,并导出为PDF供外部审查员使用。
使用生成的代码自动测试:车道检测、传感器融合、决策逻辑和控制组件被配置为生成c++代码。自动测试在生成的代码上运行,以验证预期的行为。
并行自动化测试:在多核计算机上使用并行计算可以减少运行测试的总体执行时间。
测试系统级模型需要一个逼真的仿真环境。在本例中,您通过与Epic Games®的虚幻引擎集成来启用系统级模拟。3D仿真环境要求Windows®64位平台。
如果~ ispc错误(3D模拟环境需要Windows 64位平台);结束
为保证模拟结果的重现性,设置随机种子。
rng (0);
评审需求
需求工具箱™允许您在Simulink中编写、分析和管理需求。此示例包含十个测试场景,为每个场景定义了高级测试需求。打开需求集。
为了探索测试需求和测试台架模型,打开项目示例文件的工作副本。MATLAB将这些文件复制到一个示例文件夹中,以便您可以编辑它们。的TestAutomation
文件夹包含启用自动测试的文件。
目录(fullfile (matlabroot,“工具箱”,“开车”,“drivingdemos”));helperDrivingProjectSetup (“HighwayLaneFollowing.zip”,“workDir”pwd);
打开(“HighwayLaneFollowingTestRequirements.slreqx”)
或者,您也可以从需求选项卡。
该文件中的每一行都以文本和图形格式指定了测试场景中车道跟随系统的需求。的场景scenario_LF_前缀使您能够测试车道检测和车道跟踪算法,而不受其他车辆的阻碍。的场景scenario_LFACC_前缀使您能够测试车道检测,车道跟踪,和ACC行为与道路上的其他车辆。
scenario_LF_01_Straight_RightLane
-直路场景,自我车辆在右车道。scenario_LF_02_Straight_LeftLane
-直路场景,自我车辆在左车道。scenario_LF_03_Curve_LeftLane
-弯道场景,自我车辆在左车道。scenario_LF_04_Curve_RightLane
-弯道场景,自我车辆在右车道。scenario_LFACC_01_Curve_DecelTarget
-弯道场景,引路车辆在自我车道减速。scenario_LFACC_02_Curve_AutoRetarget
-弯道场景,在自我车道上更换主要车辆。这个场景测试自我车辆在沿着弯道行驶时重新瞄准新的先导车辆的能力。scenario_LFACC_03_Curve_StopnGo
-弯道场景,领头车在自我车道减速。scenario_LFACC_04_Curve_CutInOut
-弯道场景,一辆快速行驶的汽车在相邻车道上切入自我车道,又从自我车道切入。scenario_LFACC_05_Curve_CutInOut_TooClose
-弯道场景,一辆快速行驶的汽车在相邻车道上切入自我车道,并积极地从自我车道切入。scenario_LFACC_06_Straight_StopandGoLeadCar
直路场景,领头车在自我车道抛锚。
这些需求作为测试场景实现,其名称与中使用的场景相同HighwayLaneFollowingTestBench
模型。
回顾试验台模型
此示例重用HighwayLaneFollowingTestBench
模型的高速公路车道后的例子。打开测试台架模型。
open_system (“HighwayLaneFollowingTestBench”);
这个试验台模型有模拟3 d场景,车道标记探测器,车辆检测器,前向车辆传感器融合,车道跟随决策逻辑而且后巷控制器而且车辆动力学组件。
方法配置此测试台架模型helperSLHighwayLaneFollowingSetup
脚本。这个设置脚本采用scenarioName
作为输入。scenarioName
可以是前面描述的任何一个测试场景。要运行安装脚本,请使用以下代码:
scenarioName =“scenario_LFACC_03_Curve_StopnGo”;helperSLHighwayLaneFollowingSetup (“scenarioFcnName”, scenarioName);
现在可以模拟模型并可视化结果。有关仿真结果分析和试验台模型中单个组件设计的更多详细信息,请参阅高速公路车道后的例子。
在这个例子中,重点更多的是在不同的测试场景中使用Simulink test为这个测试台架模型自动化模拟运行。的指标的评估子系统支持与Simulink Test集成系统级度量评估。该子系统使用检查静态范围(模型)块用于此集成。打开指标的评估子系统。
open_system (“HighwayLaneFollowingTestBench /指标评估”);
在本例中,使用四个指标来评估车道跟踪系统。
验证横向偏差:验证与车道中心线的横向偏差是否在相应场景的规定阈值内。规定的阈值是在创建测试场景时定义的。
验证在巷:验证自我车辆在整个模拟过程中沿着道路上的其中一条车道行驶。
验证时间差距:验证自我车与先导车之间的时间差距大于0.8秒。两辆车之间的时间差距定义为计算的车头时距与自我车辆速度的比值。
验证没有碰撞:验证自我载具在模拟过程中的任何一点都没有与先导载具相撞。
禁用运行可视化
系统级测试台架模型可视化模拟过程中的中间输出,以分析模型中的不同组件。自动化测试时不需要这些可视化。您可以通过禁用自动化测试来减少自动化测试的执行时间。
控件的运行时可视化禁用车道标记探测器子系统。
load_system (“LaneMarkerDetector”);黑色=“LaneMarkerDetector /车道标记探测器”;set_param(黑色,“EnableDisplays”,“关闭”);
控件的运行时可视化禁用车辆检测器子系统。
load_system (“VisionVehicleDetector”);黑色=“VisionVehicleDetector /视觉车辆检测器/ ACF / ACF的;set_param(黑色,“EnableDisplay”,“关闭”);
配置仿真3D场景配置块以无头模式运行虚幻引擎,其中3D模拟窗口是禁用的。
黑色= [“HighwayLaneFollowingTestBench /模拟3 d场景/”,...“模拟3D场景配置”];set_param(黑色,“EnableWindow”,“关闭”);
自动化测试
测试管理器被配置为自动测试路径跟踪应用程序。打开HighwayLaneFollowingTestAssessments.mldatx
测试管理器中的test文件。
sltestmgr;测试文件= sltest.testmanager.load (“HighwayLaneFollowingTestAssessments.mldatx”);
观察先前在这个文件中编写的填充测试用例。每个测试用例都链接到需求编辑器中相应的需求以实现可追溯性。每个测试用例都使用POST-LOAD
回调函数以使用适当的输入运行设置脚本并配置输出视频文件名。在模拟测试用例之后,它调用helperGenerateFilesForLaneFollowingReport
从清理
回调来生成在高速公路车道后的例子。
运行并探索单个测试场景的结果:
要减少命令窗口输出,请关闭MPC更新消息。
mpcverbosity (“关闭”);
来测试系统级模型scenario_LFACC_03_Curve_StopnGo
从Simulink test测试场景,使用以下代码:
testSuite = getTestSuiteByName(测试文件,测试场景的);testCase = getTestCaseByName (testSuite,“scenario_LFACC_03_Curve_StopnGo”);resultObj =运行(testCase);
要在模拟后生成报告,使用以下代码:
sltest.testmanager.report (resultObj“Report.pdf”,...,“标题”,“高速公路车道后”,...“IncludeMATLABFigures”,真的,...“IncludeErrorMessages”,真的,...“IncludeTestResults”0,“LaunchReport”,真正的);
检查报告Report.pdf
.观察到的测试环境部分显示了运行测试的平台和用于测试的MATLAB®版本。的总结部分以秒为单位显示了测试的结果和模拟的持续时间。的结果部分显示了基于评估标准的通过/不通过结果。的日志记录的图helperGenerateFilesForLaneFollowingReport
函数。
运行并探索所有测试场景的结果:
可以为所有测试模拟该系统sltest.testmanager.run
.或者,您也可以通过单击来模拟系统玩在测试管理器应用程序中。
完成测试模拟之后,可以在结果和工件选项卡的测试管理器。对于每个测试用例,检查静态范围(模型)模型中的块与Test Manager相关联,以可视化总体通过/失败结果。
您可以在当前工作目录中找到生成的报告。该报告包含每个测试用例通过/失败状态的详细摘要和图。
在需求编辑器中验证测试状态:
打开需求编辑器并选择显示.然后,选择验证状态查看每个需求的验证状态摘要。绿色和红色条表示每个测试模拟结果的通过/失败状态。
使用生成的代码自动测试
的HighwayLaneFollowingTestBench
的集成测试车道标记探测器,车辆检测器,前向车辆传感器融合,车道跟随决策逻辑,后巷控制器组件。通过软件在循环(SIL)验证执行这些组件的回归测试通常是有帮助的。如果您有Embedded Coder™Simulink Coder™许可证,那么您可以为这些组件生成代码。此工作流允许您在整个模拟过程中验证生成的代码是否产生了与系统级需求相匹配的预期结果。
集车道标记探测器以“在环软件”模式运行。
模型=“HighwayLaneFollowingTestBench /车道标记探测器”;set_param(模型,“SimulationMode”,“Software-in-the-loop”);
集车辆检测器以“在环软件”模式运行。
模型=“HighwayLaneFollowingTestBench /车辆检测器”;set_param(模型,“SimulationMode”,“Software-in-the-loop”);
集前向车辆传感器融合以“在环软件”模式运行。
模型=“HighwayLaneFollowingTestBench/向前车辆传感器融合”;set_param(模型,“SimulationMode”,“Software-in-the-loop”);
集车道跟随决策逻辑以“在环软件”模式运行。
模型=“HighwayLaneFollowingTestBench/Lane Following Decision Logic”;set_param(模型,“SimulationMode”,“Software-in-the-loop”);
集后巷控制器以“在环软件”模式运行。
模型=“HighwayLaneFollowingTestBench /后巷控制器”;set_param(模型,“SimulationMode”,“Software-in-the-loop”);
现在,运行sltest.testmanager.run
为所有测试场景模拟系统。在完成测试之后,检查生成报告中的图和结果。
再次启用MPC更新消息。
mpcverbosity (“上”);
并行自动化测试
如果您拥有并行计算工具箱™许可证,那么您可以配置测试管理器以使用并行池并行执行测试。要并行运行测试,请在使用禁用运行时可视化后保存模型save_system(“LaneMarkerDetector”)
,save_system(“VisionVehicleDetector”)
而且save_system(“HighwayLaneFollowingTestBench”)
.测试管理器使用默认的并行计算工具箱集群,并仅在本地计算机上执行测试。并行运行测试可以加快执行速度,并减少获得测试结果所需的时间。有关如何从测试管理器并行配置测试的详细信息,请参见使用并行执行运行测试(仿真软件测试).