主要内容

高速公路车道跟踪自动测试

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

介绍

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

高速公路车道后(自动驾驶工具箱)示例演示了如何模拟一个系统级的车道跟踪模型。这个例子展示了如何使用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个测试场景,为每个场景定义了高级测试需求。打开需求集。

打开(“HighwayLaneFollowingTestRequirements.slreqx”

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

该文件中的每一行都以文本和图形格式指定了测试测试场景的车道跟踪系统的需求。关于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”);

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

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

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

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

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

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

在这个例子中,四个指标被用来评估车道跟踪系统。

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

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

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

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

禁用运行可视化

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

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

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”“关闭”);

自动化测试

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

sltestmgr;sltest.testmanager.load (“HighwayLaneFollowingMetricAssessments.mldatx”);

观察之前在此文件中编写的填充测试用例。每个测试用例都链接到需求编辑器中相应的需求,以实现可跟踪性。每个测试用例使用POST-LOAD回调以使用适当的输入运行设置脚本,并配置输出视频文件名。在模拟测试用例之后,它调用helperGenerateFilesForLaneFollowingReport清理回调来生成图高速公路车道后(自动驾驶工具箱)的例子。

运行并探索单个测试场景的结果:

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

mpcverbosity (“关闭”);

来测试系统级模型scenario_LFACC_03_Curve_StopnGo来自Simulink test的测试场金宝app景,使用下面的代码:

测试文件= sltest.testmanager.TestFile (“HighwayLaneFollowingMetricAssessments.mldatx”);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金宝app Coder™许可证,那么您可以为这些组件生成代码。该工作流允许您验证所生成的代码在整个模拟过程中生成的预期结果是否符合系统级需求。

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

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

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

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

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

模型=“高速公路跟踪测试台/前方车辆传感器融合”;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”).测试管理器使用默认的并行计算工具箱集群,并仅在本地计算机上执行测试。并行运行测试可以加快执行速度,并减少获取测试结果所需的时间。有关如何从测试管理器并行配置测试的详细信息,请参见使用并行执行运行测试