简介跟踪方案和模拟传感器检测项

本例介绍如何生成以模拟目标运动和传感器检测的跟踪场景合成雷达检测。具体地,该实施例显示:

  • 如何模拟目标的运动trackingScenario。

  • 如何生成使用传感器对象合成的传感器检测。您可以使用三种不同的方法来生成检测 - 生成一个特定的传感器检测,检测生成所有传感器安装在一个给定的平台上,并生成跟踪方案的所有检测。

  • 如何使用提供的各种绘图仪theaterPlot以可视化的情况下,传感器covarge,和检测。

在传感器记录之上使用场景生成和传感器模拟的主要好处是能够创建罕见和潜在危险的场景,并使用这些场景测试传感器融合算法。这些雷达探测可以用来开发各种跟踪算法,如trackerGNNtrackerJPDA

模拟移动对象及其属性

与运动目标创建跟踪方案

在产生模拟雷达检测的第一步是建立一个跟踪场景中,在其中一个或多个移动目标的运动进行仿真。要设置跟踪的情况下,首先要创建一个trackingScenario对象,作为后面添加的所有运动目标的仿真环境。

RNG(2020);%为可重复的结果。现场= trackingScenario (“UpdateRate”,10)
scene = trackingScenario with properties: UpdateRate: 10 StopTime: Inf SimulationTime: 0 IsRunning: 1 platform: {}

默认情况下,跟踪情形中,从运行SimulationTime停止时间。步长大小由下式给出UpdateRate在赫兹。基于10hz的更新率,步长为现场是0.1秒。目前,没有目标(使用规定平台)在本场景中定义。当停止时间被定义为,该方案运行,直到在方案结束全部平台的运动。在命名方案定义的平台目标

目标=平台(场景);

您可以查看现在的目标是在方案中规定,现场

scene.Platforms {1}
ans =平台属性:Platform: 1 ClassID: 0 Dimensions:[1×1 struct]弹道:[1×1运动学轨迹]PoseEstimator:[1×1 insSensor]发射器:{}传感器:{}签名:{[1×1 rcsSignature][1×1 irSignature][1×1 tsSignature]}

默认情况下,将创建一个无量纲的点对象,但可以指定在长度,宽​​度和高度的物体的程度。此外,一个平凡的kinematicTrajectory与目标相关联。要为目标创建轨迹,可以使用waypointTrajectory宾语。您可以通过指定一系列目标的航点和相应的访问时间成立了航点的轨迹。您还可以指定其他弹道性能,如速度和航向。看到waypointTrajectory更多细节。

下面的代码为直腿20公里,转弯半径2公里的目标定义了一条跑道路径。轨迹高度为3 km,在本场景中使用的默认东北向下坐标系中定义为-3 km。

H = -3;在千米%单位航点= 1E3 * [1 1 0 -1 -1 0 1 1 0 10 12 10 -10 -12 -10 0 H H H H H H H H]  - ;当然= [90 90 180 270 270 0 90 90]';%的程度单元timeOfArrival = 60 * [0 1.5 1.8 2.1 5.1 5.4 5.7 7.2]';targetTrajectory = waypointTrajectory(“路标”,航点,'到达时间',timeOfArrival);目标。轨迹= targetTrajectory;

可视化和运行的跟踪方案

以可视化的情况下,因为它运行,创建theaterPlot并添加一个trajectoryPlotter和一个platformPlotter来分别形象化轨迹和目标。

TP = theaterPlot('XLimits',[ -  12 12] * 1E3,“Ylimits”,[ -  12 12] * 1E3,'ZLimits',[ -  1E4 1E4]);trajPlotter = trajectoryPlotter(TP,'显示名称'“轨迹”);plotTrajectory(trajPlotter,{航点})targetPlotter = platformPlotter(TP,'显示名称''目标');

运行跟踪场景,并在鸟瞰视图中可视化目标运动。

提前(场景)&& ishghandle(tp.Parent)targetPose =姿态(目标,“真正的”);plotPlatform(targetPlotter,targetPose.Position);结束

使用雷达传感器生成探测信号

在跟踪的情况下,可以产生三种不同的方法检测指标:

A型雷达传感器和模拟其检测项

要将传感器添加到场景中,您首先创建一个平台在其上传感器安装。该平台对象还提供一个targetPoses功能,您可以使用获得的目标相对于平台的姿势。

创建一个塔和雷达

接下来,创建一个塔平台具有5米,5米,并在长度,宽​​度为30m,和高度尺寸,分别。向左目标路径的塔位。设置的塔位置的z坐标至-15米,使得塔底部是在场景帧的水平平面。

塔=平台(场景);tower.Dimensions =结构(“长度”5,'宽度'5,“高度”30岁的'OriginOffset',[0 0 0]);tower.Trajectory.Position = [-1e4 0 -15]。

定义一个平台绘图以示塔。

towerPlotter = platformPlotter(TP,'显示名称'“塔”“标记”“o”'MarkerFaceColor',[0 0 0]);plotPlatform(towerPlotter,tower.Trajectory.Position,tower.Dimensions,tower.Trajectory.Orientation);

创建一个单基地雷达扫描传感器。默认情况下,传感器对象报告在其上传感器安装在所述平台的坐标帧检测。你可以改变输出使用坐标系DetectionsCoordinates财产mononstaticRadarSensor。可用的输出帧是'身体'(默认),“场景”传感器矩形的,“传感器球形”

radar1 = monostaticRadarSensor(1,“UpdateRate”10,...“MountingLocation”,[0 0 -15],“FieldOfView”[1; 45],...'MechanicalScanLimits',[ -  60 60 0 0],“HasElevation”,真正,'FalseAlarmRate'1 e)
radar1 = monostaticRadarSensor与属性:SensorIndex:1 UpdateRate:10 ScanMode: '机械' MountingLocation:[0 0 -15] MountingAngles:[0 0 0] MaxUnambiguousRange:100000 MaxUnambiguousRadialSpeed:200 fieldOfView(视野):[2×1双] MaxMechanicalScanRate:[2×1双] MechanicalScanLimits:[2×2双] MechanicalAngle:[2×1双] LookAngle:[2×1双] DetectionProbability:0.9000 FalseAlarmRate:1.0000e-07显示所有属性

安装在塔平台上的传感器。

tower.Sensors = radar1;

生成和模拟检测项

你可以想像雷达覆盖区域和使用它的扫描束coveragePlottercoverageConfig,plotCoverage功能。创建一个detectionPlotter以显现由雷达产生检测。

radar1Plotter = coveragePlotter(TP,'显示名称'“Radar1梁”“颜色”'B');detPlotter = detectionPlotter(TP,'显示名称'“检测项”...“标记”“o”'MarkerFaceColor',[1 0 0]);

重新启动场景,生成检测,并绘制检测。你可以观察到几个误检。

重启(现场);高级(场景)&& ishghandle(tp.Parent)视图(70,40);%评论这显示鸟瞰;时间= scene.SimulationTime;%获得目标姿态和绘制。poseTarget =姿势(目标,“真正的”);plotPlatform (targetPlotter poseTarget.Position);%得到目标姿态在塔的坐标系中表示。poseInTower = targetPoses(塔);%获得使用雷达物体的雷达检测。[detections, numDets] = radar1(poseInTower,时间);%提取检测位置,并将其转化到方案框架。detPos = 0 (numDets, 3);对于i=1:numDets detPos(i,:) = tower.弹道。位置+检测{我}.Measurement ';结束%绘制检测。如果~ isempty (detPos) plotDetection (detPlotter detPos);结束%绘制雷达波束和覆盖区域。plotCoverage(radar1Plotter,coverageConfig(场景));结束

为安装在平台上的所有传感器生成检测

也可以使用。为给定平台上的所有传感器生成检测检测功能。为了说明这种方法,您添加第二个雷达传感器到塔平台。您还可以创建第二个雷达传感器覆盖绘图仪。

radar2 = monostaticRadarSensor(2,“肩”“UpdateRate”10,...“MountingLocation”,[0 0 -15],“FieldOfView”[1;45],...“HasElevation”,真正,'FalseAlarmRate',1E-7);tower.Sensors {2} = radar2;radar2Plotter = coveragePlotter(TP,'显示名称'“雷达2梁”“颜色”'G');

