主要内容

高速公路车道跟随控制和传感器融合的自动化测试

本示例展示了如何将传感器融合和控制组件集成到高速公路车道下面的应用中。它还展示了如何通过基于需求定义场景、自动化组件测试以及为这些组件生成代码来评估该集成的功能。

简介

传感器融合和车道跟踪控制器组件是高速公路车道跟踪应用的两个基本组件。传感器融合组件融合来自摄像头和雷达传感器的信息,以探测车辆及其轨迹。车道跟踪控制器产生车辆动力学控制信号。它利用基于感知的车道检测为横向控制提供转向角度,为纵向控制提供加速度。使用不同测试场景的度量来模拟和测试这两个组件之间的交互是很重要的。自动运行这些模拟使回归测试能够验证系统级功能。

这个例子支持使用系统级测试平台模型集成和模拟这两个组件。它展示了如何使用Simulink Test™对多个场景进行自动化测试。金宝app这些场景基于系统级需求。此外,它还展示了如何使用软件在循环(SIL)模拟验证生成的代码。在这个例子中,你:

  1. 评审需求—需求描述系统级测试条件。创建模拟测试场景来表示这些条件。

  2. 探索试验台模型-该模型包含传感器融合、控制、车辆动力学、传感器和评估功能的指标。度量评估集成了试验台模型和Simulink test进行自动化测试。金宝app

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

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

  5. 使用生成的代码自动化测试—传感器融合、决策逻辑和控制组件配置为生成c++代码。您可以对生成的代码运行自动测试,以验证预期的行为。

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

测试传感器融合和控制算法的集成需要一个逼真的仿真环境。在本例中,您将通过与Epic Games®的虚幻引擎®集成来启用系统级模拟。3D仿真环境要求Windows®64位平台。

如果~ ispc错误([“3D模拟只支持微软”金宝appchar (174),“窗口”char (174),“。”])结束

评审需求

为了探索需求,打开项目示例文件的工作副本。MATLAB将文件复制到示例文件夹中,以便您可以编辑它们。

目录(fullfile (matlabroot,“工具箱”“开车”“drivingdemos”));helperDrivingProjectSetup (“HLFControlsSensorFusion.zip”“workDir”pwd);

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

