主要内容

使用双基地距离检测进行跟踪

这个例子向您展示了如何使用四个传感器-发射器对来模拟双静态距离检测。此外,这个例子演示了如何使用双基地距离测量来定位和跟踪多个目标。

介绍

双基地雷达是双基地发射机或发射机($T_X$),以及双基地接收器或传感器(R_X美元)双基地系统的几何结构如下图所示。传感器沿形成三角形上侧的路径接收信号(R_T + R_R)美元双基地探测参考发射器范围。相对双基地范围由下式给出:

$R_{Bistatic} = R_T + R_R - L,$$

哪里R_T美元为辐射源到目标的距离,R_R美元目标到传感器的距离是多少L美元,也称为直接路径或基线,是从发射器到传感器的范围。

双基地雷达得到的发射器到目标到传感器的距离等于:

$R_T + R_R = 2a.$

这个总和定义了一个恒定范围的椭球。上图描述了当目标、发射器和传感器位于同一平面时的椭球。这将形成一个二维椭圆。目标位于恒定范围椭球表面的某处,焦点是发射器和传感器的位置,由基线D隔开距离L,长轴等于2a。

接下来,您将定义一个场景来生成双基地检测,然后使用检测来跟踪目标。

定义场景

您定义一个跟踪场景,该场景模拟包含多个平台的3-D区域。在这个场景中,您将定义双基地系统。

%设置可重复结果的随机种子。rng (2050);%创建跟踪场景以管理平台的移动。现场= trackingScenario;%设置场景的持续时间为30秒,并设置%场景到1hz。scene.StopTime=30;%交会现场。UpdateRate = 1;%赫兹

设置每种类型平台的数量。在本例中,将创建以下类型的平台来感知目标:

  • 1雷达发射器

  • 4个双基地雷达传感器

%设置球体所需的传感器-发射器对的最小数目算法,以更好的定位目标在%三维空间。numSensors = 4;emitterIdx = 1;%发射器被添加为场景中的第一个平台

创建并安装发射器

在双基地系统中,有三种类型的发射器:

  • 专用:这种类型的发射机被有意地设计和操作以支持双基地处理。金宝app

  • 合作型:这种类型的发射机是为支持其他功能而设计的,但适合双基地使用。金宝app关于发射机的信息,如它的发射波形和位置是已知的。

  • 不合作:这类人是“机会的传播者”。非合作发射机不能被控制,但被认为适合双基地使用。

在本例中,所建模的发射器被认为是专用发射器。使用建立射频发射模型radarEmitter.这个发射器是一个理想的,各向同性发射器,具有360度的视野。波形类型是一个用户定义的值,用于枚举场景中出现的各种波形类型。对于这个场景,使用值1来指示LFM类型波形。将发射器安装到原点的固定平台上。

%定义发射器。发射器= radarEmitter (emitterIdx,“没有扫描”...“FieldOfView”,[360 180],...% [z el] deg“CenterFrequency”300 e6,...%赫兹“带宽”, 30 e6,...%赫兹“WaveformType”1);%对于类似LFM的波形,使用1%将发射器安装在平台上。thisPlat =平台(场景,“轨迹”kinematicTrajectory (“位置”,[0 0 0],...“速度”, 0 0 0));thisPlat。发射器={发射器};

创建和安装双基地雷达传感器

模型双基地雷达传感器使用radarSensor.雷达传感器是一个理想的,各向同性接收机与360度视野。设置检测模式双基地。确保传感器的配置使其中心频率、带宽和预期波形类型与发射器配置匹配。启用INS进行场景坐标跟踪,并将双基地雷达传感器安装到平台上。

