主要内容

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

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

介绍

双基地雷达是双基地发射机或发射机(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);%创建一个跟踪场景来管理平台的移动。场景=跟踪Cenario;%将场景的持续时间设置为30秒和更新率%场景到1hz。现场。StopTime = 30;%秒scene.updaterate = 1;%赫兹

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

  • 1雷达发射器

  • 4个双基地雷达传感器

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

创建并安装发射器

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

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

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

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

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

定义一个发射器。发射器=发射辐射器(ElextIDX,“没有扫描”...'fieldofview'(360 180),...% [z el] deg“CenterFrequency”300 e6,...%赫兹“带宽”, 30 e6,...%赫兹“WaveformType”1);%使用1表示类lfm波形在平台上安装发射器。thisPlat =平台(场景,'弹道',kinematictrajectory('位置'(0 0 0),...“速度”, 0 0 0));thisPlat。发射器={发射器};

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

模型使用BISTATIC RADAR传感器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定义一个双基地雷达传感器。传感器= fusionRadarSensor (1,“没有扫描”...'fieldofview'(360 180),...% [z el] deg“DetectionMode”'bistatic'...双站检测模式“CenterFrequency”300 e6,...%赫兹“带宽”, 30 e6,...%赫兹“WaveformTypes”, 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;结束

模拟双基地场景包括:

  • 产生射频排放

  • 传播排放,并从平台上反映这些排放

  • 接收辐射,计算干扰损失,并产生检测。

这个过程包含在一个支持函数中,万博1manbetxdetectBistaticTargetRange,在本例的最后定义。

目标定位

导言部分的图说明了双基地测量时,目标位于由发射器和传感器位置以及测量的双基地距离定义的椭球面上。由于目标可以位于椭球面上的任何位置,单次双基地测量不能提供目标状态的完全可观测性。为了实现目标的定位(目标位置三角化)和目标状态的可观测性,需要不同传感器的多次测量。本例中实现的目标定位算法是基于参考[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);

在只有一个目标且无虚警的情况下,可以对多个测量值进行三角化,得到目标的定位位置。这个定位位置可以用作目标位置的估计,也可以传递给跟踪器来估计目标状态。现在,您将从单个目标生成双基地雷达探测,并可视化双基地椭球的几何形状。您将使用支持函数计算三角位置万博1manbetxhelperBistaticRangeFusion,包含在本示例中。的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,真实);用三角测量来估计目标位置。[position, covariance] = helperBistaticRangeFusion(detection);更新熔丝检测。fusedDetection{1}。测量=位置;fusedDetection{1}。MeasurementNoise =协方差;%更新显示。theaterDisplay([检测;fusedDetection]);结束%写入新的GIF如果请求writeGIF (theaterDisplay);

在前面的动画中,通过向下指向的三角形描绘了双面雷达传感器。静止发射器用原点处的紫色圆标记描绘。目标由白色钻石表示,灰线显示目标的轨迹。2-D动画在每个时间戳的目标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)%地面目标。ztgt = -1000 * ztgt(1,numtargets);% z位置(m)iD = 1:numTargets thisPlat = platform(scene,...'弹道',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 []);

设置Fuser和Tracker

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

定义静态检测融合器。熔化炉= staticDetectionFuser (...“MeasurementFusionFcn”“helperBistaticRangeFusion”...“UseParallel”,真的,...执行并行处理“MaxNumSensors”,numsensors,...%雷达传感器的数量“体积”、传感器。RangeResolution,...%传感器检测库的容量“MeasurementFormat”“自定义”...定义自定义的融合测量,因为双静态不能被cvmeas报告“MeasurementFcn”“helperBistaticMeas”...%设置双静态测量报告的测量功能'侦查可力', 0.99...侦测目标的机率);定义GNN跟踪器。追踪= trackerGNN (“AssignmentThreshold”,100);

利用静态融合跟踪目标

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

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

结果

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

在“当前估计的轨迹”图中,注意跟踪器能够对所有5个目标保持轨迹,而不会产生任何幽灵或虚假轨迹。

showGrabs (theaterDisplay, 1);

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

showGrabs (theaterDisplay 2假);

概括

在此示例中,您学习了如何模拟具有双面传感器的场景。您了解了使用BISTOG测量与跟踪目标相关的挑战。你用过staticDetectionFuser融合来自多个目标的双基地距离探测trackerGNN用融合的位置测量来跟踪目标。

万博1manbetx支持功能

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

函数(pos机,x) = helperBistaticRangeFusion(检测)%此函数仅供示例使用,将来可能会被删除%释放。这个函数返回目标的估计位置和协方差%给定从它生成的双基地检测。%版权所有2019 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,检测);结束结束结束测量噪声的线性融合函数函数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从场景中的目标生成双基地仅距离检测。

函数检测= 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);%删除了BiStatic接收器的检测。只有来自目标平台的检测将被融合和跟踪。detectedTargetIDs = cellfun (@ (x) x.ObjectAttributes {1} .TargetIndex, thisDet);toRemove = ismember(detectedtargetid, receiverIDs) | removeFalseAlarms*(detectedtargetid <=0);thisDet = thisDet (~ toRemove);将此平台的检测添加到检测数组中。检测=[检测;thisDet];% #好< AGROW >结束%确定在此模拟时间内发射器的位置和速度。emitterPosition = emitPlatform.Trajectory.Position (:);%更新检测结构,以表明只保留双基地距离测量。iD = 1:numel(detections) detections{iD}。测量=检测{iD} .Measurement(结束);%#ok %范围测量检测{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交易,Vol。48,1月1日,2012年1月,第572-578页。

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