打开(“HLFControlsWithSensorFusionTestRequirements.slreqx”

或者,也可以从需求在Simulink中,需求管理器应用程序的标签。金宝app

该文件中的每一行都以文本和图形格式指定了测试场景中车道跟随系统的需求。的场景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-直道场景,领头车在自我车道抛锚。

探索试验台模型

开放式试验台模型。

open_system (“HLFControlsWithSensorFusionTestBench”);

测试台模型包含以下子系统:

  1. 模拟3D场景——用于模拟的指定道路、车辆、视觉检测生成器和雷达传感器的子系统。

  2. 前方车辆传感器融合子系统,融合从视觉和雷达传感器获得的自我车辆前方车辆的检测。

  3. 车道跟随决策逻辑-指定横向和纵向决策逻辑的算法模型,并向控制器提供车道中心信息和最重要的对象(MIO)相关信息。

  4. Lane Following Controller -指定控制器的算法模型。

  5. 车辆动力学-为自我车辆指定动态模型的子系统

  6. 度量评估——评估系统级行为的子系统。

仿真三维场景子系统配置道路网络,设置车辆位置,并合成传感器。打开模拟3D场景子系统。

open_system (“HLFControlsWithSensorFusionTestBench/模拟3D场景”

场景和道路网络由子系统的这些部分指定:

车辆位置由子系统的这些部分指定:

  • 自我输入端口控制自我车辆的位置,这是由地面跟随1块的模拟3D车辆指定的。

  • 汽车走向世界Block将参与者的姿势从自我车辆的坐标转换为世界坐标。

  • 场景的读者块输出演员姿势,控制目标车辆的位置。这些车辆由其他具有地面跟随块的模拟3D车辆指定。

  • 长方体到三维仿真块将自姿态坐标系(相对于车辆后轴中心下方)转换为三维仿真坐标系(相对于车辆中心下方)。

附加在自我飞行器上的传感器由子系统的以下部分指定:

  • 模拟三维视觉检测生成器块附加在自我车辆上,用于在3D仿真环境中检测车辆和车道。该块从基于场景中参与者的长方体表示的模拟参与者姿势中获得车辆检测。

  • 从视觉中删除速度块打包视觉检测以匹配视觉处理算法使用的总线。为此,块替换测量噪声并禁用速度测量。

  • Pack Lanes Truth块将车道地面真相信息打包到车道总线结构中,这是车道跟随决策逻辑参考模型所需要的。

  • 模拟三维概率雷达块附加到自我车辆,以检测三维仿真环境中的车辆。

前向车辆传感器融合、车道跟踪决策逻辑、车道跟踪控制器、车辆动力学和度量评估子系统都是基于该系统中使用的子系统高速公路车道跟踪的例子。

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

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

在本例中,使用四个指标来评估车道跟随系统。

  • 验证横向偏差——该块验证从车道中心线的横向偏差是否在相应场景的规定阈值之内。在您编写测试场景时定义阈值。

  • 在车道上验证-这个块验证自我车辆在整个模拟过程中沿着道路上的一条车道行驶。

  • 验证时间差距-此块验证自我车辆和领先车辆之间的时间差距超过0.8秒。两辆车之间的时间间隔被定义为计算车头时距与车辆速度的比值。

  • 验证无碰撞-此块验证自我车辆在模拟过程中没有与先导车辆发生任何碰撞。

禁用运行时可视化

系统级测试台架模型打开一个虚幻引擎模拟窗口,用于可视化场景。自动化测试时不需要此窗口。

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

黑色=“HLFControlsWithSensorFusionTestBench/Simulation 3D场景/Simulation 3D场景配置”;set_param(黑色,“EnableWindow”“关闭”);

自动化测试

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

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

观察先前在此文件中编写的填充测试用例。这些测试被配置为运行模型。

每个测试用例使用POST-LOAD回调使用适当的输入运行设置脚本。在模拟测试用例之后,test Manager调用helperGenerateFilesForLaneFollowingWithSensorFusionReport从cleanup回调生成图。

运行和研究单个测试场景的结果

来测试系统级模型scenario_LFACC_03_Curve_StopnGo使用下面的代码:金宝app

testFile = sltest.testmanager.load(“HLFControlsWithSensorFusionMetricAssessments.mldatx”);testSuite = getTestSuiteByName(testFile,测试场景的);testCase = getTestCaseByName(testSuite,“scenario_LFACC_03_Curve_StopnGo”);resultObj = run(testCase);

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

sltest.testmanager.report (resultObj“Report.pdf”...“标题”“传感器融合的高速公路车道跟踪控制”...“IncludeMATLABFigures”,真的,...“IncludeErrorMessages”,真的,...“IncludeTestResults”0,“LaunchReport”,真正的);

查看Report.pdf。请注意,测试环境部分显示了运行测试的平台和用于测试的MATLAB®版本。Summary部分以秒为单位显示测试的结果和模拟的持续时间。结果部分显示了基于评估标准的通过/不通过结果。该部分还显示从helperGenerateFilesForLaneFollowingWithSensorFusionReport函数。

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

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

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

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

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

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

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

HLFControlsWithSensorFusionTestBench该模型能够对前向车辆传感器融合、车道跟踪决策逻辑和车道跟踪控制器组件进行集成测试。通过SIL验证对这些组件进行回归测试通常是有帮助的。如果您拥有Simulink 金宝appCoder™许可证,则可以为这些组件生成代码。该工作流允许您在整个模拟过程中验证所生成的代码是否产生了与系统级需求匹配的预期结果。

设置前方车辆传感器融合运行在软件在环模式。

模型=HLFControlsWithSensorFusionTestBench/前向车辆传感器融合;set_param(模型,“SimulationMode”“Software-in-the-loop”);

将Lane follow Decision Logic设置为在软件在环模式下运行。

模型=HLFControlsWithSensorFusionTestBench/Lane follow Decision Logic;set_param(模型,“SimulationMode”“Software-in-the-loop”);

设置车道跟踪控制器以软件在环模式运行。

模型=“HLFControlsWithSensorFusionTestBench/Lane Following Controller”;set_param(模型,“SimulationMode”“Software-in-the-loop”);

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

并行自动化测试

如果您拥有并行计算工具箱™许可证,则可以配置测试管理器以使用并行池并行地执行测试。若要并行运行测试,请使用禁用运行时可视化后保存模型save_system(“HLFControlsWithSensorFusionTestBench”).测试管理器使用默认的并行计算工具箱集群,只在本地机器上执行测试。并行运行测试可以加快执行速度,并减少获得测试结果所需的时间。有关如何从测试管理器并行配置测试的详细信息,请参见使用并行执行运行测试(金宝app仿真软件测试)

另请参阅

||||||

相关的话题