重新启动的情况下,基于该塔的检测,并绘制了检测。如在模拟中所示,两个雷达都生成目标的检测。

重启(现场);提前(场景)&& ishghandle(tp.Parent)时间= scene.SimulationTime;%获得目标姿态和绘制。poseTarget =姿势(目标,“真正的”);plotPlatform (targetPlotter poseTarget.Position);%绘制传感器的覆盖范围。CONFIGS = coverageConfig(场景);plotCoverage(radar1Plotter,CONFIGS(1));plotCoverage(radar2Plotter,CONFIGS(2));%产生检测。[towerDetections,numDets] =检测(塔,时间);%提取检测位置,并将其转化到方案框架。detPos = NaN的(numDets,3);对于I = 1:numDets detPos(I,:) = tower.Trajectory.Position + towerDetections {I} .Measurement';结束%绘制检测。如果numDets plotDetection(detPlotter,detPos);结束结束

从场景中的所有传感器生成检测

您还可以使用生成所有传感器检测的跟踪情况检测功能trackingScenario

为了演示这种方法,您可以在场景中添加一个平面并定义它的路径点轨迹。飞机从西南到东北飞行高度2.9公里。为飞机创建一个平台绘图仪。

飞机=平台(现场);planeTrajectory = waypointTrajectory (“路标”1 e3 * [-10 -10 -2.9;12 12 -2.9),'到达时间',[0 80]);plane.Trajectory = planeTrajectory;planePlotter = platformPlotter(TP,'显示名称'“平面”“标记”'d'“MarkerEdgeColor”“k”);

安装在平面上的凝视雷达的视的50度的字段。创建雷达绘图仪。

radar3 = monostaticRadarSensor (3“没有扫描”“UpdateRate”10,“FieldOfView”,[60,20],...“HasElevation”,真正,'FalseAlarmRate',1E-7);plane.Sensors = radar3;radar3Plotter = coveragePlotter(TP,'显示名称'“雷达3梁”“颜色”'Y');

将所有三个雷达的方案框架的报告框架。您需要设定检测协调方案框架之前,使惯性导航系统(INS)。

释放(radar1);radar1.HasINS = TRUE;radar1.DetectionCoordinates =“场景”;释放(radar2);radar2。之内= true;radar2。DetectionCoordinates =“场景”;radar3。之内= true;radar3。DetectionCoordinates =“场景”;

重新启动并运行的情况下,产生所有场景的检测,并绘制了检测。

%隐藏公布的数字。显示预先录制的动画代替。F = tp.Parent.Parent;如果numel(dbstack) > 5 f。可见='上';f.Visible =“关”;结束重启(现场);提前(场景)&& ishghandle(tp.Parent)%获得目标姿态和绘制。poseTarget =姿势(目标,“真正的”);plotPlatform (targetPlotter poseTarget.Position);%获得飞机姿态和绘制。posePlane =姿势(平面,“真正的”);plotPlatform(planePlotter,posePlane.Position);%绘制传感器的覆盖范围。CONFIGS = coverageConfig(场景);plotCoverage(radar1Plotter,CONFIGS(1));plotCoverage(radar2Plotter,CONFIGS(2));plotCoverage(radar3Plotter,CONFIGS(3));%产生检测。scenarioDetections =检测(现场);numDets =元素个数(scenarioDetections);%,在场景帧中提取的检测位置。detPos = NaN的(numDets,3);对于i=1:numDets detPos(i,:) = scenario - detections {i}.Measurement’;结束%绘制检测。如果numDets plotDetection(detPlotter,detPos);结束结束

从结果来看,在一段时间,在飞机上的雷达可连续检测目标。在飞机上的雷达也产生一些错误的检测。塔上的两部雷达可以探测飞机。

总结

这个例子说明了如何创建一个跟踪的情况下,模拟目标的运动,并基于传感器,平台,整个场景三种不同的方法模拟雷达检测。这也说明了如何以可视化的目标轨迹,瞬时位置,雷达扫描梁和检测。