主要内容

雷达传感器探测模型

这个例子展示了如何为不同的驾驶场景建模和模拟汽车雷达传感器的输出。在极端情况下或传感器硬件不可用时,生成合成雷达探测对于测试和验证跟踪和传感器融合算法非常重要。本例分析了前方碰撞警告(FCW)场景、车辆通过场景和目标间距较近的场景下,雷达测量值与车辆地面真实位置和速度之间的差异。它还包括在不同范围内行人和车辆目标之间的信噪比(SNR)值的比较。

在本例中,您将以编程方式生成雷达探测。方法也可以生成检测驾驶场景设计示例请参见交互式创建驾驶场景并生成合成传感器数据

介绍

包含高级驾驶辅助系统(ADAS)功能或设计为完全自动驾驶的车辆通常依赖于多种类型的传感器。这些传感器包括声纳、雷达、激光雷达和视觉。一个健壮的解决方案包括一个传感器融合算法,以结合系统中包含的各种类型传感器的优势。有关来自多传感器ADAS系统的合成检测的传感器融合的更多信息,请参见基于合成雷达和视觉数据的传感器融合

当使用合成检测来测试和验证跟踪和传感器融合算法时,重要的是要了解生成的检测如何建模传感器的独特性能特征。每种汽车传感器都提供了一组特定的优势和劣势,有助于融合解决方案。本例介绍了汽车雷达的一些重要性能特征,并展示了如何使用合成探测来建模雷达性能。

雷达传感器模型

这个例子使用了drivingRadarDataGenerator产生合成雷达探测。drivingRadarDataGenerator建模汽车雷达的以下性能特点:

的优势

  • 良好的距离和距离率精度在长探测范围

  • 车辆探测距离远

弱点

  • 横向距离上的位置和速度精度较差

  • 更短的行人和其他非金属物体的检测范围

  • 近距离检测簇对跟踪算法提出了挑战

  • 不能在远距离上分辨近距离的目标

FCW驱动场景

创建一个前向碰撞警告(FCW)测试场景,用于演示如何使用典型的远程汽车雷达测量目标的位置。该场景由一辆移动的自我车辆和一辆固定的目标车辆组成,目标车辆位于道路下方150米处。在刹车之前,ego车辆的初始速度为50公里/小时,以实现3米/秒^2的恒定减速。然后车辆在目标车辆后保险杠前1米处完全停止。

目录(fullfile (matlabroot,“工具箱”“共享”“跟踪”“fusionlib”));rng默认的;initialDist = 150;% minitialSpeed = 50;%公里brakeAccel = 3;% m / s ^ 2finalDist = 1;% m[scenario, egoCar] = helperCreateSensorDemoScenario(“结合”, initialDist, initialSpeed, brakeAccel, finalDist);

前向远程雷达

创建一个前向远程雷达传感器安装在自我车辆的前保险杠上,距离地面20厘米。该传感器以10hz(每0.1秒)的频率产生原始检测,方位视场为20度,角度分辨率为4度。其最大射程为150米,距离分辨率为2.5米。的ActorProfiles属性指定在模拟中雷达看到的车辆的物理尺寸和雷达横截面(RCS)模式。作为原始检测的替代方法,drivingRadarDataGeneratior是否可以输出集群检测或跟踪更新,如TargetReportFormat财产。

radarSensor = drivingradardatgenerator (“SensorIndex”, 1“TargetReportFormat”“检测”“UpdateRate”10“MountingLocation”, (egoCar.Wheelbase + egoCar。FrontOverhang 0 0.2],“FieldOfView”, [20 5],“RangeLimits”, [0 150],“AzimuthResolution”4“RangeResolution”, 2.5,“配置文件”actorProfiles(场景))
radarSensor = drivingradardatagator with properties: SensorIndex: 1 UpdateRate: 10 MountingLocation: [3.7000 0 0.2000] MountingAngles: [0 000] FieldOfView: [20 5] RangeLimits: [0 150] RangeRateLimits: [-100 100] DetectionProbability: 0.9000 FalseAlarmRate: 1.0000 -06使用get显示所有属性

雷达探测模拟

通过提前场景模拟时间,模拟雷达测量目标车辆位置。雷达传感器从真实目标姿态(位置、速度和方向)中产生检测,这些姿态表示在自我车辆的坐标框架中。

