这个例子展示了如何通过定义基于需求的场景,自动化组件测试和为这些组件生成的代码来评估车道跟踪应用程序的功能。这些组件包括车道检测、传感器融合、决策逻辑和控制。这个例子建立在高速公路车道后的例子。
高速公路车道跟踪系统引导车辆在标明的车道内行驶。它还能与同一车道上的前车保持一定的速度或安全距离。该系统通常包括车道检测、传感器融合、决策逻辑和控制组件。系统级仿真是评估集成组件功能的常用技术。模拟被配置为基于系统需求测试场景。自动运行这些模拟使回归测试能够验证系统级功能。
的高速公路车道后示例显示了如何模拟Lane-inter的系统级模型。此示例显示如何使用Simulink Test™自动测试该模型的模型。金宝app方案基于系统级要求。在此示例中,您将:
审核要求:需求描述了系统级的测试条件。创建模拟测试场景来表示这些条件。
检查试验台模型:检查包含度量评估的系统级车道跟踪测试台架模型。这些度量评估将测试平台模型与Simulink test集成在一起进行自动化测试。金宝app
禁用运行时可视化:禁用运行时可视化以减少自动化测试的执行时间。
自动化测试:测试管理器配置为模拟每个测试场景,评估成功标准和报告结果。结果在测试管理器中动态探索,并导出到外部审阅者的PDF。
使用生成的代码自动化测试:将车道检测、传感器融合、决策逻辑和控制组件配置成c++代码。在生成的代码上运行自动化测试,以验证预期的行为。
并行自动化测试:在多核计算机上使用并行计算可以减少运行测试的总执行时间。
测试系统级模型需要一个照片拟真的模拟环境。在此示例中,通过与来自EpicGames®的虚幻引擎集成,您可以启用系统级模拟。3D仿真环境需要Windows®64位平台。
如果~ ispc错误(“3D仿真环境需要Windows 64位平台”);结束
为保证仿真结果的再现性,设置随机种子。
RNG(0);
金宝appSimulink Requiremential™可让您创作,分析和管理Simulink内的要求。此示例包含十个测试场景,为每个方案定义了高级测试要求。打开要求集。
要探索测试需求和测试平台模型,请打开项目示例文件的工作副本。MATLAB将文件复制到示例文件夹,以便您可以编辑它们。的TestAutomation
文件夹包含启用自动化测试的文件。
目录(fullfile (matlabroot,“工具箱”,“开车”,“drivingdemos”));helperDrivingProjectSetup (“HighwayLaneFollowing.zip”,“workDir”pwd);
打开(“HighwayLaneFollowingTestRequirements.slreqx”)
或者,您也可以从需求Simulink中需求管理器应用程序的选项卡。金宝app
该文件中的每一行都以文本和图形格式指定了测试测试场景的车道跟踪系统的需求。关于场景_LF_前缀使您可以在没有其他车辆的情况下测试车道检测和车道之后的算法。关于场景_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”);
这个测试台模型有仿真3D场景,车道标记探测器,车辆检测器,前向车辆传感器融合,车道跟踪决策逻辑和后巷控制器和车辆动力学成分。
此测试台模型使用helperSLHighwayLaneFollowingSetup
脚本。此设置脚本需要scenarioName
作为输入。scenarioName
可以是前面描述的任何一个测试场景。要运行安装脚本,请使用以下代码:
scenarioName =“方案_lfacc_03_curve_stopngo”;allowslhighwaylanefollowingsetup(“scenarioFcnName”,场景名称);
现在可以模拟模型并可视化结果。有关仿真结果分析和测试台架模型中单个组件的设计的更多细节,请参阅高速公路车道后的例子。
在本例中,重点更多地放在使用Simulink test对不同的测试场景自动化这个测试台模型的模拟运行。金宝app的指标的评估子系统支持与Simulink Test集成系统级度量评估。金宝app该子系统使用检查静态范围(金宝app模型)块为这个集成。打开指标的评估子系统。
Open_System(“HighwayLaneFollowingTestBench /指标评估”);
在这个例子中,四个指标被用来评估车道跟踪系统。
验证横向偏差:验证车道中心线的横向偏离在相应场景的规定阈值内。在编写测试场景时定义指定的阈值。
验证在巷:验证ego车辆在整个模拟过程中是沿着道路上的一条车道行驶的。
验证时间差距:验证自我车与领先车的时间差在0.8秒以上。两辆车之间的时间间隔定义为计算出的车头时距与自我车速的比值。
验证没有碰撞:验证ego车辆在仿真过程中的任何时刻都没有与lead车辆相撞。
系统级测试台模型在模拟过程中可视化中间输出,以分析模型中不同组件。在测试自动化时,不需要这些可视化。您可以通过禁用它们来减少自动化测试的执行时间。
的运行时可视化车道标记探测器子系统。
load_system (“LaneMarkerDetector”);黑色=“LaneMarkerDetector /车道标记探测器”;set_param(黑色,'EnableSisplay','离开');
的运行时可视化车辆检测器子系统。
load_system (“VisionVehicleDetector”);黑色=“VisionVehicleDetector /视觉车辆检测器/ ACF / ACF的;set_param(黑色,“EnableDisplay”,'离开');
配置模拟3D场景配置块以无头模式运行虚幻引擎,其中3D模拟窗口被禁用。
BLK = [“HighwayLaneFollowingTestBench /模拟3 d场景/”,...'模拟3D场景配置'];set_param(黑色,“EnableWindow”,'离开');
测试管理器被配置为自动化车道跟踪应用程序的测试。打开HighwayLaneAledingTestassessments.Mldatx.
测试管理器中的测试文件。
sltestmgr;测试文件= sltest.testmanager.load (“HighwayLaneFollowingTestAssessments.mldatx”);
观察之前在此文件中编写的填充测试用例。每个测试用例都链接到需求编辑器中相应的需求,以实现可跟踪性。每个测试用例使用POST-LOAD
回调以使用适当的输入运行设置脚本,并配置输出视频文件名。在模拟测试用例之后,它调用helperGenerateFilesForLaneFollowingReport
来自清理
回调以生成绘图的图表高速公路车道后的例子。
运行并探索单个测试场景的结果:
要减少命令窗口输出,请关闭MPC更新消息。
mpcverbosity ('离开');
来测试系统级模型scenario_LFACC_03_Curve_StopnGo
来自Simulink test的测试场金宝app景,使用下面的代码:
testSuite = getTestSuiteByName(测试文件,测试场景的);testCase = getTestCaseByName (testSuite,“scenario_LFACC_03_Curve_StopnGo”);suckulobj =运行(testcase);
要在仿真后生成报告,请使用此代码:
sltest.testmanager.report(resultobj,“Report.pdf”,...,“标题”,'高速公路巷后',...“IncludeMATLABFigures”,真的,...“IncludeErrorMessages”,真的,...“IncludeTestResults”,0,“LaunchReport”,真正的);
检查报告Report.pdf
.观察到这一点测试环境部分显示运行测试的平台以及用于测试的MATLAB®版本。的总结部分以秒为单位显示模拟的测试和持续时间的结果。的结果部分显示基于评估标准的通过/不通过结果。本节还显示从helperGenerateFilesForLaneFollowingReport
函数。
运行并探索所有测试场景的结果:
您可以通过使用模拟所有测试的系统sltest.testmanager.run
.或者,您可以通过单击来模拟系统玩在测试管理器应用程序。
完成测试模拟后,可以在结果和工件标签的测试管理器。对于每个测试用例检查静态范围(金宝app模型)模型中的块与测试管理器相关联,以可视化整个通行证/失败结果。
您可以在当前工作目录中找到生成的报告。此报告包含每个测试用例的传递/失败状态和绘图的详细摘要。
在需求编辑器中验证测试状态:
打开需求编辑器并选择显示.然后,选择验证状态要查看每个要求的验证状态摘要。绿色和红色条表示每个测试的仿真结果的通过/失败状态。
的HighwayLaneFollowingTestBench
型号可以集成测试车道标记探测器,车辆检测器,前向车辆传感器融合,车道跟踪决策逻辑,后巷控制器成分。通过循环软件(SIL)验证,对这些组件进行回归测试通常有助于。如果您有嵌入式编码器™Simulink Coder™许可金宝app证,则可以为这些组件生成代码。此工作流程允许您验证生成的代码是否会产生在整个仿真中匹配系统级要求的预期结果。
集车道标记探测器以软件在循环模式运行。
模型=“HighwayLaneFollowingTestBench /车道标记探测器”;set_param(模型,“SimulationMode”,“Software-in-the-loop”);
集车辆检测器以软件在循环模式运行。
模型=“HighwayLaneFollowingTestBench /车辆检测器”;set_param(模型,“SimulationMode”,“Software-in-the-loop”);
集前向车辆传感器融合以软件在循环模式运行。
模型='HighwayLaneafledingTestbench /前车传感器融合';set_param(模型,“SimulationMode”,“Software-in-the-loop”);
集车道跟踪决策逻辑以软件在循环模式运行。
模型='HighwayLaneFollowingTestBench/Lane Following Decision Logic';set_param(模型,“SimulationMode”,“Software-in-the-loop”);
集后巷控制器以软件在循环模式运行。
模型='HighwayLaneAledingTestbench / Lane后控制器';set_param(模型,“SimulationMode”,“Software-in-the-loop”);
现在,运行sltest.testmanager.run
为所有测试场景模拟系统。测试完成后,检查生成的报告中的图和结果。
再次启用MPC更新消息。
mpcverbosity (“上”);
如果您拥有并行计算工具箱™许可,那么您可以配置测试管理器以使用并行池并行执行测试。要并行运行测试,请在禁用运行时可视化后保存模型save_system(“LaneMarkerDetector”)
,save_system(“VisionVehicleDetector”)
和save_system(“HighwayLaneFollowingTestBench”)
.测试管理器使用默认的并行计算工具箱集群,并仅在本地计算机上执行测试。并行运行测试可以加快执行速度,并减少获取测试结果所需的时间。有关如何从测试管理器并行配置测试的详细信息,请参见使用并行执行运行测试(金宝app仿真软件测试).