主要内容gydF4y2Ba

多平台雷达探测融合gydF4y2Ba

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

加载跟踪场景的记录gydF4y2Ba

的gydF4y2Ba多平面形状达蒙特gydF4y2BaMAT-file包含一个跟踪场景,记录以前使用以下命令生成的场景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金宝app支持功能以初始化每个新轨道的恒定速度扩展卡尔曼滤波器。gydF4y2BainitFiltergydF4y2Ba修改返回的过滤器gydF4y2BainitcvekfgydF4y2Ba匹配高目标速度。过滤器的过程噪声设置为1gydF4y2Ba ggydF4y2Ba (gydF4y2Ba ggydF4y2Ba =gydF4y2Ba 9gydF4y2Ba .gydF4y2Ba 8gydF4y2Ba 米gydF4y2Ba /gydF4y2Ba 年代gydF4y2Ba 2gydF4y2Ba ),以启用场景中机动目标的跟踪。gydF4y2Ba

跟踪器的gydF4y2BaAssignmentThresholdgydF4y2Ba设置为50,以使具有大范围偏差的探测(由于长探测范围的大气折射效应)与跟踪器中的跟踪相关联。的gydF4y2BaDeletionThresholdgydF4y2Ba设置为3,可以快速删除冗余音轨。gydF4y2Ba

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

追踪= trackerGNN (gydF4y2Ba“FilterInitializationFcn”gydF4y2Ba@initFilter,gydF4y2Ba...gydF4y2Ba“AssignmentThreshold”gydF4y2Ba, 50岁,gydF4y2Ba“DeletionThreshold”gydF4y2Ba3,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[time, truePoses, covcon, dets, senscon, sensPlatIDs] =读取(记录);gydF4y2Ba缓冲所有的检测和传感器配置,直到下一次跟踪器更新gydF4y2BadetBuffer = [detBuffer;]依据);gydF4y2Ba% #好< AGROW >gydF4y2BasensorConfigBuffer = [sensorConfigBuffer;senscon ');gydF4y2Ba% #好< AGROW >gydF4y2Ba%跟踪trackUpdateRate以更新跟踪器gydF4y2Ba如果gydF4y2Batime >= 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%更新追踪。只运行轨道逻辑在轨道之内的atgydF4y2Ba自上次追踪器更新后至少有一个雷达视野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”gydF4y2BarowTimes));gydF4y2Ba%用检测、覆盖和轨道更新显示gydF4y2Ba剧场显示(detBuffer, covcon, confirmedTracks, assignmentTable, true, 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秒27 1 2 0 0 0 60秒7 4 0 0 0 60秒27日8 5 26 60秒9 1 22 0 0 0 0 0 0 60秒11南10 0 0 0 60秒12 6 20 0 0 0 60秒24 7 19 0 1 4 60秒32南7 0 1 760秒41 3 10 0 0 0gydF4y2Ba

请注意,在维护轨道(平台4和7)中具有困难的平台也是从雷达最远的平台。这种较差的跟踪性能归因于测量噪声的高斯分布假设。假设对于短程范围的目标工作良好,但在长范围内,测量不确定性偏离高斯分布。下图比较了对应于实际目标分布的1-Sigma协方差椭圆和雷达传感器给出的目标的分布。传感器距离目标有5公里,角度分辨率为5度。实际测量不确定度具有由球形传感器检测坐标帧产生的凹形形状,其中雷达估计目标的位置。gydF4y2Ba

maxCondNum = 300;图;helperPlotLongRangeCorrection (maxCondNum)gydF4y2Ba

为了解释长期实际协方差的凹形gydF4y2BalongRangeCorrectiongydF4y2Ba金宝app支持功能约束报告的测量噪声的条件数。上面所示的校正测量协方差受到300的最大条件数量。换句话说,测量协方差中没有特征值可以比协方差最大的特征值小300倍以上。这种处理扩展了沿着范围尺寸的测量噪声,以更好地匹配实际测量不确定性的凹面。gydF4y2Ba

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

