主要内容

高速公路车辆跟踪与路径雷达反射

这个例子显示了挑战与跟踪相关车辆在公路上的多路径雷达反射。它还显示了一个鬼过滤方法同时使用一个扩展的对象跟踪滤波器鬼检测和跟踪对象。

介绍

汽车雷达传感器健壮的对不良环境条件过程中遇到开车,如雾、雪、雨,强烈的阳光。汽车雷达传感器有一个优势,因为他们在大大大波长比可见光区域的传感器,如激光雷达和摄像头。使用的副作用大的波长,在雷达传感器表面像镜子和产生干扰检测由于多路径传播。这些探测器通常被称为鬼检测因为他们似乎来自的地区不存在目标。这个例子向您展示了这些多路径的影响反思设计和配置对象使用雷达探测跟踪策略。更多细节关于鬼的多径现象,模拟检测,看到由于多路径返回模拟雷达鬼魂的例子。

在本例中,您从雷达传感器模拟多路检测在城市高速公路驾驶场景。模拟高速公路障碍在路的两边。自我的场景由车辆和四个其他车辆在高速公路上开车。自我的车辆配备了四个雷达传感器提供360度覆盖。这张照片显示的配置从一个扫描的雷达传感器和检测传感器。红色区域代表雷达传感器的视场和黑点代表检测。

雷达传感器报告检测从汽车和高速公路两侧的障碍。雷达也报告检测,似乎并不源自任何实际对象的场景。这些鬼检测由于多路径传播的雷达信号。对象追踪器假设所有检测来自真实的对象或均匀分布随机杂乱领域的观点。这种假设相反,鬼魂检测通常是更持久的混乱和像检测的目标。由于这个原因,一个物体跟踪算法很有可能产生错误的从这些检测跟踪。过滤掉这些检测前处理是很重要的雷达扫描追踪。

生成传感器数据

在这个例子中使用的场景使用的创建drivingScenario类。您使用radarDataGenerator系统对象™来模拟雷达的直接路径和反射回来的场景。的HasGhosts被指定为属性的传感器真正的模拟多路径反射。场景的创建和传感器模型包裹在helper函数helperCreateMultipathDrivingScenario附有这个例子。传感器获得的数据集模拟记录在垫子上的文件,其中包含返回雷达和相应的传感器配置。记录不同的场景或传感器的数据配置,您可以使用以下命令:

helperRecordData(场景、egoVehicle、传感器、帧);
%创建场景(场景、egoVehicle传感器)= helperCreateMultipathDrivingScenario;%加载记录数据负载(“MultiPathRadarScenarioRecording.mat”,“detectionLog”,“configurationLog”);

雷达处理链:雷达探测跟踪列表

在本节中,您建立了一个集成算法同时过滤雷达探测和跟踪扩展对象。框图说明了雷达处理链中使用这个例子。

接下来,您了解每个步骤和相应的辅助函数。

多普勒分析

雷达传感器报告反映的相对径向速度测量的信号。在这个步骤中,您利用径向速度测量的检测来确定目标是静态的或动态的[1]。在前面的雷达扫描,雷达探测到的大部分来源于自我车辆周围的静态环境。因此,将每个检测划分为静态或动态大大有助于提高对场景的理解。你使用helper函数helperClassifyStaticDynamic对每一个检测静态或动态进行分类。

静态的反射镜

静态环境通常也负责大部分的鬼魂反思报告的雷达传感器。分段数据集后,发现静态检测,你处理它们找到二维线段坐标系的自我。首先,您使用集群DBSCAN算法的静态检测到不同的集群在自我。其次,你适合每个集群的二维线段。这些安装线段定义可能的反射表面传播回雷达信号。你使用helper函数helperFindStaticReflectors从静态检测发现这些二维线段。

闭塞的分析

