主要内容

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

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

介绍

双基地雷达是双基地发射机或发射机(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.$

这个和定义了一个恒定范围的椭球。上图所示图像描述了目标、发射机和传感器在同一平面时的椭球面。这就得到了一个二维椭圆。目标位于等距椭球表面某处,焦点为发射体和传感器位置,两者以基线距离L隔开,长轴为2a。

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

定义场景

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

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

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

  • 1雷达发射器

  • 4个双基地雷达传感器

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

创建并安装发射器

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

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

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

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

在此示例中,建模发射器被视为专用发射器。使用radarEmitter. 此发射器是理想的各向同性发射器,具有360度的视野。波形类型是用户定义的值,用于枚举场景中存在的各种波形类型。对于这种情况,使用值1表示LFM类型的波形。将发射器安装到原点的固定平台上。

定义一个发射器。发射器= radarEmitter (emitterIdx,“无扫描”...“FieldOfView”(360 180),...% [z el] deg“中心频率”300 e6,...%赫兹“带宽”, 30 e6,...%赫兹“波形类型”, 1);%使用1表示类lfm波形在平台上安装发射器。thisPlat =平台(场景,“轨迹”kinematicTrajectory (“位置”(0 0 0),...“速度”,[0 0 0])); thisPlat.Emitters={emitter};

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

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

为四个双基地雷达传感器定义一些随机轨迹。具有一定方差的循环分布。r=2000;%的范围内,米θ= linspace(0,π,numSensors);%θ,radxSen = r*cos(theta) + 100*randn(1,numSensors);% mySen = r*sin(theta) + 100*randn(1,numSensors);% m%为了观察目标的z方向,传感器必须具有一定的高度对彼此和发射器的百分比。numSensors zSen = -1000 *兰德(1);% m定义一个双基地雷达传感器。传感器=引信雷达传感器(1,“无扫描”...“FieldOfView”(360 180),...% [z el] deg“检测模式”“双基地”...双站检测模式“中心频率”300 e6,...%赫兹“带宽”, 30 e6,...%赫兹“波形类型”, 1...%使用1表示类lfm波形“哈金斯”,真的,...%在场景中启用跟踪的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 * 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),“测量噪音”眼睛(3),...“MeasurementParameters”, measParam)};%改变看法视图(-125,9);%运行场景。虽然推进(场景)获得当前模拟时间。时间= scene.SimulationTime;从一个目标得到双基地距离检测检测= detectBistaticTargetRange(场景、时间emitterIdx,真实);用三角测量来估计目标位置。[position, covariance] = helperBistaticRangeFusion(detection);更新熔丝检测。fusedDetection{1}。测量=位置;fusedDetection{1}。MeasurementNoise =协方差;%更新显示。theaterDisplay([检测;fusedDetection]);结束%写入新的GIF如果请求writeGIF (theaterDisplay);

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

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

多目标场景

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

接下来,您将向场景添加新目标,并使用staticDetectionFuser在存在虚假警报的情况下,从多个目标创建融合检测。这些检测由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 = platform(scene,...“轨迹”kinematicTrajectory (“位置”, (xTgt (iD) yTgt (iD) zTgt (iD)],...“速度”, (10 * 10 * randn randn 5 * randn]));结束%更新平台变量。平台=场景。平台;%重置显示。释放(theaterDisplay);%关闭所有目标的双基地椭圆标绘。theaterDisplay。PlotBistaticEllipse = false;%没有记录theaterDisplay.GIF =''%调用一次以绘制新的轨迹。剧院显示器();带有轨迹的场景显示。showScenario (theaterDisplay);snapnow;showGrabs (theaterDisplay []);

设置Fuser和Tracker

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

定义静态检测融合器。fuser=静态检测fuser(...“MeasurementFusionFcn”“helperBistaticRangeFusion”...“UseParallel”,真的,...执行并行处理“MaxNumSensors”numSensors,...%双基地雷达传感器数量“体积”,sensor.range分辨率,...%传感器检测库的容量“MeasurementFormat”“自定义”...定义自定义的融合测量,因为双静态不能被cvmeas报告“MeasurementFcn”“helperBistaticMeas”...%设置双静态测量报告的测量功能“DetectionProbability”,0.99...侦测目标的机率);定义GNN跟踪器。追踪= trackerGNN (“AssignmentThreshold”, 100);

利用静态融合跟踪目标

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

虽然推进(场景)获得当前模拟时间。时间= scene.SimulationTime;获得双静态距离检测检测=检测到的静态目标范围(场景、时间、发射器DX);将双静态检测融合到一个结构中。[superDets, info] = fuser(检测);使用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 The MathWorks, Inc.%进行粗选通,因为至少需要3次测量%找到解决办法。如果nummel (detection) < 3 pos = 1e10*ones(3,1);x = 2 *眼(3);其他的%从测量中检索信息范围= 0(元素个数(检测),1);receiverLocations = 0(3元素个数(检测);emitterLocation =检测{1}.MeasurementParameters.EmitterPosition;i=1:numel(detections)rLoc=detections{i}。测量参数(2)。初始位置;接管人地址(:,i)=rLoc;球面交法假定测量值为%汇款+ Rrecv。双基地测量定义为:汇+ Rrecv - Rb。%将Rb添加到实际测量值中L = norm(emitterLocation(:) - rLoc(:));范围(i) =检测{}。测量+ L;结束pos=帮助者球体位置(范围、接收器位置、发射器位置);%协方差仅在需要时计算。这有助于节约静态融合成本计算时的%计算,仅为%职位要求。如果nargout > 1 cov = linearFusionFcn(pos,检测);结束结束结束测量噪声的线性融合函数作用thisDetections measCov = linearFusionFcn (pos)线性噪声融合函数。它需要可测量的雅可比矩阵来使用线性%转换。%使用恒定速度状态计算雅可比矩阵。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结束measCov = I / toInvertJacobian;%返回真正定。measCov = (measCov + measCov')/2;measCov (~ isfinite (measCov)) = 1000;inf和nan的一个大数字结束

detectionBistaticTargetRange从场景中的目标生成双基地纯距离检测。

作用detections=detectBistaticTargetRange(场景、时间、发射器DX、移除假警报)%从场景中获取平台。平台=场景。平台;%表示是否应该从检测中删除错误警报的标志。如果nargin==3 RemoveFalseAllarms=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、reflSigs、time);%移除双基站接收器的检测。只有来自目标平台的检测将被融合和跟踪。detectedTargetIDs = cellfun (@ (x) x.ObjectAttributes {1} .TargetIndex, thisDet);toRemove = ismember(detectedtargetid, receiverIDs) | removeFalseAlarms*(detectedtargetid <=0);thisDet = thisDet (~ toRemove);将此平台的检测添加到检测数组中。检测=[检测;thisDet];%#好的结束%确定在此模拟时间内发射器的位置和速度。emitterPosition=emitter平台.轨迹.位置(:);%更新检测结构,以指示仅保留双基地距离测量。iD = 1:numel(detections) detections{iD}。测量=检测{iD} .Measurement(结束);%#正常%范围测量检测{iD}。MeasurementNoise =检测{iD} .MeasurementNoise(结束,结束);%#ok %测量范围噪声检测{iD} .MeasurementParameters(1)。HasAzimuth = false;%#ok %更新测量参数以表明方位角不再存在检测{iD} .MeasurementParameters(1)。HasElevation = false;%#ok %更新测量参数以表明海拔不再存在检测{iD} .MeasurementParameters(1)。EmitterPosition = EmitterPosition;%#ok %添加发射器位置结束结束

参考文献

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

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