主要内容

跟踪使用收发分置的检测范围

这个例子向您展示了如何模拟收发分置的测距检测使用四个sensor-emitter对。此外,这个例子演示了如何使用收发分置的定位和跟踪多个目标测距测量。

介绍

双基地雷达的集合是一个收发分置的发射器或发射机(T_X美元)和双基地接收机或传感器(R_X美元)。双基地系统的几何描述如下图。传感器接收信号沿着路径形成三角形的上面(R_T + R_R)美元与双基地检测发射器范围引用。相对收发分置的范围是:

$ $ R_{双基地}= R_T + R_R - L $ $

在哪里R_T美元从发射器到目标,R_R美元从目标到传感器,然后呢L美元也被称为直接路径或基线,范围从发射器到传感器。

emitter-to-target-to-sensor范围获得的双基地雷达等于总和:

$ $ R_T + R_R = 2。$ $

这个和定义了一个常数椭球范围。上面所示的图像描述了椭球目标时,变送器和传感器躺在同一个平面上。这个结果在一个二维椭圆。目标是在constant-range椭球表面的焦点是发射器和传感器位置,由基线分离距离L和大轴等于2。

接下来,您将定义一个场景生成收发分置的检测,然后使用检测跟踪的目标。

定义场景

你定义一个跟踪场景模拟3 d区域包含多个平台。您将定义双基地系统在这种情况下。

%设置随机种子可重复的结果。rng (2050);%创建一个跟踪场景管理平台的运动。现场= trackingScenario;%设置场景到30秒的持续时间和更新速率% 1 Hz的场景。现场。StopTime = 30;%交会现场。UpdateRate = 1;%赫兹

设置数量的每种类型的平台。在这个例子中,以下类型的平台将为传感创建目标:

  • 1雷达发射器

  • 4双基地雷达传感器

%设置所需的最小数量的sensor-emitter对球形%交集算法更好的本地化的目标%三维空间。numSensors = 4;emitterIdx = 1;在场景添加%发射器作为第一平台

创建和安装发射器

在双基地系统中,有三种类型的排放:

  • 专用:这种类型的发射机是故意设计和运营支持收发分置的处理。金宝app

  • 合作:这种类型的传感器被设计为支持其他功能,但适用于收发分置的使用。金宝app发射机的信息如传输波形和位置是已知的。

  • 非合作:这种类型是“发射机的机会”。非合作发射器不能控制但被认为适合双基地使用。

在这个例子中,建模发射器被认为是一个专用的发射机。一个射频发射使用的模型radarEmitter。这个发射器是一个理想的各向同性发射器与一个360度的视野。波形类型是一个用户定义的值用于列举各种波形类型出现在场景。对于这个场景,使用值1表示一种线性调频波形。山的发射器固定平台在原点。

%定义一个发射器。发射器= radarEmitter (emitterIdx,“没有扫描”,“FieldOfView”(360 180),% (az el)度“CenterFrequency”300 e6,%赫兹“带宽”,30 e6,%赫兹“WaveformType”1);使用% 1 LFM-like波形%安装发射器在平台上。thisPlat =平台(场景,“轨迹”kinematicTrajectory (“位置”(0 0 0),“速度”,0 0 0));thisPlat。发射器={发射器};

创建和山双基地雷达传感器

双基地雷达传感器使用模型radarSensor。雷达传感器是一种理想的、各向同性接收机360度的视野。设置DetectionMode双基地。确保传感器配置,使其中心频率、带宽和预期的波形类型将匹配发射器配置。使INS跟踪场景坐标和山中双基地雷达传感器平台。

%定义一些随机轨迹四双基地雷达传感器。%圆分布的方差。r = 2000;%的范围内,米θ= linspace(0,π,numSensors);%θ,radxSen = r * cos(θ)+ 100 * randn (1, numSensors);% mySen = r * sin(θ)+ 100 * randn (1, numSensors);% m%的z观察目标,传感器必须有高度%彼此和发射器。numSensors zSen = -1000 *兰德(1);% m%定义一个双基地雷达传感器。传感器= fusionRadarSensor (1,“没有扫描”,“FieldOfView”(360 180),% (az el)度“DetectionMode”,“双基地”,%收发分置的检测模式“CenterFrequency”300 e6,%赫兹“带宽”,30 e6,%赫兹“WaveformTypes”, 1使用% 1 LFM-like波形“之内”,真的,%在场景INS来启用跟踪“AzimuthResolution”,360,%不测量方位角和只有一个分辨单元“HasElevation”,真的,%使海拔高程决议“ElevationResolution”,180);%单仰角分辨单元%山双基地雷达传感器平台。iD = 1: numSensors%创建一个平台的轨迹。传感平台%被认为是静止不动的,但可以提供速度。thisPlat =平台(场景,“轨迹”kinematicTrajectory (“位置”,(xSen (iD) ySen (iD) zSen (iD)],“速度”,0 0 0));%克隆双基地雷达传感器和安装平台。thisPlat。传感器={克隆(传感器)};%传感器提供正确的索引。thisPlat.Sensors {1}。SensorIndex = iD;结束

