主要内容

公路车道跟踪的自动化测试

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

介绍

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

高速公路车道后示例演示了如何模拟一个系统级的车道跟踪模型。这个例子展示了如何使用Simulink Test™在多个场景下自动化测试模型。金宝app场景基于系统级需求。在这个例子中,你会:

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

  2. 检查试验台模型:检查包含度量评估的系统级车道跟踪测试台架模型。这些度量评估将测试平台模型与Simulink test集成在一起进行自动化测试。金宝app

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

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

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

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

测试系统级模型需要照片级真实感模拟环境。在本例中,您可以通过与Epic Games®的虚幻引擎集成来启用系统级模拟。3D模拟环境需要Windows®64位平台。

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

为保证仿真结果的再现性,设置随机种子。

rng (0);

审查要求

金宝appSimulink Requirements™允许您在Simulink中编写、分析和管理需求。此示例包含10个测试场景,为每个场景定义了高级测试需求。打开需求集。

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

addpath(完整文件(matlabroot、,“工具箱”“开车”“drivingdemos”));helperDrivingProjectSetup(“公路线如下,邮编”“workDir”pwd);
打开(“符合测试要求的公路线路。slreqx”

或者,您也可以从需求Simulink中Requirements Manager应用程序的选项卡。金宝app

该文件中的每一行都以文本和图形格式指定了测试测试场景的车道跟踪系统的需求。关于情景_前缀使您能够测试没有其他车辆阻碍的车道检测和车道跟随算法。关于scenario_LFACC_前缀使您能够测试道路上其他车辆的车道检测、车道跟随和ACC行为。

  1. 场景\u LF\u 01 \u直道\u右车道-直道场景,ego车辆位于右车道。

  2. 场景\u LF\u 02 \u直线\u左车道-直路场景,自我车辆在左车道。

  3. 场景\u LF\u 03\u曲线\u左车道-弯道场景,小野车在左车道

  4. scenario_LF_04_Curve_RightLane-弯道场景,ego车辆位于右车道。

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

  6. scenario_LFACC_02_Curve_AutoRetarget-在ego车道上改变引导车辆的弯曲道路场景。此场景测试ego车辆在沿曲线行驶时重新定位到新引导车辆的能力。

  7. scenario_LFACC_03_Curve_StopnGo-弯路场景,前车在自我车道减速。

  8. 场景\ LFACC \ 04 \曲线\执行-弯道场景中,相邻车道上有一辆快速行驶的汽车驶入ego车道,并从ego车道驶出。

  9. scenario_LFACC_05_Curve_CutInOut_TooClose-弯道场景中,相邻车道上有一辆快速行驶的汽车驶入ego车道,并从ego车道上猛烈驶出。

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

这些需求被实现为测试场景,其名称与在HighwayLaneFollowingTestBench模型。

评审试验台模型

这个例子重用了HighwayLaneFollowingTestBench模型来自高速公路车道后实例打开测试台模型。

open_system (“HighwayLaneFollowingTestBench”);

本试验台模型具有三维场景模拟车道标记探测器车辆检测器前向车辆传感器融合车道跟踪决策逻辑后巷控制器车辆动力学组件。

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

scenarioName =“场景\u LFACC\u 03\u曲线\u stopengo”; HelpersLHHIGHWAYLANEFLOWINGSETUP(“scenarioFcnName”, scenarioName);

现在可以模拟模型并可视化结果。有关仿真结果分析和测试台架模型中单个组件的设计的更多细节,请参阅高速公路车道后的例子。

在本例中,重点更多地放在使用Simulink test对不同的测试场景自动化这个测试台模型的模拟运行。金宝app的指标的评估子系统支持与Simulink Test集成系统级度量评估。金宝app该子系统使用检查静态范围(金宝app模型)块为这个集成。打开指标的评估子系统。

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

在本例中,四个指标用于评估车道跟驰系统。

  • 验证横向偏差:验证与车道中心线的横向偏差是否在相应场景的规定阈值内。在编写测试场景时定义了规定阈值。

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

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

  • 确认没有碰撞:验证ego车辆在仿真过程中的任何时刻都没有与lead车辆相撞。

禁用运行时可视化

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

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

load_system (“LaneMarkerDetector”);黑色=“LaneMarkerDetector /车道标记探测器”;set_param(黑色,“启用显示”“关闭”);

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

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

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

黑色= [“HighwayLaneFollowingTestBench /模拟3 d场景/”...“模拟3D场景配置”];设置参数(黑色,“启用窗口”“关闭”);

自动化测试

测试管理器被配置为自动化车道跟踪应用程序的测试。打开HighwayLane following Testassessments.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”);resultObj =运行(testCase);

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

sltest.testmanager.report (resultObj“Report.pdf”...“标题”“高速公路车道后”...“IncludeMATLABFigures”,真的,...“IncludeErrorMessages”,真的,...“包括结果”,0,“启动报告”,真正的);

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

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

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

测试模拟完成后,可在中查看所有测试的结果结果和工件标签的测试管理器。对于每个测试用例检查静态范围(金宝app模型)模型中的块与测试管理器关联,以可视化总体通过/失败结果。

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

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

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

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

HighwayLaneFollowingTestBench模型支持的集成测试车道标记探测器车辆检测器前向车辆传感器融合车道跟踪决策逻辑,后巷控制器组件。通过软件在环(SIL)验证对这些组件进行回归测试通常很有帮助。如果您有嵌入式编码器™ Simulink编码器™ 许可证,然后您可以为这些组件生成代码。此工作流允许您验证生成的代码生成的预期结果是否与整个仿真过程中的系统级要求相匹配。金宝app

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

模型=“公路车道跟踪测试台/车道标记检测器”;设置参数(模型,“SimulationMode”“Software-in-the-loop”);

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

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

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

模型=“高速公路跟踪测试台/前方车辆传感器融合”;设置参数(模型,“SimulationMode”“Software-in-the-loop”);

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

模型='HighwayLaneFollowingTestBench/Lane Following Decision Logic';设置参数(模型,“SimulationMode”“Software-in-the-loop”);

后巷控制器以软件在循环模式运行。

模型=“HighwayLaneFollowingTestBench /后巷控制器”;设置参数(模型,“SimulationMode”“Software-in-the-loop”);

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

再次启用MPC更新消息。

mpcverbosity (“上”);

并行自动化测试

如果您拥有并行计算工具箱™许可,那么您可以配置测试管理器以使用并行池并行执行测试。要并行运行测试,请在禁用运行时可视化后保存模型save_system(“LaneMarkerDetector”)save_system(“VisionVehicleDetector”)保存_系统(“公路车道以下测试台”). 测试管理器使用默认的并行计算工具箱集群,仅在本地计算机上执行测试。并行运行测试可以加快执行速度并减少获得测试结果所需的时间。有关如何从测试管理器并行配置测试的更多信息,请参阅使用并行执行运行测试(金宝app模拟链接测试)

相关话题