多雷达检测融合gydF4y2Ba

这个例子展示了如何从多平台雷达网络中融合雷达探测。该网络包括两个机载和一个陆基远程雷达平台。看到gydF4y2Ba多平台雷达探测生成gydF4y2Ba例子的细节。中央跟踪器以固定的更新间隔处理来自所有平台的检测。这使您能够根据目标类型、平台操作以及平台配置和位置来评估网络的性能。gydF4y2Ba

加载跟踪场景的记录gydF4y2Ba

的gydF4y2BaMultiplatformRadarDetectionGenerationgydF4y2BaMAT-文件包含使用以下命令先前产生的跟踪情况记录gydF4y2Ba

记录=记录(场景,gydF4y2Ba“IncludeSensors”gydF4y2Ba,真的,gydF4y2Ba“InitialSeed”gydF4y2Ba,2018年,gydF4y2Ba“RecordingFormat”gydF4y2Ba,gydF4y2Ba“记录”gydF4y2Ba)gydF4y2Ba

在哪里gydF4y2Ba场景gydF4y2Ba是在多平台雷达探测生成实例中创建的跟踪场景。gydF4y2Ba

负载(gydF4y2Ba'MultiplatformScenarioRecording.mat'gydF4y2Ba);gydF4y2Ba

定义中央追踪gydF4y2Ba

使用gydF4y2BatrackerGNNgydF4y2Ba作为一个中央跟踪器,处理从场景中所有雷达平台接收到的探测。gydF4y2Ba

跟踪器使用gydF4y2BainitFiltergydF4y2Ba万博1manbetx支持函数初始化一个恒定速度扩展卡尔曼滤波器的每个新轨道。gydF4y2BainitFiltergydF4y2Ba修改所返回的筛选器gydF4y2BainitcvekfgydF4y2Ba来匹配高目标速度。过滤器的过程噪声设置为1gydF4y2Ba ggydF4y2Ba (gydF4y2Ba ggydF4y2Ba =gydF4y2Ba 9gydF4y2Ba 。gydF4y2Ba 8gydF4y2Ba 米gydF4y2Ba /gydF4y2Ba 年代gydF4y2Ba 2gydF4y2Ba ),以便在该场景中跟踪机动目标。gydF4y2Ba

跟踪器的gydF4y2BaAssignmentThresholdgydF4y2Ba设置为50,以实现与大范围的偏差的检测(在长检测范围由于大气折射效果)将与在该跟踪轨道相关联。的gydF4y2BaDeletionThresholdgydF4y2Ba设置为3可以快速删除多余的音轨。gydF4y2Ba

启用gydF4y2BaHasDetectableTrackIDsInputgydF4y2Ba指定自上次更新以来至少一个雷达视场范围内的航迹。跟踪逻辑仅在上次跟踪器更新后有检测机会的轨道上进行评估。gydF4y2Ba

跟踪= trackerGNN(gydF4y2Ba“FilterInitializationFcn”gydF4y2Ba@initFilter,gydF4y2Ba...gydF4y2Ba'AssignmentThreshold'gydF4y2Ba50,gydF4y2Ba“DeletionThreshold”gydF4y2Ba,3,gydF4y2Ba...gydF4y2Ba“HasDetectableTrackIDsInput”gydF4y2Ba,真正的);gydF4y2Ba

通过在中央跟踪器中融合探测来跟踪目标gydF4y2Ba

下面的循环运行的跟踪情况记录,直到场景结束。对于在场景中前进的每个步骤,检测被收集用于由中央处理跟踪。跟踪器与这些检测,每2秒更新一次。gydF4y2Ba