模拟收发分置的场景涉及以下:

  • 产生射频排放

  • 传播的排放和反映这些排放的平台

  • 接受排放计算干扰损失,并生成检测。

这个过程是包裹在一个支持函数,金宝appdetectBistaticTargetRange定义在这个例子。

目标定位

这个数字在引言部分说明,收发分置的测量,定义的目标是在一个椭球发射器和传感器位置,以及收发分置的测量范围。因为目标可以躺在椭球的任何地方,一个收发分置的测量目标状态的不提供完整的可观测性。本地化的目标(满足目标位置)和实现目标状态的可观测性,多个不同传感器测量是必要的。目标定位算法,实现在这个例子中是基于球面交点法[1]中描述的参考。定位问题的非线性性质导致了两种可能的目标位置传感器收发分置的范围从十字路口的3或更多。从两种可能的位置决定目标位置可以通过使用超过3传感器来完成。在本例中,您使用4个传感器来生成双基地检测使用一个发射器。

接下来,您将添加一个目标场景生成收发分置的检测。

添加一个目标场景

平台没有任何附加发射器或传感器被称为目标。创建目标跟踪使用平台

%使用平台添加一个目标场景的方法。指定%使用kinematicTrajectory轨迹与随机位置和常数%的速度。平台(场景,“轨迹”kinematicTrajectory (“位置”,(2000 * 100 * randn randn -1000),“速度”,(10 * 10 * randn randn 5 * randn]));%初始化可视化的显示。theaterDisplay = helperBistaticRangeFusionDisplay(场景,“XLim”3 [3],“YLim”3 [3],“ZLim”-2.5 [0],“GIF”,);%记录新GIF如果指定名称视图(3);

在一个场景一个目标,没有假警报,分析多个测量可以获得局部目标的位置。可以使用这个局部位置的估计目标位置或还可以传递给跟踪估计目标状态。现在,您将生成双基地雷达探测从单一目标和可视化的几何收发分置的椭圆体。您将使用支持函数计算三角位置金宝apphelperBistaticRangeFusion包含在这个例子。的helperBistaticRangeFusion三角形函数计算出目标的位置,鉴于生成的双基地范围检测的目标。

%建立一个融合代表三角的位置和检测%作为三维可视化地位融合位置检测。measParam =结构(“帧”,“矩形”,“HasAzimuth”,真的,“HasElevation”,真的,“HasRange”,真的,“HasVelocity”假的,“OriginPosition”(0,0,0),%融合的位置在场景框架“OriginVelocity”(0,0,0),%的场景帧速度为零“定位”眼睛(3),%的场景框架没有旋转。“IsParentToChild”、假);%在父窗体指定如果指定旋转%表示使用objectDetection融合检测。它有一个三维%位置和协方差。fusedDetection = {objectDetection (0, 0 (3,1),“MeasurementNoise”眼睛(3),“MeasurementParameters”,measParam)};变化百分比视图视图(-125,9);%运行场景。推进(场景)%得到当前仿真时间。时间= scene.SimulationTime;%得到双基地检测范围从1的目标。检测= detectBistaticTargetRange(场景、时间emitterIdx,真实);%满足检测估计目标位置。(位置,协方差)= helperBistaticRangeFusion(检测);%更新融合检测。fusedDetection {1}。测量=位置;fusedDetection {1}。MeasurementNoise =协方差;%更新显示。theaterDisplay([检测;fusedDetection]);结束%如果要求编写新的GIFwriteGIF (theaterDisplay);

在前面的动画中,描述了双基地雷达传感器向下的三角形。紫色的圆圈标记的固定发射器被描述在原点。目标是用白色的钻石和灰色线显示了目标的轨迹。二维动画是切片在目标在每个时间戳的Z位置。

所示的融合检测,使用黄色的圆圈标记,谎言接近十字路口地区生成四个椭圆体和接近目标的真实位置时的场景。

多目标场景

打场景假设检测已知由相同的目标。因此,您可以满足他们定位目标。然而,在多目标场景和假警报和错过的检测,这些信息通常是不可用的。这导致未知的数据检测和目标之间的联系。为了解决这个问题,你使用staticDetectionFuser。的staticDetectionFuser估计未知的数据检测和目标之间的联系,找到最好的解决方案使用一个多维分配公式。的staticDetectionFuser输出融合检测。融合检测的数量代表可能的目标数量和每个检测代表的笛卡尔坐标位置的目标。