雷达配置为以0.1秒间隔产生探测,这与典型汽车雷达的更新速率一致。然而,为了准确地模拟车辆的运动,场景模拟每0.01秒向前推进一次。传感器返回一个逻辑标志,isValidTime,当雷达达到所需的更新间隔时为正确,表明该模拟时间步长将产生检测。

为FCW场景创建显示[bep, figScene] = helperCreateSensorDemoDisplay(scenario, egoCar, radarSensor);Metrics = struct;初始化结构以收集场景指标推进(场景)%更新车辆位置gTruth = targetpose (egoCar);在自我车辆坐标中获得目标位置生成带时间戳的雷达探测时间= scenario.SimulationTime;[dets, ~, isValidTime] = radarSensor(gTruth, time);如果isValidTime更新鸟瞰图与探测和道路边界helperUpdateSensorDemoDisplay(bep, egoCar, radarSensor, dets);收集雷达探测和地面真相进行离线分析。metrics = helperCollectScenarioMetrics(metrics, gTruth, dets);结束为已发布的示例拍摄快照helperPublishSnapshot (figScene、时间> = 9.1);结束

位置测量

在FCW测试期间,目标车辆与自我车辆的距离范围很广。通过将雷达测得的目标车辆纵向和横向位置与车辆地面真实位置进行比较,可以观察雷达测得位置的精度。

使用helperPlotSensorDemoDetections绘制纵向和横向位置误差,即雷达报告的测量位置与目标车辆地面真实位置之间的差值。目标车辆的地面真实参考值是目标车辆后轴中心正下方的地面上的点,在汽车保险杠前1米。

helperPlotSensorDemoDetections(指标、“位置”“反向范围”, [-6 6]);显示目标车辆的后悬垂tgtCar = scenario.Actors(2);rearOverhang = tgtCar.RearOverhang;次要情节(1、2、1);持有;plot(-rearOverhang*[11 1], ylim,“k”);持有;传奇(“错误”“2 \σ噪声”“后方过剩”);

纵向位置测量

对于前向雷达配置,雷达的距离测量与目标车辆的纵向位置相对应。

上图左边的纵向位置误差显示雷达测量的经度与目标的真实地面位置之间有-1米的偏差。这种偏差表明雷达一贯地测量目标比地面真实报告的位置更近。雷达不是将目标近似为空间中的单个点,而是对飞行器身体的物理尺寸进行建模。根据雷达在方位角、距离和(启用时)仰角上的分辨率,沿车辆的后方产生探测。这个-1米的偏移量由目标车辆的后悬垂来解释,它定义了车辆后侧和后轴之间的距离,也就是地面真实基准所在的位置。

雷达的模拟距离分辨率为2.5米。然而,美元\σ2美元据报道,测量噪声在最近的点小到0.25米,在最远的测试范围内略微增加到0.41米。实现的传感器精度远远小于雷达的距离分辨率。由于雷达使用Cramer-Rao下界对距离误差的信噪比依赖性进行建模,具有较大雷达截面(RCS)的目标或靠近传感器的目标将比较小或较远的目标具有更好的距离精度。

这种信噪比依赖于雷达的测量噪声是为雷达的每个测量尺寸建模的:方位角、高程、距离和距离率。

横向位置测量

对于前向雷达配置,与雷达距离测量正交的尺寸(通常称为传感器的横向距离尺寸)对应于目标车辆的横向位置。

右图中来自FCW测试的横向位置误差显示出强烈依赖于目标的地面真实值范围。雷达报告横向位置精度小到0.03米在近距离和高达2.6米时,目标远离雷达。

此外,当目标距离小于30米时出现多次探测。如前所述,目标飞行器不是作为空间中的单个点建模的,而是雷达模型将飞行器的尺寸与雷达的分辨率进行比较。在这种情况下,雷达观察目标车辆的后侧。当车辆的后侧跨越多个雷达的方位分辨率单元时,雷达从目标占据的每个分辨率单元产生探测。

计算FCW测试中目标车辆在距离自我车辆30米的真实地面范围内所跨越的方位角。

%从雷达到目标车辆后方的范围radarRange = 30-(radarsenor . mountinglocation (1)+tgtCar.RearOverhang);%车辆后方在30米地面真实范围内跨越的方位角width = tgtCar.Width;azSpan = rad2deg(width/radarRange)
azSpan = 4.0764