trackUpdateRate = 0.5;gydF4y2Ba%每2秒更新一次跟踪器gydF4y2Ba属性的真实、测量和跟踪位置gydF4y2Ba%检测到目标和平台。gydF4y2BatheaterDisplay = helperMultiPlatFusionDisplay(录音,gydF4y2Ba“PlotAssignmentMetrics”gydF4y2Ba,真正的);gydF4y2Ba%构造一个对象以分析分配和误差度量gydF4y2BaTAM = trackAssignmentMetrics(gydF4y2Ba'DistanceFunctionFormat'gydF4y2Ba,gydF4y2Ba“自定义”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“AssignmentDistanceFcn”gydF4y2Ba@truthAssignmentDistance,gydF4y2Ba...gydF4y2Ba“DivergenceDistanceFcn”gydF4y2Ba,@truthAssignmentDistance);gydF4y2Ba%初始化缓冲区gydF4y2BadetBuffer = {};sensorConfigBuffer = [];allTracks = [];detectableTrackIDs = uint32 ([]);assignmentTable = [];gydF4y2Ba初始化下一个跟踪程序更新时间gydF4y2BanextTrackUpdateTime = 2;gydF4y2Ba而gydF4y2Ba~结束(记录)gydF4y2Ba读取记录的下一个记录。gydF4y2Ba[时间,真实的操作,covcon, dets, senscon, sensPlatIDs] =读(记录);gydF4y2Ba缓冲所有检测和传感器配置,直到下一次跟踪更新gydF4y2BadetBuffer = [detBuffer;依据);gydF4y2Ba% #好< AGROW >gydF4y2BasensorConfigBuffer = [sensorConfigBuffer;senscon'];gydF4y2Ba% #好< AGROW >gydF4y2Ba%按照trackUpdateRate更新跟踪程序gydF4y2Ba如果gydF4y2Ba时间> = nextTrackUpdateTime ||isDone(记录)gydF4y2Ba如果gydF4y2Baisempty(detBuffer) lastDetectionTime =时间;gydF4y2Ba其他gydF4y2BalastDetectionTime = detBuffer{}结束.Time;gydF4y2Ba结束gydF4y2Ba如果gydF4y2BaisLocked(跟踪)gydF4y2Ba收集至少一个雷达区域内的轨迹列表gydF4y2Ba%的视图自上次跟踪更新gydF4y2Bapredictedtracks = predictTracksToTime(跟踪器,gydF4y2Ba“所有”gydF4y2Ba,lastDetectionTime);detectableTrackIDs = detectableTracks(allTracks,predictedtracks,sensorConfigBuffer);gydF4y2Ba结束gydF4y2Ba%更新追踪。只运行轨道逻辑的轨道内落在gydF4y2Ba自上次追踪器升级的视图%至少一个雷达场gydF4y2Ba[confirmedTracks, ~, allTracks] = tracker(detBuffer, lastDetectionTime, detectableTrackIDs);gydF4y2Ba%分析和检索当前的跟踪到事实的分配指标gydF4y2BaTAM(confirmedTracks,truePoses);gydF4y2Ba将分配指标存储在表中gydF4y2BacurrentAssignmentTable = trackMetricsTable (tam);rowTimes =秒(时间*(大小(currentAssignmentTable, 1), 1));assignmentTable =猫(1 assignmentTable table2timetable (currentAssignmentTable,gydF4y2Ba“RowTimes”gydF4y2Ba,rowTimes));gydF4y2Ba更新显示检测,覆盖和跟踪gydF4y2BatheaterDisplay(detBuffer,covcon,confirmedTracks,assignmentTable,truePoses,sensPlatIDs);gydF4y2Ba%空缓冲区gydF4y2BadetBuffer = {};sensorConfigBuffer = [];gydF4y2Ba%更新下次跟踪更新时间gydF4y2BanextTrackUpdateTime = nextTrackUpdateTime + 1 / trackUpdateRate;gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba

在该场景的最后,您将看到多个跟踪被删除和替换。您还可以看到在场景持续期间,音轨与平台之间的关联。场景中有7行,对应7个平台。每条轨迹都显示为一条水平线。曲目编号在每行的开头都有注释。每当一个磁道被删除时,它的行就会停止。每当一个新轨道被分配给一个平台时,一个新轨道就会被添加到平台的行中,当一个平台同时显示多个行时,平台就会有多个轨道被分配给它。在这些情况下,与平台相关联的新轨道被认为是gydF4y2Ba冗gydF4y2Ba。gydF4y2Ba