接下来,您将添加新目标的场景中,并使用staticDetectionFuser创建从多个目标融合检测的假警报。这些检测进一步由GNN追踪处理,trackerGNN,跟踪目标。

%重新启动场景和添加剩余的目标。重启(现场);%的几何rng (2021);%的目标数量增加。numTargets = 4;%随机分布的目标。r = abs (2000 * randn (numTargets));%随机范围(米)θ= linspace (0, numTargets *π/ 4,numTargets);%角位置(rad)xTgt = r。* cos(θ)+ 100 * randn (1, numTargets);% x位置(m)yTgt = - r。* sin(θ)+ 100 * randn (1, numTargets);% y位置(m)%地面目标。numTargets zTgt = -1000 * 1 (1);% z位置(m)iD = 1: numTargets thisPlat =平台(场景,“轨迹”kinematicTrajectory (“位置”,(xTgt (iD) yTgt (iD) zTgt (iD)],“速度”,(10 * 10 * randn randn 5 * randn]));结束%变量更新平台。平台= scene.Platforms;%重置显示。释放(theaterDisplay);%关掉所有目标策划对收发分置的椭圆。theaterDisplay。PlotBistaticEllipse = false;%没有记录theaterDisplay。GIF =;%叫一旦绘制新的轨迹。theaterDisplay ();%的场景显示与轨迹。showScenario (theaterDisplay);snapnow;showGrabs (theaterDisplay []);

设置熔化炉和追踪

本节中创建一个静态检测熔化炉使用前面讨论的球面相交定位算法。此外,全球最近邻(GNN)跟踪处理融合检测定义。

%定义一个静态检测熔化炉。熔化炉= staticDetectionFuser (“MeasurementFusionFcn”,“helperBistaticRangeFusion”,“UseParallel”,真的,%做并行处理“MaxNumSensors”numSensors,%的双基地雷达传感器“体积”sensor.RangeResolution,%量传感器的检测“MeasurementFormat”,“自定义”,%定义定制融合测量cvmeas收发分置的不能没有报告的“MeasurementFcn”,“helperBistaticMeas”,%设置测量函数报告收发分置的测量“DetectionProbability”,0.99%的概率检测目标);%定义一个GNN追踪。追踪= trackerGNN (“AssignmentThreshold”,100);

使用静态融合跟踪目标

模拟收发分置的检测是融合的staticDetectionFuser利用球面交点的算法。的融合检测然后传递给GNN追踪。

推进(场景)%得到当前仿真时间。时间= scene.SimulationTime;%得到双基地检测范围检测= detectBistaticTargetRange(场景、时间emitterIdx);%保险丝收发分置的检测到一个结构。[superDets,信息]=熔化炉(检测);%跟踪融合双基地使用GNN追踪检测。confTracks =追踪(superDets scene.SimulationTime);%更新显示与当前平台位置和跟踪。theaterDisplay ([superDets(:);检测(:)),confTracks);结束

结果

在多个目标的存在和可能的假警报,鬼魂路口有时比实际更有利的解决方案。这些鬼路口随机出现在场景中,他们是“假警报”的有效治疗集中的追踪。你可以注意在下面的数据静态融合输出检测在不正确的位置。作为鬼路口与真正的十字路口,两个真实的目标是错过了。

在“当前估计跟踪”情节,注意跟踪能够保持跟踪所有5目标不创建任何鬼魂或错误的轨道。

showGrabs (theaterDisplay, 1);

下面的情节显示跟踪1和2的顶视图和他们历史的模拟。历史是由橙色线连接。注意跟踪接近历史的真实轨迹的目标。

showGrabs (theaterDisplay 2假);

总结

在这个例子中,您学习了如何模拟一个场景与收发分置的传感器。您了解了使用收发分置的测量与跟踪目标相关的挑战。你使用了staticDetectionFuser保险丝收发分置的范围从多个目标和检测trackerGNN与融合跟踪目标位置测量。

金宝app支持功能

helperBistaticRangeFusion引信测距检测确定目标的位置