在地面真实距离30米时,车辆的后侧开始跨越一个大于雷达的方位角分辨率4度的方位角。由于目标后侧跨越的方位角超过了传感器的分辨率,因此沿车辆后侧生成了3个分辨率点:一个来自后侧中心,一个来自后侧左边缘,一个来自右侧边缘。

速度测量

创建一个有两个目标车辆的驾驶场景(一辆领先的车和一辆路过的车),以说明雷达纵向和横向速度测量的准确性。前车被放置在前车前方40米处,并以相同的速度行驶。超车从左侧车道开始,与自我车辆并排,超过自我车辆,并与领先车辆后面的右侧车道合并。这种合并操作生成纵向和横向速度分量,使您能够在这两个维度上比较传感器的精度。

因为领头车在雷达的正前方,它有一个纯粹的纵向速度分量。通过的车辆具有纵向和横向速度分量的速度剖面。当汽车超过第一辆车并进入领先车后面的右车道时,这些部件会发生变化。将雷达测得的目标车辆的纵向和横向速度与地面真实速度进行比较,说明了雷达观测这两个速度分量的能力。

%创建通过场景leadDist = 40;% m速度= 50;%公里passSpeed = 70;%公里[scenario, egoCar] = helperCreateSensorDemoScenario(“传递”, leadDist, speed, passSpeed);

雷达测速配置

雷达通过观察从每个目标返回的信号能量的多普勒频移来产生速度测量。目标距离相对于雷达变化的速率直接由这些多普勒频率推导出来。将上一节中使用的雷达传感器用于测量位置,并将其配置为生成距离-速率测量。这些测量的分辨率为0.5米/秒,这是汽车雷达的典型分辨率。

配置雷达进行距离率测量释放(radarSensor);radarSensor。HasRangeRate = true;radarSensor。rangeraterresolution = 0.5;% m / s为经过的汽车场景使用角色配置文件。radarSensor。Profiles = actorProfiles(场景);

使用helperRunSensorDemoScenario模拟自我和目标载具的运动。该函数还收集模拟指标,就像之前为FCW驾驶场景所做的那样。

snapTime = 6;%用于发布快照的模拟时间metrics = helperRunSensorDemoScenario(scenario, egoCar, radarSensor, snapTime);

使用helperPlotSensorDemoDetections将雷达的纵向和横向速度误差绘制为雷达报告的实测速度与目标车辆地面真实速度之间的差值。

helperPlotSensorDemoDetections(指标、“速度”“时间”, [-25 25]);次要情节(1、2、1);传奇(“前导车错误”“领先车2\sigma噪声”'传递汽车错误'“超车2\sigma噪声”“位置”“西北”);

纵向速度测量

对于前向雷达,纵向速度与雷达的距离率测量紧密一致。前面左边的图显示了雷达的纵向速度误差的通过车辆场景。由于雷达可以从两车接收到的信号能量中观测到的多普勒频移准确测量纵向速度,因此两车的速度误差(以点表示)都很小。然而,当经过的汽车在3秒后进入雷达视野时,经过的汽车的美元\σ2美元测量噪声(用黄色实线表示)最初很大。然后,噪音逐渐减小,直到7秒后,该车与前面的车合并进入右车道。当车辆超过自我车辆时,其纵向速度包括径向和非径向分量。雷达夸大了它的报告美元\σ2美元纵向速度噪声,表示其无法观察到通过车辆的非径向速度分量,当它超过自我车辆。

横向速度测量

对于前向雷达,测量的横向速度对应于目标的非径向速度分量。右图显示了过往车辆的横向速度测量误差,显示为黄色点。雷达无法测量横向速度,在过往车辆变道机动5到7秒之间产生了很大的误差。然而,雷达报告了一个大美元\σ2美元横向速度噪声(显示为实线),表示无法沿横向维度观测速度。

行人及车辆检测

雷达不仅能“看到”物体的物理尺寸(长、宽、高),而且对物体的物理尺寸也很敏感大小。一个物体的电尺寸被称为它的雷达截面(RCS),通常以分贝平方米(dBsm)为单位。一个物体的RCS定义了它如何有效地将从雷达接收到的电磁能量反射回传感器。一个对象的RCS值取决于许多属性,包括对象的大小、形状和它所包含的材料种类。目标的RCS也取决于雷达的发射频率。对于车辆和其他金属物体,这个值可能很大。对于77 GHz附近的典型汽车雷达频率,汽车的标称RCS约为10平方米(10 dBsm)。然而,非金属对象的值通常要小得多。-8 dBsm是与行人相关联的合理RCS。该值对应的有效电气面积仅为0.16平方米。 In an ADAS or autonomous driving system, a radar must be able to generate detections on both of these objects.