endTime = assignmentTable.Time(结束);assignmentTable (endTime, {gydF4y2Ba'的TrackID'gydF4y2Ba,gydF4y2Ba'AssignedTruthID'gydF4y2Ba,gydF4y2Ba“TotalLength”gydF4y2Ba,gydF4y2Ba“DivergenceCount”gydF4y2Ba,gydF4y2Ba“RedundancyCount”gydF4y2Ba,gydF4y2Ba'RedundancyLength'gydF4y2Ba})gydF4y2Ba
ans =gydF4y2Ba9×6时间表gydF4y2Ba时间的TrackID AssignedTruthID TotalLength DivergenceCount RedundancyCount RedundancyLength ______ _______ _______________ ___________ _______________ _______________ ________________ 60秒1 2 27 0 0 0 60秒7 4 27 0 0 0 60秒8 10 26 0 0 0 60秒9 1 22 0 0 0 60秒11的NaN10 0 0 0 60秒12 6 20 0 0 0 60秒24 7 19 0 1 4 60秒32的NaN 7 0 1 7 60秒41 3 10 0 0 0gydF4y2Ba

需要注意的是,在维护航迹方面有困难的平台(4号和7号平台)也是距离雷达最远的平台。这种较差的跟踪性能是由于测量噪声的高斯分布假设造成的。该假设适用于短射程目标,但在长射程目标上,测量不确定度偏离高斯分布。下图比较了实际目标分布与雷达传感器给出的目标分布对应的1-sigma协方差椭圆。传感器距离目标5公里,角度分辨率为5度。实际测量不确定度是由雷达估计目标位置的球面传感器检测坐标系产生的凹形。gydF4y2Ba

maxCondNum = 300;数字;helperPlotLongRangeCorrection(maxCondNum)gydF4y2Ba

为了解释长范围内的实际协方差的凹形gydF4y2BalongRangeCorrectiongydF4y2Ba万博1manbetx支持函数约束了所报告的测量噪声的条件数。上述修正的测量协方差被限制在最大条件数为300。换句话说,测量协方差中的特征值不可能比协方差最大的特征值小300倍以上。该方法将测量噪声沿距离维数进行扩展,以更好地匹配实际测量不确定度的凹度。gydF4y2Ba

用长程协方差校正进行模拟gydF4y2Ba

使用重新运行以前的模拟gydF4y2BalongRangeCorrectiongydF4y2Ba万博1manbetx支持功能,以纠正报告的测量噪音在长范围。gydF4y2Ba

[confirmedTracks, correctedAssignmentTable ctheaterDisplay] =gydF4y2Ba...gydF4y2BarunMultiPlatFusionSim(录音、追踪、@longRangeCorrection);gydF4y2Ba

endTime = correctedAssignmentTable.Time(结束);correctedAssignmentTable (endTime, {gydF4y2Ba'的TrackID'gydF4y2Ba,gydF4y2Ba'AssignedTruthID'gydF4y2Ba,gydF4y2Ba“TotalLength”gydF4y2Ba,gydF4y2Ba“DivergenceCount”gydF4y2Ba,gydF4y2Ba“RedundancyCount”gydF4y2Ba,gydF4y2Ba'RedundancyLength'gydF4y2Ba})gydF4y2Ba
ans =gydF4y2Ba7×6时间表gydF4y2Ba时间TrackID AssignedTruthID TotalLength DivergenceCount RedundancyCount RedundancyLength ______ _________售予___________售予售予___________ 60秒27 1 2 0 0 0 60秒7 4 0 0 0 60秒27日8 5 0 0 0 26日60秒9 1 0 0 0 60秒22日11 7 25 60秒12 6 20 0 0 0 0 0 0 60秒38 3 10 0 0 0gydF4y2Ba

前述图所示,通过应用远程校正中,针对整个场景中不会产生轨道滴或多个曲目。在这种情况下,有一种通过监视网络检测到的每个平台只有一个轨道。gydF4y2Ba

allDetections = vertcat (recording.RecordedData.Detections);ctheaterDisplay(allDetections,covcon,confirmedTracks,correctedAssignmentTable,truePoses, sensPlatIDs)坐标轴(ctheaterDisplay. theaterplot . parent)gydF4y2Ba“关闭”gydF4y2Ba)xlim(5000年[-1000]);ylim(-36000年[-41000]);-5000年zlim ([0]);视图(90[-90])轴gydF4y2Ba广场gydF4y2Ba标题(gydF4y2Ba“喷气执行水平转弯”gydF4y2Ba)gydF4y2Ba

