AEB系统场景变化的自动化测试
本示例展示了如何通过改变欧洲新车评估计划(Euro NCAP)汽车-行人近距离儿童(CPNC)驾驶场景来评估自动紧急制动(AEB)应用程序的功能。此示例构建在传感器融合的自动紧急制动的例子。
简介
自动紧急制动是一种先进的主动安全系统,可帮助驾驶员避免或减轻与其他车辆的碰撞。自动驾驶功能的测试空间非常大,用真实的驾驶测试来验证大量的场景是不可行的。这个示例使您能够通过从种子场景生成多个场景变体来执行AEB系统的基于场景的测试。
这个例子展示了如何改变自我速度和碰撞点参数来生成多个变体的Euro NCAP CPNC测试场景。该示例还展示了如何在Simulink®中使用迭代测试方法测试经理测试生成的变量。在这个例子中,你:
探索试验台模型-该模型包含传感器和环境模块、传感器融合和跟踪模块、决策逻辑模块、控制模块和车辆动力学模块。
审查种子场景并生成变体-回顾CPNC种子场景,并通过改变自我速度和自我车辆与行人之间的碰撞点来生成种子场景的变体。
使用场景变量执行迭代测试——配置测试经理使用Simulink test™脚本迭代测试模拟每个场景变体的AEB测试台模型,评估成功标准,并报告结果。
可视化结果并检查生成的报告-绘制基于网格的可视化图,以回顾和分析迭代测试的结果。您还可以将模拟结果导出为PDF并查看生成的报告。
探索试验台模型
此示例重用AEBTestBench
模型传感器融合的自动紧急制动的例子。
要探索测试台架模型,请打开项目示例文件的工作副本。MATLAB®将文件复制到示例文件夹,以便您可以编辑它们。
helperDrivingProjectSetup (“AutonomousEmergencyBraking.zip”, workDir = pwd)
若要减少命令窗口输出,请关闭模型预测控制器(MPC)更新消息。
mpcverbosity (“关闭”);
打开系统级仿真试验台模型。
open_system (“AEBTestBench”)
这个测试台模型有这些模块:
传感器与环境
—用于模拟的道路、演员、摄像机和雷达传感器的子系统。传感器融合与跟踪
-融合从摄像头到雷达传感器的车辆检测的算法模型。AEB决策逻辑
-算法模型,指定横向和纵向决策逻辑,向控制器提供最重要的对象(MIO)相关信息和自我车辆参考路径信息。AEB控制器
-指定转向角度和加速度控制的算法模型。车辆动力学
-子系统,指定自我车辆的动态模型。指标的评估
-评估系统级行为的子系统。
有关这些组件和模拟试验台模型的详细信息,请参见传感器融合的自动紧急制动的例子。
在本例中,您的重点是为种子场景的多个变体自动化模拟运行。方法创建种子场景驾驶场景设计应用程序。
审查种子方案并生成变体
的helperCreateSeedScenario
方法所兼容的长方体场景AEBTestBench
模型。这是一个开环场景,包含两辆静止的目标车辆在直线道路上和一个儿童行人。这是一个欧洲NCAP CPNC场景,在这个场景中,小轿车与一个从附近障碍物后面跑的行人儿童相撞。车辆的正面结构撞到了行人。
绘制开环场景,以查看自我车辆和行人子目标之间的相互作用。
hFigSeedScenario = helperPlotScenario(“helperCreateSeedScenario”);
无人驾驶汽车不受闭环控制,与行人儿童相撞。闭环系统的目标是避免或减轻与行人的碰撞。在AEBTestBench
模型中,自我车辆具有与开环情况相同的初始速度和初始位置。
关闭该图形。
关上(hFigSeedScenario)
生成种子场景的变体
的helperCreateSeedScenario
函数创建了一个种子场景,其中自我车辆的速度为60公里/小时,碰撞点在自我车辆的左前角。为了根据Euro NCAP测试协议测试AEB CPNC场景,您可以通过改变自我速度和碰撞点来创建种子场景的多个变体。使用helperCreateSeedScenario
函数来创建种子场景。
[seedScenario,egoVehicle] = helperCreateSeedScenario;
使用getScenarioDescriptor
函数创建scenarioDescriptor
具有种子场景属性的对象。您可以修改该对象的属性以生成场景变化。
从种子场景中获取场景描述符场景描述符= get场景描述符(seedScenario);
定义自我载体的id和与自我载体碰撞的目标参与者。
egoID = egoVehicle.ActorID;targetID = 2;
为了生成场景变化,种子场景中的自我载体必须满足以下条件:
自我车必须与目标车相撞。
自我载体必须具有一致的运动特性。
自我轨迹至少有三个路径点。
自我的交通工具必须以恒定的速度行驶。
的helperCheckScenario
函数根据这些条件验证种子场景。如果任何检查失败,该函数将返回值0
表明您必须在使用该场景生成变体之前修改该场景。
的helperPerformScenarioCollision
命令用于修改场景生成测试AEB行人系统的场景变量的例子。
验证存储在scenario descriptor中的种子场景信息。checkStatus = helperCheckScenario(egoID,targetID,scenarioDescriptor);如果~ checkStatus%如果场景检查失败,请根据需求修改场景destinationdescriptor = helperperformdestinationcollision (egoID,targetID, destinationdescriptor,method=“WaitTime”);结束
要生成种子场景的变体,请使用helperGenerateScenarioVariant
函数。的helperGenerateScenarioVariant
函数使用这些输入参数scenarioDescriptor
对象,自我车辆ID,目标参与者ID,自我车辆的新速度,以及新的碰撞点。
指定新的自我速度,单位为m/s。将20km /h换算为m/s,除以3.6。这导致速度值约为5.5米/秒。
egoNewSpeed = 20 * 1/3.6;% m / s
属性中指定的定义新的碰撞点生成测试AEB行人系统的场景变量示例,用于生成场景变量。对于自我车辆前部中心的碰撞点,请指定newCollisionPoint
作为0.5
.
newCollisionPoint = 0.5;
生成变量,使用helperGenerateScenarioVariant
功能,自我车辆以20公里/小时的速度行驶,并在车辆前部的中心撞上行人。
scenarioVariant = helperGenerateScenarioVariant(scenarioDescriptor,egoID,targetID,egoNewSpeed,newCollisionPoint);
方法检查生成的变体场景驾驶场景设计应用程序。
drivingScenarioDesigner (scenarioVariant);
注意,生成的变种的自我速度为5.5米/秒,碰撞发生在自我车辆前部的中心。可以将此场景与AEBTestBench
模型执行闭环测试。
Simulink Test允许您使用闭环模型自动生成和测试场景变量。使用Simulink Test,您可以从种子场景中生成大量的变化,并捕获失败。
使用场景变体执行迭代测试
此示例包括测试经理使用生成的变量自动化测试AEB应用程序的配置。打开AEBScenarioVariationTest.mldatx
测试文件中的测试经理.
sltestmgr testFile = sltest.testmanager.load(“AEBScenarioVariationTest”);
Simulink脚本化的迭代框架允许您自动化场景变量的生成和使用测试台架模型的闭环测试。的迭代测试脚本AEBScenarioVariationTest.mldatx
文件描述了如何结合AEB应用程序的场景变量生成和闭环测试。
的setVariable
函数为每次迭代设置以下参数:
v_set
-设置自我战车的速度。场景
—驱动场景对象。egoVehDyn
-初始化参数车辆动力学
子系统,指定为结构。
的addIteration
函数添加测试迭代。有关创建脚本迭代的更多信息,请参见测试迭代(仿真软件测试).
在模拟测试用例之后,测试经理使用helperPlotAEBResults
函数从清理回调函数来生成模拟后的图形。有关这些图的更多信息,请参见传感器融合的自动紧急制动的例子。
运行并探索CPNC场景变量的结果
使用Simulink test生成的变量来测试系统级模型,使用以下代码:
resultSet = run(testFile);testFileResults = getTestFileResults(resultSet);testSuiteResults = getTestSuiteResults(testFileResults);testCaseResults = getTestCaseResults(testSuiteResults);testterationresults = getIterationResults(testCaseResults);
可视化结果和审查生成的报告
的testIterationResults
输出包含所有迭代的结果。要以彩色网格的形式绘制结果摘要,请使用helperPlotAEBVariantResults
函数。此辅助函数用每个单元格的特定颜色绘制网格结果,这些单元格指示闭环模拟的通过或失败状态AEBTestBench
使用生成的场景变量进行建模。
helperPlotAEBVariantResults (testIterationResults egoNewSpeeds newCollisionPoints)
在结果网格中,列表示的碰撞点值0.2
,0.3
,0.5
,0.7
.这些行表示9个自我速度值,范围从10公里/小时到50公里/小时,步长为5公里/小时。对于每一个自我速度的值,都有四个可能的碰撞点,这导致了总共36个变化。图中右图为颜色查找表,其中绿色表示碰撞时自我车辆的速度下降非常明显,红色表示碰撞时低速下降。自我车辆的减速是初始自我速度与碰撞时自我速度之差。如果没有碰撞,减速是初始速度与模拟结束时自我速度之间的差值。
网格的每个单元格使用与速度减少量相对应的颜色显示最终的自我速度。请注意,网格的所有单元格都是绿色的,这表明AEB测试台上的算法通过了CPNC场景的所有36个变体。
使用下面的代码生成报告,以进一步分析特定的迭代:
sltest.testmanager.report (testIterationResults“Report.pdf”,...Title =AEB系统CPNC场景变体的自动化测试,...IncludeMATLABFigures = true,...IncludeErrorMessages = true,...IncludeTestResults = 0,...LaunchReport = true);
检查生成的报告
检查Report.pdf
.观察到测试环境
部分显示了运行测试的平台和用于测试的MATLAB版本。的总结
部分显示测试的结果和模拟的持续时间(以秒为单位)。的结果
部分根据评估标准显示通过或不通过的结果。该部分还显示从helperPlotAEBResults
函数。
启用MPC更新消息。
mpcverbosity (“上”);