高速公路变道自动化测试
这个例子展示了如何通过定义基于需求的场景来评估车道变更应用程序的功能,以及自动化测试组件和为这些组件生成的代码。该组件包括一个变道计划器和控制器。此示例构建在高速公路变道的例子。
简介
高速公路变道系统使自动车辆在高速公路上自动从一个车道移动到另一个车道。该系统建立了自动变道的纵向和横向控制动力学模型。系统级仿真使您能够评估系统级测试台模型的功能。您可以根据系统需求配置模拟来测试场景。自动运行这些模拟使回归测试能够验证系统级功能。
的高速公路变道示例展示了如何使用地面真实信息设计和模拟车道变化的系统级模型。这个例子展示了如何使用Simulink®Test™针对多个场景自动化测试该模型。这些场景基于系统级需求。在这个例子中,你:
评审需求—需求描述系统级测试条件。创建模拟测试场景来表示这些条件。
回顾试验台模型-回顾包含度量评估的系统级车道变化试验台模型。这些度量评估将测试台架模型与Simulink测试集成在一起进行自动化测试。
禁用运行时可视化禁用运行时可视化可以减少自动化测试的执行时间。
自动化测试—配置测试管理器,模拟每个测试场景,评估成功标准,并报告结果。在测试管理器中动态地探索结果,并将它们导出为PDF供外部评审员使用。
使用生成的代码自动化测试—配置变道规划器和控制器组件,生成c++代码。在生成的代码上运行自动测试并验证行为。
并行自动化测试—通过在多核计算机上使用并行计算来提高运行测试的整体执行速度。
评审需求
为了探索需求,打开项目示例文件的工作副本。MATLAB®将文件复制到示例文件夹,以便您可以编辑它们。
目录(fullfile (matlabroot,“工具箱”,“开车”,“drivingdemos”) helperDrivingProjectSetup (“HighwayLaneChange.zip”, workDir = pwd)
需求工具箱™使您能够在Simulink中编写、分析和管理需求。此示例包含15个测试场景,并为每个场景定义了高级测试需求。打开需求集。
打开(“HighwayLaneChangeTestRequirements.slreqx”)
或者,也可以从需求的标签。要求经理应用程序在Simulink。
该文件中的每一行都以文本和图形格式指定车道变更系统测试场景的测试需求。这些场景使您能够测试车道变更规划器和控制器组件。
scenario_LC_01_SlowMoving
-三车道直道场景,一辆缓慢移动的领先车辆在自我车道。scenario_LC_02_SlowMovingWithPassingCar
-三车道直道场景,前车道有一辆慢行车辆,左车道有一辆过路车辆。scenario_LC_03_DisabledCar
-三车道直道,有残疾车辆在主车道。scenario_LC_04_CutInWithBrake
-三车道直道的场景,一辆领先的车用刹车切入了自我车道。scenario_LC_05_SingleLaneChange
-四车道直道场景,场景中有多辆车,领头车移动缓慢。scenario_LC_06_DoubleLaneChange
-四车道直道场景,场景中有多辆车,包括一辆缓慢移动的前车和一辆快速移动的后车。scenario_LC_07_RightLaneChange
-三车道直道场景,一辆领先的车在自我车道上,一辆路过的车在左侧车道上,导致自我车辆转向右车道。scenario_LC_08_SlowmovingCar_Curved
-弯曲的道路场景,一辆缓慢移动的领先汽车在自我车道。scenario_LC_09_CutInWithBrake_Curved
-弯曲的道路场景,一辆领先的汽车切进了自我车道。scenario_LC_10_SingleLaneChange_Curved
-弯曲的道路场景,场景中有多辆车和一辆缓慢移动的领头车。scenario_LC_11_MergingCar_HighwayEntry
-高速公路入口场景,场景中有三辆车。其中一辆车正从高速公路入口路段并入自我车道。scenario_LC_12_CutInCar_HighwayEntry
-高速公路入口场景,场景中有四辆车。其中一辆车在道路网络的弯曲路段切入了自我车道。scenario_LC_13_DisabledCar_Ushape
- u型场景,场景中有多辆车,包括一辆残疾的汽车在自我车道的相邻车道上,以及一辆缓慢行驶的汽车在自我车道上。scenario_LC_14_DoubleLaneChange_Ushape
- u型场景,场景中有多辆车,包括一辆残疾的汽车在自我车道的相邻车道上,以及一辆缓慢行驶的汽车在自我车道上。scenario_LC_15_StopnGo_Curved
-场景中包含6辆车的弯曲道路场景。当其他车辆在相邻车道行驶时,领头车辆减速。
回顾试验台模型
此示例重用HighwayLaneChangeTestBench
模型高速公路变道的例子。打开试验台模型。
open_system (“HighwayLaneChangeTestBench”)
测试台模型包含以下子系统:
场景与环境
—用于模拟的场景、车辆和地图数据。Planner配置参数
—规划算法的配置参数。公路变道规划师
实现了高速公路的变道规划算法。变道控制器
—指定控制器的算法模型。车辆动力学
-指定自我车辆的动态模型。指标的评估
—评估系统级行为。
配置此测试台架模型helperSLHighwayLaneChangeSetup
脚本。这个设置脚本需要scenarioName
作为输入,其中scenarioName
可以是前面描述的任何一个测试场景。要运行安装脚本,使用以下代码:
scenarioName =“scenario_LC_15_StopnGo_Curved”;helperSLHighwayLaneChangeSetup (scenarioFcnName = scenarioName)
现在可以模拟模型并可视化结果。有关试验台模型中各个组件设计的详细信息,请参阅高速公路变道的例子。
接下来,针对不同的测试场景,使用Simulink test自动化该测试台架模型的模拟运行。的指标的评估
子系统支持与Simulink Test集成系统级度量评估。这个子系统使用检查静态范围(模型)而且检查静态下界(模型)这个集成的块。打开指标的评估
子系统。
open_system (“HighwayLaneChangeTestBench /指标评估”)
的指标的评估
子系统输出这些指标:
验证时间差距
-验证主车与主车之间的时间差大于0.8秒。两辆车之间的时间间隔是计算出的车头时距与车辆速度之比。
确认无碰撞
-验证自我车辆在模拟过程中的任何时刻都没有与任何车辆相撞。
验证纵向挺拔
-验证自我车的纵向跳值在- 5米/秒^3和5米/秒^3之间。
验证侧突
-验证自我车的横向颠簸值在- 5米/秒^3和5米/秒^3之间。
验证安全
-验证自我车辆相对于当前车道、左车道和右车道的车辆的安全性。这确保自我车辆执行一个安全的机动,同时遵循轨迹。
禁用运行时可视化
系统级测试台架模型打开一个可视化窗口,显示自我车辆、采样轨迹,以及场景的追逐视图和顶视图中的胶囊列表。您可以禁用可视化窗口以使模拟运行得更快。
配置Visualization块以禁用可视化窗口。
黑色=“HighwayLaneChangeTestBench /可视化”;set_param(黑色,EnableChaseView =“关闭”) set_param(黑色,EnableTopView =“关闭”)
自动化测试
配置测试经理自动化车道变更应用程序的测试。打开HighwayLaneChangeMetricAssessments.mldatx
测试文件中的测试经理.
sltestmgr;testFile = sltest.testmanager.load(“HighwayLaneChangeMetricAssessments.mldatx”);
观察先前在此文件中编写的填充测试用例。这些测试被配置为运行模型。
每个测试用例都使用POST-LOAD回调函数以使用适当的输入运行安装脚本。在模拟测试用例之后,测试经理使用helperLaneChangeReport
函数从清理回调来生成曲度,横向偏差,航向角,速度,转向角,加速度和加速度的图。
运行和研究单个测试场景的结果
上测试系统级模型scenario_LC_15_StopnGo_Curved
场景。
testSuite = getTestSuiteByName(testFile,“测试场景”);testCase = getTestCaseByName(testSuite,“scenario_LC_15_StopnGo_Curved”);resultObj = run(testCase);
模拟后生成测试报告。
sltest.testmanager.report (resultObj“Report.pdf”,...Title =“高速公路变道”,...IncludeMATLABFigures = true,...IncludeErrorMessages = true,...IncludeTestResults = false,...LaunchReport = true)
检查Report.pdf
文件。观察到测试
环境部分显示了运行测试的平台和用于测试的MATLAB版本。的总结
部分以秒为单位显示测试的结果和模拟的持续时间。的结果
部分根据评估标准显示通过或不通过的结果。该部分还显示从helperLaneChangeReport
函数。
运行并探索所有测试场景的结果
方法模拟所有测试的系统运行(测试文件)
命令。您也可以通过单击模拟系统玩在测试经理应用程序。
测试模拟完成后,在中查看所有测试的结果结果和工件的标签。测试经理.对于每个测试用例,测试经理使用检查静态范围(模型)而且检查静态下界(模型)块,以可视化总体通过或失败的结果。
您可以在当前工作目录中找到生成的报告。该报告包含每个测试用例通过或失败状态的详细摘要和图。
在需求编辑器中验证测试状态
打开要求编辑器并选择显示.然后,选择验证状态查看每个需求的验证状态摘要。绿色和红色条分别表示每个测试的模拟结果的通过或失败。
使用生成的代码自动化测试
的HighwayLaneChangeTestBench
的集成测试公路变道规划师
而且公路变道控制器
组件。为这些组件生成代码需要一个Simulink Coder™许可证。这个工作流使您能够在整个模拟过程中验证所生成的代码是否产生了与系统级需求匹配的预期结果。
设置公路变道规划师
以软件在循环(SIL)模式运行。
模型=“公路变道规划器/公路变道测试平台”;set_param(模型、SimulationMode =“Software-in-the-loop”)
设置变道控制器
以SIL模式运行。
模型=“HighwayLaneChangeTestBench/变道控制器”;set_param(模型、SimulationMode =“Software-in-the-loop”)
方法模拟所有测试场景的系统运行(测试文件)
命令。测试完成后,在生成的报告中检查图表和结果。如果您拥有Simulink Coverage™的许可,您还可以在生成的报告中获得生成代码的代码覆盖率分析。该许可还使您能够可视化单个测试用例的覆盖结果和聚合的覆盖结果。
并行自动化测试
如果您拥有并行计算工具箱™许可证,则可以配置测试经理使用并行池并行执行测试。要并行运行测试,请使用禁用运行时可视化后保存模型save_system(“HighwayLaneChangeTestBench”)
命令。的测试经理使用默认的并行计算工具箱集群并仅在本地机器上执行测试。并行运行测试可以加快执行速度,并减少获得测试结果所需的时间。有关如何从上并行配置测试的详细信息测试经理,请参阅使用并行执行运行测试(仿真软件测试).