从表面反射产生的雷达传感器检测似乎产生背后的反射器。从雷达分段动态检测后,您使用简单的遮挡分析来确定雷达检测是阻挡后面可能的反射器。因为信号可以反映在静态或动态对象,你在两个步骤执行阻塞分析。首先,动态检测与二维线段代表针对阻塞检查静态反射镜。你使用helper函数helperClassifyGhostsUsingReflectors分类检测是否被静态反射器。第二,预测跟踪算法使用信息从一个扩展的跟踪算法,以检查闭塞对动态场景中的对象。算法只使用确认跟踪的跟踪器以防止overfiltering雷达探测的初步或假的踪迹。你使用helper函数helperClassifyGhostsUsingTracks分类动态对象如果检测阻挡。

整个算法处理雷达信号检测和分类然后包装成一个更大的helper函数,helperClassifyRadarDetections,这将和部分检测列表分为四个主要类别:

  1. 目标检测——这些检测分类源自真实场景中动态目标。

  2. 环境检测,这些检测分类源自静态环境。

  3. 鬼(静态)——这些检测分类源自动态目标但反映通过静态环境。

  4. 鬼(动态)——这些检测分类源自动态目标但反映通过其他动态对象。

设置GGIW-PHD扩展对象追踪

目标检测与扩展对象跟踪处理。在本例中,您使用一个γ高斯wishard逆概率假设密度(GGIW-PHD)扩展对象跟踪器。GGIW-PHD追踪模型目标与一个椭圆形状和测量模型假定检测内部均匀分布的程度的目标。这个模型允许接受two-bounce鬼检测目标,有更高的可能性并被错误地归类为一个真正的目标。这些two-bounce鬼检测报告多普勒测量,是不符合实际的运动目标。当这些鬼检测和实际目标检测来自同一对象估计属于同一分区检测,错误的多普勒信息可能会导致跟踪估计发散。

减少这一问题,跟踪处理测量数据与较高的测量噪声方差占这个缺陷目标的度量模型。跟踪器也使用高赋值阈值和低的结合合并阈值。高赋值阈值允许追踪减少新组件的一代鬼目标检测,并被错误地归类为目标检测。合并低阈值允许追踪丢弃纠正组件(假说)的跟踪,这可能与鬼检测分化由于校正。

你设置跟踪器使用trackerPHD系统对象™。有关扩展对象追踪者的更多细节,请参考扩展对象的高速公路车辆跟踪雷达和摄像头(自动驾驶工具箱)的例子。

%的传感器配置记录设置跟踪[~,sensorConfigurations] = helperAssembleData (detectionLog {1}, configurationLog {1});%配置跟踪器使用GGIW-PHD过滤常数周转周期运动模型i = 1:元素个数(sensorConfigurations) sensorConfigurations {}。FilterInitializationFcn = @helperInitGGIWFilter;sensorConfigurations {}。SensorTransformFcn = @ctmeas;结束%使用trackerPHD创建跟踪名称-值对追踪= trackerPHD (SensorConfigurations = SensorConfigurations,PartitioningFcn = @ (x) helperMultipathExamplePartitionFcn (x, 2、5),AssignmentThreshold = 450,ExtractionThreshold = 0.8,ConfirmationThreshold = 0.85,MergingThreshold = 25,DeletionThreshold = 1 e - 3,出生率= 1的军医,HasSensorConfigurationsInput = true);

运行情况和跟踪对象

接下来,您推进的情况下,使用传感器的测量记录,处理它们使用前面描述的算法。你分析跟踪算法的性能通过使用广义优化子模式分配(GOSPA)指标。你也分析的性能分类滤波算法通过估计混合矩阵之间的真实估计雷达检测分类。你获得真正的分类检测使用的信息helperTrueClassificationInfohelper函数。