有行人和车辆的FCW驾驶场景

通过添加一个站在被停车辆旁边的人行道上的行人,重新访问前面的FCW场景。在FCW测试期间,从雷达到目标车辆和行人的距离跨越了很宽的值范围。通过比较雷达在测试范围内测试车辆和行人探测的测量信噪比(SNR),可以展示雷达的探测性能如何随着探测范围和物体类型的变化而变化。

创建FCW测试场景initialDist = 150;% mfinalDist = 1;% minitialSpeed = 50;%公里brakeAccel = 3;% m / s ^ 2withPedestrian = true;[scenario, egoCar] = helperCreateSensorDemoScenario(“结合”, initialDist, initialSpeed, brakeAccel, finalDist, withPedestrian);

雷达探测性能配置

雷达的探测性能通常由在特定范围内探测到RCS为0 dBsm的参考目标的概率来决定。创建一个远程雷达,在100米范围内探测RCS为0 dBsm的目标,探测概率为90%。

配置雷达的远程探测性能释放(radarSensor);radarSensor。ReferenceRange = 100;% mradarSensor。参考ercs = 0;% dBsmradarSensor。检测概率= 0.9;为经过的汽车场景使用角色配置文件。radarSensor。Profiles = actorProfiles(场景);

运行该场景以收集雷达探测和地面真相数据。存储它们以供离线分析。

snapTime = 8;%用于发布快照的模拟时间metrics = helperRunSensorDemoScenario(scenario, egoCar, radarSensor, snapTime);

绘制目标车辆和行人检测的信噪比。

helperPlotSensorDemoDetections(指标、“信噪比”“范围”, [0 160]);传奇(“汽车”“行人”);

这张图显示了一个物体的RCS对雷达“看到”它的能力的影响。与静止测试飞行器相对应的探测结果用红色表示。对行人的检测用黄色表示。

测试车辆在测试中最远的范围内被检测到,但在接近70米的地方,对行人的检测变得不那么一致。这是因为测试车辆的RCS (10 dBsm)比行人(-8 dBsm)大得多,这使得雷达能够在比行人更远的范围内探测到车辆。

测试车辆也在测试中包括的最近范围内被探测到,但雷达在20米附近停止对行人产生探测。在这种情况下,目标车辆直接放置在雷达的前面,但行人偏离了雷达的视线。接近20米时,行人已不在雷达视场内,雷达无法探测到。

以中程汽车雷达为例,重新审视这个场景,以说明雷达的探测性能是如何受到影响的。模拟一个中程雷达,在参考距离50米的范围内探测一个RCS为0 dBsm的目标,探测概率为90%。

为中距离探测需求配置雷达释放(radarSensor);radarSensor。ReferenceRange = 50;% mradarSensor。参考ercs = 0;% dBsmradarSensor。检测概率= 0.9;

此外,为了提高对近距离偏离雷达视线的物体的探测能力,中程雷达的方位角视场增加到90度。雷达的方位角分辨率设置为10度,以更快地搜索这一大面积覆盖区域。

增加雷达在方位角和仰角的视场分别为90度和10度radarSensor。FieldOfView = [90 10];增加雷达的方位分辨率radarSensor。AzimuthResolution = 10;

使用中程雷达和目标车辆和行人的信噪比进行FCW测试。画出信噪比。

运行模拟并收集检测和地面真相以进行离线分析。metrics = helperRunSensorDemoScenario(场景,egoCar, radarSensor);车辆和行人检测的图信噪比helperPlotSensorDemoDetections(指标、“信噪比”“范围”, [0 160]);传奇(“汽车”“行人”);

对于中距离雷达,车辆和行人的探测都被限制在较短的范围内。使用远程雷达,车辆被探测到整个测试范围,但现在车辆探测在95米变得不可靠。同样地,只有在35米外才能可靠地检测到行人。然而,中程雷达在方位角上的扩展视场使得从传感器到10米的地面真实范围内的行人探测能够显著提高对远程雷达的覆盖范围。

近距离目标的探测

