主要内容gydF4y2Ba

多平台雷达检测融合gydF4y2Ba

这个例子展示了如何从一个多平台雷达融合雷达检测网络。网络包括两个机载和地面远程雷达平台。看到gydF4y2Ba多平台雷达侦测一代gydF4y2Ba例子的细节。中央追踪过程的检测所有平台在一个固定的更新间隔。这使您能够评估网络的性能与目标类型,平台操作,以及平台配置和地点. .gydF4y2Ba

负荷跟踪的记录情况gydF4y2Ba

的gydF4y2BaMultiplatformRadarDetectionGenerationgydF4y2BaMAT-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

启用gydF4y2BaHasDetectableTrackIDsInputgydF4y2Ba指定的跟踪视场内的至少一个雷达自上次更新。跟踪逻辑只是评估轨道的一个检测的机会自上次跟踪更新。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[时间、truePoses covcon,侦破,senscon, sensPlatIDs] =阅读(记录);gydF4y2Ba%缓冲所有检测和传感器配置,直到下一个跟踪更新gydF4y2BadetBuffer = [detBuffer;依据);gydF4y2Ba% #好< AGROW >gydF4y2BasensorConfigBuffer = [sensorConfigBuffer;senscon ');gydF4y2Ba% #好< AGROW >gydF4y2Ba%按照trackUpdateRate更新追踪gydF4y2Ba如果gydF4y2Ba时间> = nextTrackUpdateTime | |结束(记录)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] =追踪(detBuffer, lastDetectionTime detectableTrackIDs);gydF4y2Ba%分析和检索当前track-to-truth分配指标gydF4y2Batam (confirmedTracks truePoses);gydF4y2Ba%表中存储分配指标gydF4y2BacurrentAssignmentTable = trackMetricsTable (tam);rowTimes =秒(时间*(大小(currentAssignmentTable, 1), 1));assignmentTable =猫(1 assignmentTable table2timetable (currentAssignmentTable,gydF4y2Ba“RowTimes”gydF4y2BarowTimes));gydF4y2Ba%更新与检测显示,保险和跟踪gydF4y2BatheaterDisplay (detBuffer、covcon confirmedTracks、assignmentTable truePoses, sensPlatIDs);gydF4y2Ba%空缓冲区gydF4y2BadetBuffer = {};sensorConfigBuffer = [];gydF4y2Ba%更新下跟踪更新时间gydF4y2BanextTrackUpdateTime = nextTrackUpdateTime + 1 / trackUpdateRate;gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba

图包含2轴对象。轴1包含20块类型的对象,对象,文本。这些对象代表地面,平台1,检测1、平台2,检测2平台3,检测3,目标,跟踪,(历史)。坐标轴对象与标题2平台跟踪作业包含19线类型的对象,文本。gydF4y2Ba

结束时的场景,你会看到多个轨道已经取消,更换。您还可以看到协会期间跟踪平台的场景。情节有七行七个平台的场景。每个跟踪显示为一条水平线。追踪数字是注释的行。无论何时删除,追踪其停止。,每当一个新跟踪是分配给一个平台,一个新行添加到平台的行,当多行显示在同一时间为一个平台,这个平台有多个跟踪分配给它。在这些情况下,更新的跟踪与平台被认为是相关的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 7 60秒41 3 10 0 0 0gydF4y2Ba

发现有困难的平台维护跟踪(平台4和7)也从雷达平台最远的。这个可怜的跟踪性能是由于测量噪声的高斯分布假设。假设适用于目标短的范围,但在长范围,偏离高斯分布测量不确定度。下图比较1-sigma协方差椭圆对应于实际目标分布和分布目标的雷达传感器。传感器是5公里远离目标的角分辨率5度。实际测量的不确定性造成的凹形球面检测传感器坐标系的雷达目标的位置估计。gydF4y2Ba

maxCondNum = 300;图;helperPlotLongRangeCorrection (maxCondNum)gydF4y2Ba

图包含一个坐标轴对象。坐标轴对象与标题远程协方差包含3线类型的对象。实际这些对象代表报告了协方差,协方差,修正协方差。gydF4y2Ba

占的凹形状实际协方差的时间gydF4y2BalongRangeCorrectiongydF4y2Ba金宝app支持函数约束条件数的测量噪声。上面所示的测量修正协方差约束的最大条件数是300。换句话说,没有测量的特征值协方差协方差可以300倍小于最大的特征值。这种治疗扩展了测量噪声以及凹度的尺寸范围,以更好地满足实际测量的不确定性。gydF4y2Ba

模拟与远程协方差校正gydF4y2Ba

重新运行之前仿真使用gydF4y2BalongRangeCorrectiongydF4y2Ba金宝app支持函数正确测量噪声的时间报告。gydF4y2Ba

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

图包含2轴对象。轴1包含20块类型的对象,对象,文本。这些对象代表地面,平台1,检测1、平台2,检测2平台3,检测3,目标,跟踪,(历史)。坐标轴对象与标题2平台跟踪作业包含15线类型的对象,文本。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

前面的图表明,通过应用远程校正,没有track-drops或多个轨迹生成整个场景。在这种情况下,有一个为每个平台跟踪检测到的监测网络。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

图包含2轴对象。坐标轴对象1标题平台跟踪作业包含15线类型的对象,文本。坐标轴对象2标题喷气执行水平又包含20块类型的对象,线,文本。这些对象代表地面,平台1,检测1、平台2,检测2平台3,检测3,目标,跟踪,(历史)。gydF4y2Ba

放大视图的飞机正在执行水平,跟踪机动目标跟踪相对较好,虽然在这个例子中使用的运动模型是恒定的速度。可以进一步提高跟踪机动使用交互多模(IMM)过滤等gydF4y2BatrackingIMMgydF4y2Ba过滤器。gydF4y2Ba