在执行水平转弯时,即使本例中使用的运动模型是匀速运动,轨迹也能较好地跟随机动目标。采用多模型交互(IMM)滤波算法,可以进一步提高机动跟踪性能gydF4y2BatrackingIMMgydF4y2Ba过滤器。gydF4y2Ba

视图(25 [-60])gydF4y2Ba

从其中喷射正在执行的水平转另一视图中,可以看到的是,高度被正确地估计,尽管来自传感器的不准确的高度测量值。其中一个传感器不能在所有报告的高度,由大型垂直椭球所见,而其他两个传感器低估了他们在高度不确定性。gydF4y2Ba

XLIM([ -  25000 -9000]);ylim([ -  31000 -19000]);zlim([ -  9000 -2000]);视图([ -  45 10])标题(gydF4y2Ba“穿越飞机”gydF4y2Ba)gydF4y2Ba

把视角转到交叉航线上,同样不准确的高度测量也被描述了出来。请注意,红色探测集中在8公里的高度,而两架飞机分别在3和4公里的高度飞行。在高度上使用非常大的协方差允许跟踪器忽略红色探测到的错误高度读数,并使用另外两个雷达跟踪高度。通过观察track T07和T08的不确定性协方差,您可以看到它们分别提供了对平台P04和P05的一致估计。gydF4y2Ba

XLIM([ -  10000 10000]);ylim([ -  0 10000]);zlim([ -  12000 -5000]);视图([ -  15 10])标题(gydF4y2Ba机载雷达平台的gydF4y2Ba)gydF4y2Ba

最后一个情节集中在两个机载雷达平台上。每个平台由另一个平台以及地面雷达探测。平台的轨迹相互交叉,高度相差1000米,它们的轨迹与地面的真实情况一致。gydF4y2Ba

总结gydF4y2Ba

这个例子展示了如何在一个中央跟踪器中处理多个机载和地基雷达平台上收集的探测。在本例中,您了解了如何用高斯分布对长范围的测量噪声进行精确建模。测量噪声的1-西格玛椭圆在这些长范围内的凹性导致了较差的跟踪性能,包括下降的轨迹和分配给一个平台的多个轨迹。您还学习了如何纠正测量噪声的检测范围,以提高连续性的报告轨道。gydF4y2Ba

万博1manbetx支持功能gydF4y2Ba

initFiltergydF4y2Ba这个函数修改功能gydF4y2BainitcvekfgydF4y2Ba处理更高的速度目标,如在方案中的客机。gydF4y2Ba

函数gydF4y2Bafilter = initFilter(detection) filter = initcvekf(detection);classToUse =类(filter.StateCovariance);gydF4y2Ba飞机能以每小时900公里左右的速度飞行。。速度被初始化gydF4y2Ba%为0,但需要能够快速适应飞机的移动速度gydF4y2Ba%的速度。用900千米/小时作为速度的1个标准差gydF4y2Ba%的噪音。gydF4y2Ba社民党= 900 * 1 e3/3600;gydF4y2Ba% 女士gydF4y2BavelCov =投(社民党^ 2,classToUse);x = filter.StateCovariance;浸(2,2)= velCov;浸(4,4)= velCov;过滤器。StateCovariance =浸;gydF4y2Ba设置过滤器的过程噪声,以允许一些水平的机动gydF4y2BascaleAccel =铸造(10,classToUse);Q = blkdiag(scaleAccel ^ 2,scaleAccel ^ 2,1);filter.ProcessNoise = Q;gydF4y2Ba结束gydF4y2Ba

detectableTracksgydF4y2Ba该函数返回位于至少一个传感器视场范围内的轨迹的id。传感器的视场和相对于轨道坐标系的方向存储在传感器配置结构的阵列中。方法返回配置结构gydF4y2BamonostaticRadarSensorgydF4y2Ba并可用于将跟踪位置和速度转换为传感器的坐标系。gydF4y2Ba