控件重新运行前面的模拟gydF4y2BalongRangeCorrectiongydF4y2Ba金宝app支持功能以纠正长距离的报告的测量噪声。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秒1 2 0 0 0 60秒27日7 4 0 0 0 27日60秒8 5 26 0 0 0 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(recorning.recordeddata.detections);ctheaterdisplay(alldetections,covcon,确认具备,纠正的分组,truepose,sensplatids)轴(ctheaterdisplay.theepterplot.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(-9000年[-25000]);ylim(-19000年[-31000]);zlim(-2000年[-9000]);视图(-45[10])标题(gydF4y2Ba“穿越飞机”gydF4y2Ba)gydF4y2Ba

切换视角,将焦点放在飞越的客机上,同样的不准确的高度测量也会被描述出来。请注意红色探测是如何集中在8公里的高度,而两架客机分别在3公里和4公里的高度飞行。在高度上使用非常大的协方差允许跟踪器忽略红色探测的错误高度读数,并使用其他两个雷达跟踪高度。观察轨道T07和T08的不确定性协方差,可以看到它们分别提供了平台P04和P05的一致估计。gydF4y2Ba

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

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

概括gydF4y2Ba

此示例显示了如何在中央跟踪器中处理跨多个机载和基于地基雷达平台收集的检测。在此示例中,您了解了通过高斯分布的长范围的测量噪声是如何进行准确建模的。在这些长距离处的测量噪声的1-sigma椭圆的凹陷导致跟踪性能不良,轨道和分配给单个平台的多个轨道。您还学习了如何纠正测量噪声,以便长距离检测,以改善报告的轨道的连续性。gydF4y2Ba

金宝app支持功能gydF4y2Ba

initFiltergydF4y2Ba这个函数修改函数gydF4y2BainitcvekfgydF4y2Ba以处理更高速度的目标,如场景中的客机。gydF4y2Ba

函数gydF4y2Bafilter = initcvekf(检测);classToUse =类(filter.StateCovariance);gydF4y2Ba客机可以以900公里/小时左右的速度移动。初始化速度gydF4y2Ba%到0,但将需要能够快速适应飞机的移动在gydF4y2Ba%的速度。使用900公里/小时作为速度的一个标准偏差gydF4y2Ba%的噪音。gydF4y2BaSPD = 900 * 1E3 / 3600;gydF4y2Ba% m / sgydF4y2BavelCov =投(社民党^ 2,classToUse);x = filter.StateCovariance;浸(2,2)= velCov;浸(4,4)= velCov;过滤器。StateCovariance =浸;gydF4y2Ba%设置过滤器的过程噪声,以允许一些水平操作gydF4y2BaclassToUse scaleAccel =投(10日);Q = blkdiag(scaleAccel^2, scaleAccel^2, 1);过滤器。ProcessNoise =问;gydF4y2Ba结束gydF4y2Ba

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

函数gydF4y2BatrackIDs = detectableTracks(跟踪、predictedtracks配置)gydF4y2Ba识别哪个轨迹在传感器的视野范围内gydF4y2BanumTrks =(, 1)大小;[numsteps, numSensors] = size(configs);numsteps allposTrack = 0(3日);isDetectable = false (numTrks, 1);gydF4y2Ba为gydF4y2BaiTrk = 1: numTrksgydF4y2Ba在当前位置和预测之间插入跟踪位置gydF4y2Ba%位置为每个模拟步骤gydF4y2BaposTrack =跟踪(iTrk) .State(1:2:结束);posPreditedTrack = predictedtracks (iTrk) .State(1:2:结束);gydF4y2Ba为gydF4y2BaallposTrack(iPos,:) = linspace(posTrack(iPos),posPreditedTrack(iPos),numsteps);gydF4y2Ba结束gydF4y2Ba为gydF4y2Baissensor = 1:numSensors thisConfig = configs(:, issensor);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)如果gydF4y2BaInfov IsdeTectable(ITRK)= Infov;k = numsteps;gydF4y2Ba% #好< FXSET >gydF4y2BaiSensor = numSensors;gydF4y2Ba% #好< FXSET >gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba结束gydF4y2BatrackIDs = [tracks.TrackID] ';trackIDs = trackIDs (isDetectable);gydF4y2Ba结束gydF4y2Ba

tracktosensor.gydF4y2Ba这个函数返回轨道在传感器坐标系中的位置。轨道结构由gydF4y2BatrackerGNNgydF4y2Ba对象和定义传感器相对于轨道坐标系的方向的配置结构将由gydF4y2BaMonostaticradarsensorgydF4y2Ba目的。gydF4y2Ba

函数gydF4y2Bapos = trackToSensor(pos,config) frames = config. measurementparameters;gydF4y2Ba为gydF4y2Bam = numel(frames):-1:1 rotmat = frames(m).Orientation;gydF4y2Ba如果gydF4y2Ba~帧(m)。IsParentToChild rotmat = rotmat';gydF4y2Ba结束gydF4y2Baoffset =帧(m).originposition;pos = bsxfun(@减去,pos,offset);pos = rotmat * pos;gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba

longRangeCorrectiongydF4y2Ba该功能限制了雷达报告的测量噪声精度,不超过最大条件数。条件数定义为测量噪声的特征值与最大特征值的比值。gydF4y2Ba

当雷达远距离探测目标时,测量不确定度的表面曲率不再很好地近似于椭球面,而是采用凹面椭球面。测量噪声必须沿量程尺寸增加,以适应凹面,形成包含凹面椭球的平面椭圆。在文献中有几种技术可以解决这个问题。在这里,通过增加最小特征值来满足最大条件数约束来限制测量噪声的最大条件数。这有沿范围尺寸增加不确定度的效果,产生一个更好地包含凹不确定度的椭圆。gydF4y2Ba

函数gydF4y2BamaxCond侦破= longRangeCorrection(依据)gydF4y2Ba为gydF4y2Bam = 1:numel(dets) R = dets{m}.MeasurementNoise;[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