这个例子展示了如何通过定义基于需求的场景,自动化组件测试和为这些组件生成的代码来评估车道跟踪应用程序的功能。这些组件包括车道检测、传感器融合、决策逻辑和控制。这个例子建立在高速公路车道后(自动驾驶工具箱)的例子。
公路车道跟驰系统引导车辆在标记车道内行驶。它还与同一车道上的前车保持设定的速度或安全距离。该系统通常包括车道检测、传感器融合、决策逻辑和控制组件。系统级模拟是评估功能的常用技术集成组件的。模拟配置为基于系统需求测试场景。自动运行这些模拟可以进行回归测试,以验证系统级功能。
的高速公路车道后(自动驾驶工具箱)示例显示了如何模拟Lane-inter的系统级模型。此示例显示如何使用Simulink Test™自动测试该模型的模型。金宝app方案基于系统级要求。在这个例子中,您将:
审核要求:要求描述了系统级测试条件。创建模拟测试场景以表示这些条件。
检查试验台模型:检查包含度量评估的系统级车道跟踪测试台架模型。这些度量评估将测试平台模型与Simulink test集成在一起进行自动化测试。金宝app
禁用运行时可视化:禁用运行时可视化以减少自动测试的执行时间。
自动化测试:测试管理器配置为模拟每个测试场景,评估成功标准和报告结果。结果在测试管理器中动态探索,并导出到外部审稿人的PDF。
使用生成的代码自动测试:通道检测,传感器融合,决策逻辑和控制组件被配置为生成C ++代码。自动化测试在生成的代码上运行以验证预期的行为。
并行自动化测试:在多核计算机上使用并行计算可以减少运行测试的总执行时间。
测试系统级模型需要照片级真实感模拟环境。在本例中,您可以通过与Epic Games®的虚幻引擎集成来启用系统级模拟。3D模拟环境需要Windows®64位平台。
如果~ispc错误(“3D仿真环境需要Windows 64位平台”);终止
为确保模拟结果的再现性,请设置随机种子。
RNG(0);
金宝appSimulink Requiremential™可让您创作,分析和管理Simulink内的要求。此示例包含十个测试场景,为每个场景定义了高级测试要求。打开要求集。
要探索测试要求和测试台式模型,请打开项目示例文件的工作副本。MATLAB将文件复制到示例文件夹,以便您可以编辑它们。的试剂
文件夹包含启用自动化测试的文件。
addpath(完整文件(matlabroot、,'工具箱',“开车”,“drivingdemos”));helperdrivingprojectsetup(“公路线如下,邮编”,'工作'pwd);
打开(“HighwayLaneFollowingTestRequirements.slreqx”)
或者,您还可以从中打开文件要求Simulink中Requirements Manager应用程序的选项卡。金宝app
此文件中的每一行指定用于测试车道后系统以进行测试场景的文本和图形格式的要求。这种情况的情景情景_前缀使您能够在没有其他车辆的情况下测试车道检测和车道之后的算法。这种情况的情景场景_LFACC_前缀使您可以使用道路上的其他车辆测试车道检测,通道跟随和ACC行为。
场景\u LF\u 01 \u直道\u右车道
-直道场景,ego车辆位于右车道。
scenario_LF_02_Straight_LeftLane
-直路场景,自我车辆在左车道。
场景\u LF\u 03\u曲线\u左车道
- 左车道弯曲的道路情景与自我车辆。
场景_LF_04_Curve_Rightlane.
-弯道场景,ego车辆位于右车道。
scenario_LFACC_01_Curve_DecelTarget
-弯路场景,前车在自我车道减速。
场景_lfacc_02_curve_autoretarget.
-在ego车道上改变引导车辆的弯曲道路场景。此场景测试ego车辆在沿曲线行驶时重新定位到新引导车辆的能力。
场景_lfacc_03_curve_stopngo.
- 弯曲道路场景,带有铅车辆在自我车道上减速。
scenario_LFACC_04_Curve_CutInOut
-弯道场景中,相邻车道上有一辆快速行驶的汽车驶入ego车道,并从ego车道驶出。
scenario_LFACC_05_Curve_CutInOut_TooClose
-弯道场景中,相邻车道上有一辆快速行驶的汽车驶入ego车道,并从ego车道上猛烈驶出。
scenario_LFACC_06_Straight_StopandGoLeadCar
-直道场景,前车在自我车道抛锚。
这些需求被实现为测试场景,其名称与在HighwayLaneFollowingTestBench
模型。
这个例子重新使用了HighwayLaneFollowingTestBench
模型来自高速公路车道后(自动驾驶工具箱)的例子。打开测试台模型。
Open_System(“HighwayLaneFollowingTestBench”);
这个测试台模型有三维场景模拟,车道标记探测器,车辆检测器,前向车辆传感器融合,决策逻辑之后的车道和车道后控制器和车辆动力学组件。
使用该测试台模型使用HelpersLHHIGHWAYLANEFLOWINGSETUP
脚本。此安装脚本需要scenarioName
作为输入。scenarioName
可以是前面描述的任何一个测试场景。要运行安装脚本,请使用以下代码:
场景=“场景\u LFACC\u 03\u曲线\u stopengo”; HelpersLHHIGHWAYLANEFLOWINGSETUP(“方案”,场景名称);
现在可以模拟模型并可视化结果。有关仿真结果分析和试验台模型中单个部件设计的更多详细信息,请参阅高速公路车道后(自动驾驶工具箱)的例子。
在此示例中,使用Simulink测试对于不同的测试场景,重点是自动化为此测试台式模型的模拟运行。金宝app的指标评估子系统支持与Simulink Test集成系统级度量评估。金宝app该子系统使用检查静态范围(金宝appSimulink)块为这个集成。打开指标评估子系统。
Open_System(“HighwayLaneFollowingTestBench /指标评估”);
在这个例子中,四个指标被用来评估车道跟踪系统。
验证横向偏差:验证与车道中心线的横向偏差是否在相应场景的规定阈值内。在编写测试场景时定义了规定阈值。
验证Lane.:验证ego车辆在整个模拟过程中是沿着道路上的一条车道行驶的。
验证时间差距:验证自我车辆和铅载体之间的时间间隙高于0.8秒。两辆车之间的时间间隙被定义为计算出的前途距离与自我车辆速度的比率。
确认没有碰撞:验证自我车辆在模拟期间的任何时候都不会与铅车辆碰撞。
系统级测试台模型在模拟过程中可视化中间输出,以分析模型中的不同组件。当测试自动化时,不需要这些可视化。您可以通过禁用自动测试来减少执行时间。
的运行时可视化车道标记探测器子系统。
load_system (“LaneMarkerDetector”);黑色='LaneMarkerDetector / Lane标记探测器';set_param(黑色,“启用显示”,'离开');
的运行时可视化车辆检测器子系统。
load_system ('Visionvehicledetector');黑色=“VisionVehicleDetector /视觉车辆检测器/ ACF / ACF的;set_param(黑色,“EnableDisplay”,'离开');
配置模拟3D场景配置(自动驾驶工具箱)块以无头模式运行虚幻引擎,其中3D模拟窗口被禁用。
BLK = [“HighwayLaneFollowingTestBench /模拟3 d场景/”,...“模拟3D场景配置”];设置参数(黑色,“EnableWindow”,'离开');
测试管理器配置为自动化通道后应用程序的测试。打开HighwayLane following Testassessments.mldatx
测试文件在测试管理器中。
sltestmgr;测试文件= sltest.testmanager.load (“HighwayLaneFollowingTestAssessments.mldatx”);
观察之前在此文件中编写的填充测试用例。每个测试用例都链接到需求编辑器中相应的需求,以实现可跟踪性。每个测试用例使用后加载
回调以使用适当的输入运行设置脚本,并配置输出视频文件名。在模拟测试用例之后,它调用helperGenerateFilesForLaneFollowingReport
来自清理
回调生成绘图的图表高速公路车道后(自动驾驶工具箱)的例子。
运行并探索单个测试场景的结果:
要减少命令窗口输出,请关闭MPC更新消息。
mpcverbosity('离开');
来测试系统级模型场景_lfacc_03_curve_stopngo.
来自Simulink test的测试场金宝app景,使用下面的代码:
testsuite = gettestsuitebyname(testfile,测试场景的);testCase=getTestCaseByName(testSuite,“scenario_LFACC_03_Curve_StopnGo”);suckulobj =运行(testcase);
要在模拟后生成报告,请使用以下代码:
sltest.testmanager.report(sucheobj,'报告.pdf',...,'标题',“高速公路车道后”,...“IncludeMATLABFigures”,真的,...“IncludeErrorMessages”,真的,...“IncludeTestResults”,0,“启动报告”,真正的);
检查报告Report.pdf
.观察到这一点测试环境部分显示运行测试的平台以及用于测试的MATLAB®版本。的总结部分显示了测试的结果和模拟的持续时间,以秒为单位。的结果部分显示基于评估标准的通过/不通过结果。本节还显示从helperGenerateFilesForLaneFollowingReport
作用
运行并探索所有测试场景的结果:
您可以使用以下命令模拟所有测试的系统sltest.testmanager.run
.或者,您可以通过单击模拟系统玩在测试管理器应用程序。
测试模拟完成后,可在中查看所有测试的结果结果和工件测试管理器的选项卡。对于每个测试用例,检查静态范围(金宝appSimulink)模型中的块与测试管理器关联,以可视化总体通过/失败结果。
您可以在当前工作目录中找到生成的报告。该报告包含每个测试用例的通过/失败状态的详细摘要和图。
验证需求编辑器中的测试状态:
打开需求编辑器并选择显示.然后,选择验证状态查看每个需求的验证状态摘要。绿条和红条表示每个测试的模拟结果的通过/失败状态。
的HighwayLaneFollowingTestBench
型号可实现综合测试车道标记探测器,车辆检测器,前向车辆传感器融合,决策逻辑之后的车道, 和车道后控制器组件。通过软件在环(SIL)验证对这些组件进行回归测试通常很有帮助。如果您有嵌入式编码器™ Simulink编码器™ 许可证,然后您可以为这些组件生成代码。此工作流允许您验证生成的代码生成的预期结果是否与整个仿真过程中的系统级要求相匹配。金宝app
集车道标记探测器以软件在循环模式运行。
模型=“公路车道跟踪测试台/车道标记检测器”;设置参数(模型,“SimulationMode”,'软件 - 循环');
集车辆检测器以软件在循环模式运行。
模型='HighwayLaneaLearingTestbench /车辆探测器';设置参数(模型,“SimulationMode”,'软件 - 循环');
集前向车辆传感器融合以软件在循环模式运行。
模型='HighwayLaneSealingTestbench /前车辆传感器融合';设置参数(模型,“SimulationMode”,'软件 - 循环');
集决策逻辑之后的车道以软件在循环模式运行。
模型='HighwayLaneFollowingTestBench/Lane Following Decision Logic';设置参数(模型,“SimulationMode”,'软件 - 循环');
集车道后控制器以软件在循环模式运行。
模型=“HighwayLaneFollowingTestBench /后巷控制器”;设置参数(模型,“SimulationMode”,'软件 - 循环');
现在,运行sltest.testmanager.run
为所有测试场景模拟系统。测试完成后,检查生成的报告中的图和结果。
再次启用MPC更新消息。
mpcverbosity(“上”);
如果您拥有并行计算工具箱™许可,那么您可以配置测试管理器以使用并行池并行执行测试。要并行运行测试,请在禁用运行时可视化后保存模型save_system(“LaneMarkerDetector”)
,save_system('Visionvehicledetector')
和保存_系统(“公路车道以下测试台”)
. 测试管理器使用默认的并行计算工具箱集群,仅在本地计算机上执行测试。并行运行测试可以加快执行速度并减少获得测试结果所需的时间。有关如何从测试管理器并行配置测试的更多信息,请参阅使用并行执行运行测试(金宝app模拟链接测试).