%计算GOSPA度量创建trackGOSPAMetric对象gospaMetric = trackGOSPAMetric(距离=“自定义”,DistanceFcn = @helperGOSPADistance,CutoffDistance = 35);%创建可视化的显示结果显示= helperMultiPathTrackingDisplay;%预测跟踪列表鬼过滤predictedTracks = objectTrack.empty (0,1);%混淆矩阵confMat = 0(5 5元素个数(detectionLog));% GOSPA规gospa = 0(4元素个数(detectionLog));%地面实况groundTruth = scenario.Actors(2:结束);i = 1:元素个数(detectionLog)%推进地面实况场景可视化推进(场景);%当前时间时间= scenario.SimulationTime;%检测和传感器配置(检测、配置)= helperAssembleData (detectionLog {}, configurationLog{我});%预测分类鬼魂证实跟踪当前时间如果isLocked(跟踪)predictedTracks = predictTracksToTime(追踪,“确认”、时间);结束%分类雷达探测目标,幽灵,或静态环境(目标,ghostStatic ghostDynamic,静态,反光镜,classificationInfo] = helperClassifyRadarDetections(检测、egoVehicle predictedTracks);%通过检测从目标跟踪器和传感器配置confirmedTracks =追踪(目标、配置时间);%可视化结果显示器(egoVehicle、传感器、目标,confirmedTracks、ghostStatic ghostDynamic,静态的,反射镜);%计算GOSPA规[gospa(我),~,~,gospa(我),gospa(我),gospa(我)]= gospaMetric (confirmedTracks groundTruth);%得到真正的分类信息并生成混淆矩阵trueClassificationInfo = helperTrueClassificationInfo(检测);confMat(:,:我)= helperConfusionMatrix (trueClassificationInfo classificationInfo);结束

结果

动画和快照分析

接下来的动画显示雷达数据处理链的结果。车辆周围的黑色椭圆代表估计跟踪。雷达检测可视化与四个不同的颜色取决于他们预测的分类算法。可视化的黑点表示静态的雷达目标检测。注意,这些检测是由黑色线条重叠的,这代表了静态反射镜发现使用DBSCAN算法。栗色标记代表检测处理的扩展对象追踪,而绿色和蓝色标记代表雷达检测分为反射通过静态和动态对象,分别。注意跟踪能够保持车辆跟踪四个场景。

MultipathTrackingExample.gif

接下来,您使用不同的快照捕获分析算法的性能仿真。下面的快照捕获在3秒,显示了自我车辆前面的情况。这个时候,自我车辆接近缓慢移动的卡车,和左边的雷达传感器观察这些对象的反映通过左边的障碍。这些检测显示为镜像检测这些对象的障碍。注意,黑线估计作为二维反射器在这些检测的视线。因此,该算法能够正确分类这些检测鬼目标反射静态对象。

f = showSnaps(显示,1:2,1);如果~ isempty (f) ax = findall (f,“类型”,“轴”,“标签”,“birdsEyePlotAxes”);斧子。XLim = 30 [-10];斧子。YLim = 20 [-10];结束

{“字符串”:“图包含一个轴uipanel类型的对象和其他对象。坐标轴对象包含13个补丁,类型的对象,文本。这些对象代表巷、跟踪(历史),反射镜,目标,鬼,鬼(D),静态的。”,“它”:[],“乳胶”:[]}

接下来,分析算法的性能使用快照捕获在4.3秒。这个时候,自我车辆甚至接近卡车和卡车大约是介于绿色车辆和自我。在这些情况下,左边的卡车作为强反射器和生成鬼检测。右边的检测绿色汽车的一半来自two-bounce检测的绿色车辆信号传播回传感器反射后卡车。该算法能够将这些检测鬼检测动态对象产生反射,因为卡车的估计程度的直接视线这些检测。

f = showSnaps(显示、1:2、2);如果~ isempty (f) ax = findall (f,“类型”,“轴”,“标签”,“birdsEyePlotAxes”);斧子。XLim = 30 [-10];斧子。YLim = 20 [-10];结束

{“字符串”:“图包含一个轴uipanel类型的对象和其他对象。坐标轴对象包含13个补丁,类型的对象,文本。这些对象代表巷、跟踪(历史),反射镜,目标,鬼,鬼(D),静态的。”,“它”:[],“乳胶”:[]}