当多个目标占用雷达的分辨率单元时,一组紧密间隔的目标被报告为单个探测。报告的位置是每个贡献目标位置的质心。这种将多个目标合并为单一探测在远距离是常见的,因为雷达的方位角分辨率所覆盖的区域随着与传感器距离的增加而增加。

创造一个场景,两辆摩托车并排行驶在自我车辆的前面。这个场景展示了雷达如何合并紧密间隔的目标。两辆摩托车之间的距离为1.8米,时速比ego车快10公里。

在这个场景的持续时间里,摩托车和自我车辆之间的距离增加了。当摩托车靠近雷达时,它们占据不同的雷达分辨率单元。在场景的最后,雷达和摩托车之间的距离增加后,两辆摩托车占用相同的雷达分辨率单元并合并。雷达的纵向和横向位置误差显示了这种转变在场景中发生的时间。

持续时间= 8;% sspeeddego = 50;%公里摩托车= 60;%公里distmotorcycle = 25;% m[scenario, egoCar] = helperCreateSensorDemoScenario(“肩并肩”, duration, speeddego, speedmotorcycle, distmotorcycle);%创建前面向远程汽车雷达传感器安装在自我车辆的前保险杠radarSensor = drivingradardatgenerator (“SensorIndex”, 1“TargetReportFormat”“检测”“MountingLocation”, (egoCar.Wheelbase + egoCar。FrontOverhang 0 0.2],“配置文件”actorProfiles(场景));运行模拟并收集检测和地面真相以进行离线分析。snapTime = 5.6;%用于发布快照的模拟时间metrics = helperRunSensorDemoScenario(scenario, egoCar, radarSensor, snapTime);

绘制雷达的纵向和横向位置误差。通过分析每辆摩托车报告的位置误差,您可以确定雷达不再能够将两辆摩托车区分为唯一物体的范围。

helperPlotSensorDemoDetections(指标、“位置”“范围”, [-3 3], true);次要情节(1、2、2);传奇(“左的错误”正确的错误的“合并错误”);

检测是从每辆摩托车的后部和内侧产生的。红色的误差来自左边的摩托车,黄色的误差来自右边的摩托车,紫色的点表示两辆摩托车之间合并的检测。两辆摩托车之间的距离为1.8米。每辆摩托车的宽度为0.6米,长度为2.2米。两辆摩托车内部的距离只有1.2米。

内部检测

检测是从每辆摩托车内侧的点产生的。探测从最近的边缘开始,根据雷达2.5米的距离分辨率和摩托车相对于雷达的位置在范围内采样。所述范围单元边界的位置产生检测,该检测发生在摩托车内侧的中间或远边缘。同时还生成了摩托车最近边缘的检测。这种通过雷达的距离分辨率单元边界的运动产生了左侧前面的图中所见的3个纵向位置误差带。这3条条带所覆盖的纵向总长度为2.2米,与摩托车的长度相对应。

由于摩托车内部的距离只有1.2米,这些采样点都落在一个共同的方位分辨率单元内,并被雷达合并。这些合并点的质心位于两辆摩托车的中间。合并探测的中心化产生了0.9米的横向偏差,对应于摩托车之间距离的一半。在右侧的横向位置误差图中,所有合并的检测(紫色所示)都具有这种偏差。

后侧检测

每辆摩托车后侧产生的检测点距离(1.8米)比内侧的采样点(1.2米)更远。

在场景开始时,摩托车距离自我车辆的真实距离为25米。在这么近的距离内,来自后方的探测位于不同的方位分辨率单元中,雷达不会将它们合并。这些明显的后方检测在前面的纵向和横向位置误差图中以红色点(左侧摩托车)和黄色点(右侧摩托车)表示。对于这些未合并的检测,来自摩托车后部的纵向位置误差被摩托车后部的悬垂(0.37 m)抵消。来自后部的横向位置误差没有表现出任何偏差。这一结果与FCW场景中观察到的位置误差一致。

总结

这个例子演示了如何使用合成探测对汽车雷达的输出进行建模。特别地,它介绍了如何drivingRadarDataGenerator模型:

  • 可以在远距离上提供精确的纵向位置和速度测量,但在远距离上的横向精度有限

  • 在近距离对单个目标产生多个检测,但在远距离将多个距离较近的目标的检测合并为单个检测

  • 在远距离上看到车辆和其他具有大雷达横截面的目标,但对行人等非金属物体的探测性能有限

另请参阅

应用程序

对象

相关的话题