函数gydF4y2BatrackIDs = detectableTracks(跟踪、predictedtracks配置)gydF4y2Ba%确定哪些轨迹落在传感器的视场范围内gydF4y2BanumTrks =尺寸(音轨,1);[numsteps,numSensors] =尺寸(CONFIGS);allposTrack =零(3,numsteps);isDetectable =假(numTrks,1);gydF4y2Ba对于gydF4y2BaiTrk = 1: numTrksgydF4y2Ba在当前位置和预测之间插入跟踪位置gydF4y2Ba%每个模拟步骤的位置gydF4y2BaposTrack =跟踪(iTrk) .State(1:2:结束);posPreditedTrack = predictedtracks (iTrk) .State(1:2:结束);gydF4y2Ba对于gydF4y2BaIPOS = 1:3 allposTrack(IPOS,:) = linspace(posTrack(IPOS),posPreditedTrack(IPOS),numsteps);gydF4y2Ba结束gydF4y2Ba对于gydF4y2Baconfigs(:,iSensor) = 1:numSensors thisConfig = config (:,iSensor);gydF4y2Ba对于gydF4y2Bak = 1: numstepsgydF4y2Ba如果gydF4y2BathisConfig (k)。IsValidTime pos = trackToSensor(allposTrack(:,k),thisConfig(k));gydF4y2Ba检查预测的轨道位置是否在传感器区域内gydF4y2Ba%视野gydF4y2Ba(阿兹,el) = cart2sph (pos pos (1), (2), pos (3));阿兹=阿兹* 180 /π;el = el * 180 /π;inFov = abs(az)如果gydF4y2Bais(iTrk) = inFov;k = numsteps;gydF4y2Ba% #好< FXSET >gydF4y2BaiSensor = numSensors;gydF4y2Ba% #好< FXSET >gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba结束gydF4y2BatrackIDs = [tracks.TrackID]';trackIDs = trackIDs(isDetectable);gydF4y2Ba结束gydF4y2Ba

trackToSensorgydF4y2Ba该函数返回轨道的在传感器位置的坐标框架。轨道结构由返回gydF4y2BatrackerGNNgydF4y2Ba对象和配置结构的传感器的定向的相对限定的轨道的坐标系是由返回gydF4y2BamonostaticRadarSensorgydF4y2Ba对象。gydF4y2Ba

函数gydF4y2Bapos = trackToSensor(pos,config)帧数= config. measurementparameters;gydF4y2Ba对于gydF4y2Bam = numel(帧):-1:1 rotmat =帧(m).方向;gydF4y2Ba如果gydF4y2Ba~帧(m)。IsParentToChild rotmat = rotmat';gydF4y2Ba结束gydF4y2Ba偏移量= (m) .OriginPosition框架;pos = bsxfun (@minus、pos、抵消);pos = rotmat * pos;gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba

longRangeCorrectiongydF4y2Ba此功能限制由雷达报告到不超过最大条件数测量噪声精度。条件数被定义为测量噪声的最大特征值的特征值的比率。gydF4y2Ba

当从雷达上远距离探测目标时,测量不确定度的曲面曲率不再近似为椭球,而是近似为凹椭球。测量噪声必须沿距离维数增加,以考虑凹性,产生一个包含凹椭球的平面椭圆。文献中有几种方法可以解决这个问题。在这里,通过增加最小特征值来满足最大条件数约束来限制测量噪声的最大条件数。这就产生了沿量程尺寸增加不确定度的效果,产生了一个能更好地覆盖凹不确定度的椭圆。gydF4y2Ba

函数gydF4y2Badets的= longRangeCorrection(dets的,maxCond)gydF4y2Ba对于gydF4y2Bam = 1:numel(dets) R = dets{m}.测量噪声;[Q, D] = eig (R);Q =实际(Q);d =实际(诊断接头(d));距离= max (d);condNums = dMax. / d;iFix。= condNums > maxCond;d (iFix。) =距离/ maxCond;R = Q *诊断接头(d) * Q ';依据{m}。MeasurementNoise = R;结束gydF4y2Ba结束gydF4y2Ba