自动化测试场景AEB系统的变异
这个例子展示了如何评估一个自治紧急制动的功能(AEB)应用程序通过改变欧洲新车评估项目(欧洲五星)Car-to-Pedestrian左侧的孩子(CPNC)驾驶场景。这个例子构建的与传感器融合自动紧急制动的例子。
介绍
自动紧急制动是一种先进的主动安全系统,帮助司机避免或减轻与其他车辆碰撞。测试自动驾驶功能的空间非常大,这不是可行的验证大量的场景与真实的驾驶测试。这个例子使您能够执行基于场景的测试AEB系统通过生成多个场景从一颗种子变异场景。
这个例子展示了如何改变自我的速度和碰撞点参数来生成多个变体欧元NCAP CPNC测试场景。示例还展示了如何使用迭代测试方法在仿真软件®测试经理测试生成的变体。在本例中,您:
探索试验台模型——模型包含模块的传感器和环境中,传感器融合和跟踪,决策逻辑、控制和车辆动力学。
检查种子场景和产生变异——检查CPNC种子种子场景的场景和产生变异通过改变自我的速度和自我之间的碰撞点车辆和行人。
执行迭代测试和情景变体——配置测试经理每个场景模拟AEB试验台模型变体使用脚本迭代测试和仿真软件测试™,评估成功的标准,并报告结果。
可视化结果和检查生成的报告——基于网格的可视化情节审查和分析迭代测试的结果。你也可以仿真结果导出到PDF和检查生成的报告。
探索试验台模型
这个例子中重用AEBTestBench
模型的与传感器融合自动紧急制动的例子。
探索试验台模型,打开一个工程实例文件的工作副本。MATLAB®将文件复制到一个文件夹中,这样您就可以编辑它们。
helperDrivingProjectSetup (“AutonomousEmergencyBraking.zip”,workDir = pwd)
减少输出命令窗口,关闭模型预测控制(MPC)更新消息。
mpcverbosity (“关闭”);
打开系统级仿真试验台模型。
open_system (“AEBTestBench”)
该试验台模型这些模块:
传感器和环境
子系统,指定了道路、演员、摄像头,用于模拟和雷达传感器。传感器融合和跟踪
——算法模型,融合的车辆检测相机的雷达传感器。AEB决策逻辑
——算法模型,指定了横向和纵向的决策逻辑,它提供了最重要的对象(绪)相关信息和自我车辆控制器参考路径信息。AEB控制器
——算法模型,指定了转向角和加速度控制。车辆动力学
子系统,指定自我车辆的动态模型。指标的评估
——子系统评估系统级的行为。
为更多的细节在这些组件和模拟试验台模型,看到与传感器融合自动紧急制动的例子。
在这个例子中,你的重点是自动化的多个变种种子场景的模拟运行。您创建种子场景中使用驾驶场景设计师应用程序。
检查种子场景和产生变异
的helperCreateSeedScenario
函数生成一个长方体场景,是兼容的AEBTestBench
模型。这是一个开环的场景中包含两个静止目标车辆在直路和儿童行人。这是一个欧洲五星CPNC场景中,自我的车辆撞向行人的孩子落后于从左侧的妨碍。额叶结构的车辆撞到行人。
绘制开环场景的交互自我目标车辆和行人的孩子。
hFigSeedScenario = helperPlotScenario (“helperCreateSeedScenario”);
自我,这不是在闭环控制,与行人碰撞的孩子。闭环系统的目标是避免或减轻与行人碰撞的演员。在AEBTestBench
模型中,自我车辆具有相同的初始速度和初始位置开环的场景。
关闭图。
关上(hFigSeedScenario)
产生变异的种子的场景
的helperCreateSeedScenario
函数创建一个场景,在该场景中,种子自我车辆的速度是60公里/小时,左前角和碰撞点的自我。为了测试这个AEB CPNC场景/欧洲五星测试协议,您创建的多个变种种子场景中通过改变自我的速度和碰撞点。使用helperCreateSeedScenario
函数来创建种子的场景。
[seedScenario, egoVehicle] = helperCreateSeedScenario;
使用getScenarioDescriptor
函数创建一个scenarioDescriptor
种子场景的对象的属性。您可以修改该对象的属性来生成场景的变化。
%获得种子的场景描述符的场景scenarioDescriptor = getScenarioDescriptor (seedScenario模拟器=“DrivingScenario”);
定义自我的IDs车辆和目标演员与自我车辆碰撞。
egoID = egoVehicle.ActorID;targetID = 2;
生成的场景变化,自我种子场景中车辆必须满足这些标准:
自我车辆必须与目标车辆碰撞。
自我车辆必须有一致的运动属性。
自我的轨迹必须至少有三个锚点。
自我车辆必须以一个恒定的速度旅行。
的helperCheckScenario
功能验证种子场景对这些标准。如果检查失败,该函数返回一个值0
表明你在使用前必须修改场景生成变化变化。
的helperPerformScenarioCollision
功能修改场景基于这些条件:
如果自我车辆或目标演员只有两个锚点
helperPerformScenarioCollision
函数添加第三个路标在它们之间的中点,并设置它的速度值与前面的路标。如果自我车辆或目标演员不旅行以一个恒定的速度从第一个航点,
helperPerformScenarioCollision
函数集的速度值的恒定值80 km / h和10 km / h,分别。如果自我车辆和目标演员不发生碰撞,但相交的轨迹,
helperPerformScenarioCollision
检查如果碰撞可能通过修改目标的等待时间的演员。如果可能的话,函数修改目标车辆的等待时间来创建一个碰撞事件。否则,该函数返回一个错误。
%验证信息存储在scenarioDescriptor种子场景。checkStatus = helperCheckScenario (egoID targetID scenarioDescriptor);如果~ checkStatus%如果场景检查失败,根据需求修改场景scenarioDescriptor = helperPerformScenarioCollision (egoID targetID、scenarioDescriptor方法=“WaitTime”);结束
生成不同的种子的场景中,使用helperGenerateScenarioVariant
函数。的helperGenerateScenarioVariant
函数使用这些输入参数:scenarioDescriptor
自我车辆ID,目标对象,演员ID,一个新的自我车辆速度,和一个新的碰撞点。
指定新的自我m / s的速度。将20 km / h m / s, 3.6除以。这导致速度值约为5.5 m / s。
egoNewSpeed = 20 * 1/3.6;% m / s
定义新的碰撞点,如中指定为测试AEB行人系统生成场景变体例子,变异生成所需的场景。对于一个碰撞点的中心前的自我车辆前,指定newCollisionPoint
作为0.5
。
newCollisionPoint = 0.5;
生成变种,使用helperGenerateScenarioVariant
功能、自我汽车旅行在20公里/小时,行人车辆的前部的中心。
targetID scenarioVariant = helperGenerateScenarioVariant (scenarioDescriptor egoID, egoNewSpeed, newCollisionPoint);
检查生成的场景中使用变体驾驶场景设计师应用程序。
drivingScenarioDesigner (scenarioVariant);
注意,生成的变体有自我5.5 m / s的速度,和碰撞发生前的自我中心的车辆。你可以使用这个场景AEBTestBench
模型执行闭环测试。
仿真软件的测试使您能够自动生成和测试场景变异与闭环模型。使用仿真软件测试,您可以生成大量的变化从一个种子场景和失败。
执行迭代测试和情景变体
这个例子包含一个测试经理配置AEB应用程序的自动化测试生成的变体。打开AEBScenarioVariationTest.mldatx
测试文件测试经理。
sltestmgr测试文件= sltest.testmanager.load (“AEBScenarioVariationTest”);
仿真软件的迭代框架使您能够自动化场景变体使用试验台模型生成和闭环测试。迭代测试脚本中AEBScenarioVariationTest.mldatx
文件描述了如何将情景变体AEB应用程序的生成和闭环测试。
的setVariable
为每个迭代函数集这些参数:
v_set
——自我车辆的速度。场景
——驾驶场景对象。egoVehDyn
——初始化参数车辆动力学
子系统,指定为一个结构。
的addIteration
功能添加测试迭代。创建脚本迭代的更多信息,见测试迭代(仿真软件测试)。
模拟测试用例后,测试经理使用helperPlotAEBResults
函数的清理回调函数来生成post-simulation情节。在这些情节的更多信息,请参阅与传感器融合自动紧急制动的例子。
运行和探索结果对于CPNC场景变体
测试系统级模型与仿真软件生成的变异测试,使用这段代码:
resultSet =运行(测试文件);testFileResults = getTestFileResults(结果集);testSuiteResults = getTestSuiteResults (testFileResults);testCaseResults = getTestCaseResults (testSuiteResults);testIterationResults = getIterationResults (testCaseResults);
生成可视化结果和评审报告
的testIterationResults
输出包含所有迭代的结果。绘制结果的总结的形式颜色网格,使用helperPlotAEBVariantResults
函数。这个helper函数块网格的结果与特定的颜色为每个细胞表明通过或失败状态的闭环仿真AEBTestBench
变体模型生成的场景。
helperPlotAEBVariantResults (testIterationResults egoNewSpeeds newCollisionPoints)
在结果网格,列代表的碰撞点值0.2
,0.3
,0.5
,0.7
。行代表九自我速度值从10公里/小时50公里/小时的步骤5公里/小时。为每个自我的价值速度,有四个可能碰撞点,导致36变化。正确的表图中显示的颜色查找表VUT测试速度vsVUT影响速度范围。VUT测试速度是初始速度的人自我,而属于影响速度的速度自我车辆的碰撞。测试速度和速度的影响之间的差异被称为减速。这个查找表显示了减速来推断AEB系统性能时的碰撞。绿色的列表示重要的减速和红色的列表示较低的自我车辆减速。
每个单元网格的显示了最终的自我速度使用颜色对应于减速。注意,所有细胞的网格是绿色,这表明该算法在AEB试验台通过所有36 CPNC场景的变化。
使用这段代码生成报告,为进一步分析特定的迭代:
sltest.testmanager.report (testIterationResults“Report.pdf”,…Title =“自动化测试对于CPNC场景的变种AEB系统”,…IncludeMATLABFigures = true,…IncludeErrorMessages = true,…IncludeTestResults = 0,…LaunchReport = true);
检查生成的报告
检查Report.pdf
。观察到的测试环境
节将展示的平台测试运行和MATLAB版本用于测试。的总结
部分显示的模拟测试的结果和持续时间,以秒为单位。的结果
部分显示了通过或失败结果的基础上评估标准。这一节还显示了情节的记录helperPlotAEBResults
函数。
启用MPC更新消息。
mpcverbosity (“上”);