函数(pos机,x) = helperBistaticRangeFusion(检测)%这个函数例如目的和可能在未来被移除%释放。%这个函数返回的位置和协方差估计的目标%的双基地检测生成的。% 2019年版权MathWorks公司。%粗门,至少3测量要求%找到一个解决方案。如果元素个数(检测)< 3 pos = 1 e10 *的(3,1);x = 2 *眼(3);其他的%从测量数据中检索信息范围= 0(元素个数(检测),1);receiverLocations = 0(3元素个数(检测);emitterLocation =检测{1}.MeasurementParameters.EmitterPosition;i = 1:元素个数(检测)rLoc =检测{我}.MeasurementParameters (2) .OriginPosition;receiverLocations (:, i) = rLoc;%球面相交方法假设测量%汇+ Rrecv。收发分置的测量的定义是汇+ Rrecv - Rb。% Rb添加到实际测量L =规范(emitterLocation (:)——rLoc (:));范围(i) =检测{}。测量+ L;结束pos = helperSphericalIntersection(范围、receiverLocations、emitterLocation);%计算协方差只在需要时。这有助于节省%计算在成本计算静态融合,%的位置是必需的。如果nargout > 1 x = linearFusionFcn (pos、检测);结束结束结束% %线性融合函数测量噪声函数thisDetections measCov = linearFusionFcn (pos)%线性噪声融合函数。它需要measJacobian使用线性的%转换。%计算雅克比使用一个恒定的速度状态。estState = 0 (6,1);estState (1:2) = pos;n =元素个数(thisDetections);totalJacobian = 0 (n, 3);totalCovariance = 0 (n, n);i = 1:元素个数(thisDetections) H = cvmeasjac (estState, thisDetections{我}.MeasurementParameters);totalJacobian(我:)= H(1:2, 1:结束);totalCovariance(我)= thisDetections{我}.MeasurementNoise;结束toInvertJacobian = totalJacobian ' / (totalCovariance) * totalJacobian;我眼睛= (3);% 2 d到3 d转换为0的雅可比矩阵关于z。如果toInvertJacobian (3,3) = = 0 toInvertJacobian (3,3) = 1;结束measCov = I / toInvertJacobian;%还真正定。measCov = (measCov + measCov ') / 2;measCov (~ isfinite (measCov)) = 1000;% inf和nan为一些大的数量结束

detectionBistaticTargetRange生成收发分置的测距检测目标的场景。

函数检测= detectBistaticTargetRange(场景、时间emitterIdx removeFalseAlarms)%从场景中获取平台。平台= scene.Platforms;%一个标志来指示如果假警报应该从检测。如果输入参数个数= = 3 removeFalseAlarms = false;结束删除%区分接收器和目标检测%接收方。假设这些检测可以删除%批处理使用先验信息。isReceiver = cellfun (@ (x) ~ isempty (x.Sensors) scene.Platforms);allIDs = cellfun (@ (x) x.PlatformID scene.Platforms);receiverIDs = allIDs (isReceiver);%产生射频排放emitPlatform =平台{emitterIdx};txEmiss =排放(emitPlatform、时间);%传播排放和反映这些排放的平台。reflSigs = radarChannel (txEmiss、平台“HasOcclusion”、假);%生成双基地雷达传感器的检测。检测= {};numPlat =元素个数(平台);iPlat = 1: numPlat thisPlatform =平台{iPlat};%接收排放,干扰计算损失,%生成收发分置的检测。thisDet =检测(thisPlatform、reflSigs、时间);%去除检测的收发分置的接收器。只有%检测的目标平台将融合和跟踪。detectedTargetIDs = cellfun (@ (x) x.ObjectAttributes {1} .TargetIndex, thisDet);toRemove = ismember (detectedTargetIDs receiverIDs) | removeFalseAlarms * (detectedTargetIDs < = 0);thisDet = thisDet (~ toRemove);%添加这个平台的检测检测数组。检测=[检测;thisDet];% #好< AGROW >结束%确定发射器的位置和速度的仿真时间。emitterPosition = emitPlatform.Trajectory.Position (:);%更新检测结构表明,仅保留双基地距离测量。iD = 1:元素个数(检测)检测{iD}。测量=检测{iD} .Measurement(结束);% #好< AGROW > %范围内测量检测{iD}。MeasurementNoise =检测{iD} .MeasurementNoise(结束,结束);% #好< AGROW > %范围测量噪声检测{iD} .MeasurementParameters (1)。HasAzimuth = false;% #好< AGROW > %更新测量参数表明方位已不复存在检测{iD} .MeasurementParameters (1)。HasElevation = false;% #好< AGROW > %更新测量参数表明海拔已不复存在检测{iD} .MeasurementParameters (1)。EmitterPosition = EmitterPosition;% #好< AGROW > %添加发射器的位置结束结束

引用

  1. Malanowski、m和k Kulpa。“两个目标定位在多被动雷达的方法。”IEEE Transactions on Aerospace and Electronic Systems, Vol. 48, No. 1, Jan. 2012, pp. 572-578.

  2. 威利斯,双基地雷达。罗利:科技出版公司,2005。