视图(25 [-60])gydF4y2Ba

图包含2轴对象。坐标轴对象1标题平台跟踪作业包含15线类型的对象,文本。坐标轴对象2标题喷气执行水平又包含20块类型的对象,线,文本。这些对象代表地面,平台1,检测1、平台2,检测2平台3,检测3,目标,跟踪,(历史)。gydF4y2Ba

从另一个视图的飞机正在执行水平,您可以看到高度估计正确,尽管不准确的高度测量的传感器。传感器不报告的一个高度,在大型垂直椭圆体,而另两个传感器低估他们高度的不确定性。gydF4y2Ba

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

图包含2轴对象。坐标轴对象1标题平台跟踪作业包含15线类型的对象,文本。坐标轴对象2标题跨越客机包含20块类型的对象,线,文本。这些对象代表地面,平台1,检测1、平台2,检测2平台3,检测3,目标,跟踪,(历史)。gydF4y2Ba

转换的角度关注过飞机,同样的不准确的高度测量进行描述。注意红色的检测是集中在8公里的高度,而两架飞机飞到海拔3和4公里,分别。使用一个非常大的协方差的高度允许跟踪器忽略错误的高度阅读红色检测和跟踪的高度使用另外两个雷达。观察追踪的不确定性协方差T07 T08,你可以看到,他们提供了一个一致的估计平台P04 P05,分别。gydF4y2Ba

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

图包含2轴对象。坐标轴对象1标题平台跟踪作业包含15线类型的对象,文本。坐标轴对象2与标题机载雷达平台包含20块类型的对象,线,文本。这些对象代表地面,平台1,检测1、平台2,检测2平台3,检测3,目标,跟踪,(历史)。gydF4y2Ba

最后着重于两种机载雷达平台的阴谋。每个平台检测到由其他平台以及地面雷达。平台轨迹相互交叉,相隔1000年的高度,他们的轨迹是一致的与地面真理。gydF4y2Ba

总结gydF4y2Ba

这个例子展示了如何处理跨多个机载和地面雷达探测收集平台在中央追踪。在这个示例中,您了解了如何测量噪声的时间不是由高斯分布精确建模。1-sigma椭圆的凹度的测量噪声在这些长范围导致可怜的跟踪性能下降轨道和多个跟踪分配给一个平台。您还了解了如何正确测量噪声检测的时间改善追踪报道的连续性。gydF4y2Ba

金宝app支持功能gydF4y2Ba

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

函数gydF4y2Ba过滤器= initFilter(检测)过滤器= initcvekf(检测);classToUse =类(filter.StateCovariance);gydF4y2Ba%客机可以移动速度900公里/小时左右。初始化速度gydF4y2Ba%为0,但将需要能够快速适应飞机速度gydF4y2Ba%的速度。使用900 km / h 1速度标准偏差gydF4y2Ba%的噪音。gydF4y2Ba社民党= 900 * 1 e3/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的追踪,在至少一个传感器的视场。传感器的视场和方向相对于坐标系跟踪存储在阵列的传感器配置结构。返回的配置结构雷达传感器,可以用来转换跟踪位置和速度传感器的坐标系。gydF4y2Ba

函数gydF4y2BatrackIDs = detectableTracks(跟踪、predictedtracks配置)gydF4y2Ba%识别跟踪传感器视场内的下降gydF4y2BanumTrks =(, 1)大小;[numsteps, numSensors] =大小(款);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为gydF4y2Ba:= 1:3 allposTrack ipo(首次公开发行)= linspace (posTrack (ipo) posPreditedTrack (ipo) numsteps);gydF4y2Ba结束gydF4y2Ba为gydF4y2BaiSensor = 1: numSensors thisConfig =配置(:,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) < thisConfig (k) .FieldOfView (1) / 2 & & abs (el) < thisConfig (k) .FieldOfView (2) / 2;gydF4y2Ba如果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

trackToSensorgydF4y2Ba这个函数返回轨道的位置传感器坐标系。返回的轨道结构gydF4y2BatrackerGNNgydF4y2Ba对象和配置结构定义传感器的相对轨道坐标系的方向是雷达返回的对象。gydF4y2Ba

函数gydF4y2Ba配置pos = trackToSensor (pos)帧= config.MeasurementParameters;gydF4y2Ba为gydF4y2Bam =元素个数(帧):1:1 rotmat = (m) .Orientation框架;gydF4y2Ba如果gydF4y2Ba~帧(m)。IsParentToChild rotmat = rotmat ';gydF4y2Ba结束gydF4y2Ba偏移量= (m) .OriginPosition框架;pos = bsxfun (@minus、pos、抵消);pos = rotmat * pos;gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba

longRangeCorrectiongydF4y2Ba这个函数限制了测量噪声雷达所报告的准确性不超过最大条件数。条件数的定义为测量噪声的特征值的比值最大的特征值。gydF4y2Ba

长范围从雷达目标检测时,表面曲率测量的不确定性已不再是由一个椭球近似但呈现凹椭球。测量噪声必须增加维度占凹度范围,产生一个包含了凹椭球的平面椭圆。有几种技术文献中解决这个问题。在这里,测量噪声的最大条件数是有限的通过增加最小的特征值来满足最大的条件约束。这增加了不确定性的影响范围尺寸,生产一个椭圆更好的包含凹的不确定性。gydF4y2Ba

函数gydF4y2BamaxCond侦破= longRangeCorrection(依据)gydF4y2Ba为gydF4y2Bam = 1:元素个数(检波器)R =侦破{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