%定义四个双基地雷达传感器的一些随机轨迹。具有一定方差的循环分布。r = 2000;%射程,mθ=linspace(0,pi,numSensors);%θ,radxSen = r*cos(theta) + 100*randn(1,numSensors);% mySen=r*sin(θ)+100*randn(1,numSensors);% m要观察目标的z,传感器必须有一定的仰角%关于彼此和发射器。numSensors zSen = -1000 *兰德(1);% m%定义一个双基地雷达传感器。传感器= fusionRadarSensor (1,“没有扫描”...“FieldOfView”,[360 180],...% [z el] deg“DetectionMode”“双基地”...双站检测模式“CenterFrequency”300 e6,...%赫兹“带宽”, 30 e6,...%赫兹“WaveformTypes”1....%对于类似LFM的波形,使用1“之内”符合事实的...%在场景中启用跟踪的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个以上的传感器,可以从两个可能的位置决定目标位置。在本例中,使用四个传感器使用一个发射器生成双基地检测。

接下来,您将添加一个目标到场景,以生成双基地检测。

在场景中添加一个目标

无任何附加发射器或传感器的平台称为目标.创建跟踪使用的目标平台

%使用场景的平台方法在这里添加一个目标。指定%使用具有随机位置和常数的运动轨迹%的速度。平台(场景,“轨迹”kinematicTrajectory (...“位置”, [2000*randn 100*randn -1000],...“速度”,[10*randn 10*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],...熔接位置在场景画面中“原始速度”,[0;0;0],...场景帧速度为零“定位”眼睛(3),...%场景帧没有旋转。“IsParentToChild”、假);%指定是否在父帧中指定旋转%使用objectDetection表示融合检测。它具有三维%位置和协方差。fusedDetection={objectDetection(0,零(3,1),“MeasurementNoise”眼睛(3),...“MeasurementParameters”,米斯巴拉姆)};变化百分比视图视图(-125,9);%运行场景。推进(场景)获得当前模拟时间。时间=场景模拟时间;从一个目标得到双基地距离检测检测= detectBistaticTargetRange(场景、时间emitterIdx,真实);用三角测量来估计目标位置。[position, covariance] = helperBistaticRangeFusion(detection);更新熔丝检测。融合检测{1}。测量=位置;fusedDetection{1}.MeasurementNoise=协方差;%更新显示。theaterDisplay([检测;fusedDetection]);结束%写入新的GIF如果请求writeGIF(剧院显示器);

在前面的动画中,双基地雷达传感器用指向下的三角形表示。静止发射体用原点处的紫色圆圈标记来表示。目标用白菱形表示,灰线表示目标的轨迹。在每个时间戳时,2d动画在目标的Z位置被切片。

融合检测,用黄色圆圈标记,靠近四个椭球的交点区域,接近场景中目标的真实位置。

多目标场景

单目标场景假设检测是由同一个目标生成的。因此,你可以对它们进行三角定位来定位目标。然而,在多目标场景中,在存在错误警报和漏检的情况下,这种信息通常不可用。这导致检测和目标之间存在未知的数据关联。要解决这个问题,你可以使用静态检测定影器.的静态检测定影器估计检测和目标之间的未知数据关联,并使用多维分配公式找到最佳解决方案。这个静态检测定影器输出融合检测。融合检测的数量表示可能的目标数量,每个检测表示目标的笛卡尔位置。

接下来,您将向场景添加新目标,并使用静态检测定影器在存在虚假警报的情况下,从多个目标创建融合检测。这些检测由GNN跟踪器进一步处理,trackerGNN,以跟踪目标。

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

设置Fuser和Tracker

本节创建一个静态检测fuser,它使用前面讨论的球面相交定位算法。此外,还定义了一个全局最近邻(GNN)跟踪器来处理融合检测。

定义静态检测融合器。熔化炉= staticDetectionFuser (...“MeasurementFusionFcn”“helperBistaticRangeFusion”...“UseParallel”符合事实的...执行并行处理“MaxNumSensors”numSensors,...%双基地雷达传感器数量“体积”、传感器。RangeResolution,...%传感器检测库的容量“MeasurementFormat”“习俗”...定义自定义的融合测量,因为双静态不能被cvmeas报告“MeasurementFcn”“helperBistaticMeas”...%设置双静态测量报告的测量功能“DetectionProbability”, 0.99...%探测目标的概率);%定义一个GNN跟踪器。跟踪器(“AssignmentThreshold”, 100);

利用静态融合跟踪目标

将模拟的双基地检测方法与该方法融合静态检测定影器使用球面交算法。然后将融合的检测结果传递给GNN跟踪器。

推进(场景)获得当前模拟时间。时间=场景模拟时间;%获取双基地距离检测检测= detectBistaticTargetRange(场景、时间emitterIdx);%将双基地探测融合到一个结构中。[superDets,info]=定影器(检测);使用GNN跟踪器跟踪融合双基地检测。confTracks =追踪(superDets scene.SimulationTime);%用当前平台位置和轨道更新显示。theaterDisplay ([superDets(:);检测(:)),confTracks);结束

结果

在存在多个目标和可能的虚警的情况下,幽灵交叉口有时可能比实际解决方案更有利。由于这些幽灵十字路口随机出现在场景中,它们被集中跟踪器有效地视为“假警报”。你可以在下图中注意到,静态融合输出检测在错误的位置。当鬼十字路口与真十字路口竞争时,两个真目标会被错过。

在“当前估计轨迹”图中,请注意,跟踪器能够在所有5个目标上保持轨迹,而不会创建任何重影或假轨迹。

showGrabs (theaterDisplay, 1);

下图显示了轨道1和轨道2的俯视图,以及它们在模拟结束时的历史。历史用连接轨道的橙色线表示。注意轨迹历史接近目标的真实轨迹。

showGrabs (theaterDisplay 2假);

总结

在本例中,您学习了如何模拟使用双基地传感器的场景。您了解了使用双基地测量跟踪目标所面临的挑战。你使用了静态检测定影器融合来自多个目标的双基地距离探测和trackerGNN用融合的位置测量来跟踪目标。

金宝app辅助功能

helperBistaticRangeFusion引信距离探测以三角定位目标位置

函数[pos,cov]=帮助者距离融合(检测)%此函数仅供示例使用,将来可能会被删除%释放。这个函数返回目标的估计位置和协方差%给定从它生成的双基地检测。版权所有2019 The MathWorks, Inc.%做一个粗糙的浇注,因为至少需要3个测量值找到解决办法。如果nummel (detection) < 3 pos = 1e10*ones(3,1);x = 2 *眼(3);其他的从测量中获取信息范围= 0(元素个数(检测),1);receiverLocations = 0(3元素个数(检测);emitterLocation =检测{1}.MeasurementParameters.EmitterPosition;rLoc = detection{i}.MeasurementParameters(2).OriginPosition;receiverLocations (:, i) = rLoc;球面交法假定测量值为%汇款+ Rrecv。双基地测量定义为:汇+ Rrecv - Rb。%将Rb添加到实际测量值中L = norm(emitterLocation(:) - rLoc(:));范围(i) =检测{}。测量+ L;结束pos = helperSphericalIntersection(范围、receiverLocations、emitterLocation);%协方差只在需要时计算。这有助于节省静态融合成本计算时的%计算,仅为%职位是必需的。如果nargout > 1 cov = linearFusionFcn(pos,检测);结束结束结束测量噪声的线性融合函数函数measCov=线性使用FCN(位置,此检测)线性噪声融合函数。它需要可测量的雅可比矩阵来使用线性%转换。用匀速状态来计算雅可比矩阵。estState = 0 (6,1);estState (1:2) = pos;n =元素个数(thisDetections);totalJacobian = 0 (n, 3);totalCovariance = 0 (n, n);i = 1:numel(thisDetections) H = cvmeasjac(estState,thisDetections{i}.MeasurementParameters);totalJacobian(我:)= H(1:2, 1:结束);totalCovariance(我)= thisDetections{我}.MeasurementNoise;结束toInvertJacobian = totalJacobian ' / (totalCovariance) * totalJacobian;我眼睛= (3);% 2-D到3-D转换与0雅可比矩阵wrt 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;%指示是否应从检测中删除假警报的标志。如果nargin == 3 removefalse告警= false;结束区分接收器和目标,以消除从%接收方。假设这些检测可以从%使用先前信息的批处理。isReceiver = cellfun (@ (x) ~ isempty (x.Sensors) scene.Platforms);allIDs = cellfun (@ (x) x.PlatformID scene.Platforms);receiverIDs = allIDs (isReceiver);%产生射频发射emitPlatform =平台{emitterIdx};txEmiss = emit(emitPlatform, time);%传播排放并反映这些平台的排放。refsig = radarchchannel (txEmiss,平台,“HasOcclusion”、假);%从双基地雷达传感器产生检测。检测= {};numPlat =元素个数(平台);iPlat = 1:numPlat thisPlatform =平台{iPlat};%接收排放,计算干扰损失,并%产生双基地检测。thisDet =检测(thisPlatform, refsig, time);%移除双基站接收器的检测。只有%来自目标平台的探测将被融合和跟踪。detectedTargetIDs = cellfun (@ (x) x.ObjectAttributes {1} .TargetIndex, thisDet);toRemove = ismember(detectedtargetid, receiverIDs) | removeFalseAlarms*(detectedtargetid <=0);thisDet = thisDet (~ toRemove);将此平台的检测添加到检测数组中。检测=[detections;thisDet];% #好< AGROW >结束%确定在此模拟时间内发射器的位置和速度。emitterPosition = emitPlatform.Trajectory.Position (:);%更新检测结构,以表明只保留双基地距离测量。iD=1:numel(检测)检测{iD}.Measurement=检测{iD}.Measurement(结束);%#ok %范围测量检测{iD}。MeasurementNoise =检测{iD} .MeasurementNoise(结束,结束);%#ok %测量范围噪声检测{iD} .MeasurementParameters(1)。HasAzimuth = false;%#ok%更新测量参数以指示方位角不再存在检测{iD}.MeasurementParameters(1).HasElevation=false;%#ok %更新测量参数以表明海拔不再存在检测{iD}。测量参数(1)。EmitterPosition=EmitterPosition;%#确定%添加发射器位置结束结束

参考文献

  1. Malanowski, M.和K. Kulpa。多基地无源雷达目标定位的两种方法。IEEE Transactions on Aerospace and Electronic Systems,第48卷,第1期,2012年1月,第572-578页。

  2. 《双基地雷达》。罗利:科学技术出版公司,2005年。