还要注意过往车辆用左边的黄色汽车自我的工具。检测,这似乎源自掉看不到黄色的车,表面是two-bounce检测的障碍,通过过往车辆的正面反映。这些鬼检测并被错误地归类为目标检测,因为他们似乎来自内部的估计范围。在相同的位置,超越障碍的检测也two-bounce检测时正面的信号反射的障碍并返回到传感器。因为这些检测超出轨道和轨道的程度是在直接的视线,他们被归类为鬼检测反射动态对象。

性能分析

定量评估使用GOSPA跟踪算法的性能指标及其相关组件。较低的价值度量表示更好的跟踪性能。在下图中,射失后的指标仍然是零组件几步一开始,代表建立延迟的追踪以及一个闭塞的目标。组件的零值表明,没有错过的跟踪目标。的False-tracks度规的组件增加1秒85时间步左右。这代表一个错误的跟踪器跟踪确认的短时间内从鬼检测错误归类为一个真正的目标。

图;情节(gospa ',“线宽”2);传奇(“GOSPA”,“本地化GOSPA”,“射失GOSPA”,“False-tracks GOSPA”);

图包含一个坐标轴对象。坐标轴对象包含4线类型的对象。这些对象代表GOSPA、本地化GOSPA射失GOSPA, False-tracks GOSPA。

类似于跟踪算法,还定量分析雷达检测性能的分类算法通过使用混淆矩阵[2]。表中所示的行表示真正的分类信息的雷达探测和列表示预测的分类信息。例如,第一行的第二个元素定义了目标检测的比例预测为鬼魂从静态对象反射。

超过90%的目标检测正确分类。但是,一小部分目标检测并被错误地归类为鬼魂从动态反映。同时,大约3%的鬼魂从静态对象反射和20%的鬼魂从动态对象反射并被错误地归类为目标和发送的追踪处理。当这发生在这个例子中一种常见的情况是当检测从two-bounce反射躺在估计车辆的程度。进一步说,在这个例子中使用的分类算法是设计在现场找到假警报或杂物。因此,第五纵队的混淆矩阵为零。由于空间分布的假警报在视野内,大部分的假警报探测分为反射对象从静态或动态对象。

%积累混淆矩阵的所有步骤confusionMatrix = (confMat, 3)之和;numElements = (confusionMatrix, 2)之和;numElemsTable = array2table (numElements,“VariableNames”,{检测的数量},“RowNames”,{“目标”,“鬼(S)”,“鬼(D)”,“环境”,“混乱”});disp (的真实信息);disp (numElemsTable);
真实信息的检测____________________目标1969鬼(S) 3155鬼(D) 849 27083年环境杂乱138
%计算百分比percentMatrix = confusionMatrix. / numElements * 100;percentMatrixTable = array2table(圆(percentMatrix, 2),“RowNames”,{“目标”,“鬼(S)”,“鬼(D)”,“环境”,“混乱”},“VariableNames”,{“目标”,“鬼(S)”,“鬼(D)”,“环境”,“混乱”});disp (“真正vs预测混淆矩阵(%)');disp (percentMatrixTable);
真正对预测混淆矩阵(%)目标鬼鬼(D) (S)环境杂乱累积替___________目标90.76 - 0.56 8.28 - 0.41 0鬼(S) 3.17 85.52 10.97 0.35 0鬼(D) 16.96 0.24 82.8 1.02 2.7 4.11 92.17 0 0 0环境杂乱21.74 63.04 14.49 0.72 0

总结

在本例中,您模拟雷达探测由于多路径传播在城市高速公路驾驶场景。您配置的数据处理算法同时过滤鬼探测和跟踪车辆在高速公路上。你也分析了跟踪算法的性能和分类算法使用GOSPA度量和混淆矩阵。

引用

[1]先知,罗伯特,et al。“瞬时鬼在汽车检测识别场景。”2019年IEEE雷达会议(RadarConf)。IEEE 2019。

[2]克劳斯,御马,等。“用机器学习来检测鬼在汽车雷达图像。”2020年IEEE 23日国际会议上智能交通系统(ITSC)。IEEE 2020。