主要内容

介绍追踪场景和模拟传感器检测

这个示例介绍了如何生成合成雷达探测模拟目标运动跟踪场景和传感器检测。具体地说,这个例子展示了:

  • 如何使用模拟的运动目标trackingScenario

  • 如何生成合成传感器检测使用一个传感器对象。你使用三种不同的方法来生成检测——从一个特定的传感器生成检测,为所有生成检测传感器安装在一个给定的平台,并生成所有检测跟踪场景。

  • 如何使用所提供的各种各样的策划者theaterPlot可视化的场景中,传感器的覆盖范围和检测。

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

模拟一个移动对象及其属性

创建一个移动目标跟踪场景

生成模拟雷达检测的第一步是创建一个跟踪的情况下,在一个或多个移动目标的运动模拟。建立一个跟踪场景中,您首先创建一个trackingScenario对象,它作为模拟环境的移动目标后来添加的。

rng (2020);%的可重复的结果。现场= trackingScenario (“UpdateRate”,2.5)
现场= trackingScenario属性:IsEarthCentered: 0 UpdateRate: 2.5000 SimulationTime: 0 StopTime:正SimulationStatus: NotStarted平台:{}SurfaceManager: [1 x1 fusion.scenario.SurfaceManager]

默认情况下,跟踪场景的SimulationTimeStopTime。这一步是由大小UpdateRate在赫兹。基于更新的2.5赫兹,步长场景是0.4秒。目前,没有目标(定义使用吗平台)中定义的场景。当StopTime被定义为场景运行,直到场景中的所有平台的运动结束。在场景中定义一个平台目标:

目标=平台(现场);

你现在可以检查目标是定义在该方案中,场景

scene.Platforms {1}
ans =平台属性:PlatformID: 1 ClassID: 0位置:[0 0 0]取向:[0 0 0]维度:[1 x1 struct]网:[1 x1 extendedObjectMesh]轨迹:[1 x1 kinematicTrajectory] PoseEstimator: [1 x1 insSensor]发射器:{}传感器:{}签名:{[1 x1 rcsSignature] [1 x1 irSignature] [1 x1 tsSignature]}

默认情况下,创建一个无量纲的点对象,但您可以指定对象的长度,宽度和高度。同时,一个微不足道的kinematicTrajectory与目标相关联。创建一个轨迹为目标,您可以使用waypointTrajectory对象。您可以设置一系列路径轨迹通过指定的路径点的目标和相应的访问时间。您还可以指定其他属性,如速度和轨迹。看到waypointTrajectory为更多的细节。

下面的代码定义一个赛马场双腿伸直的目标的路径和转弯半径2公里20公里。轨道的高度是3公里,被定义为3公里在默认North-East-Down坐标系在这个场景中使用。

h = 3;%单位公里路点= 1 e3 * [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”,timeOfArrival);目标。轨迹= targetTrajectory;

可视化和运行跟踪场景

可视化的场景,因为它运行时,创建一个theaterPlot并添加一个trajectoryPlotter和一个platformPlotter分别来可视化轨迹和目标。

tp = theaterPlot (“XLimits”,-12年12 * 1 e3,“Ylimits”,-12年12 * 1 e3,“ZLimits”,(1)e4 1 e4));trajPlotter = trajectoryPlotter (tp,“DisplayName的”,“轨迹”);plotTrajectory (trajPlotter{中转地点})targetPlotter = platformPlotter (tp,“DisplayName的”,“目标”);

运行跟踪场景和可视化鸟瞰的目标运动。

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

图包含一个坐标轴对象。坐标轴对象包含X (m), ylabel Y (m)包含2线类型的对象。一个或多个行显示的值只使用这些对象标记代表轨迹,目标。

使用雷达传感器生成检测

在跟踪的情况下,您可以生成检测的目标在三个不同的方法:

模型一个雷达传感器和模拟检测

传感器添加到场景中,您首先创建一个平台传感器的安装。的平台还提供了一个对象targetPoses功能,您可以使用它来获取相对于目标平台的姿势。

创建一个塔和一个雷达

接下来,您创建一个塔平台尺寸5米,5米,30米长,宽度和高度分别。左边的塔目标路径的位置。塔的z坐标位置设置为-15米,塔下的水平面场景框架。

塔=平台(现场);塔。尺寸=结构(“长度”5,“宽度”5,“高度”30岁的“OriginOffset”,0 0 0);tower.Trajectory。位置= [1 e4 0 15];

定义一个平台绘图仪的塔。

towerPlotter = platformPlotter (tp,“DisplayName的”,“塔”,“标记”,“o”,“MarkerFaceColor”,0 0 0);plotPlatform (towerPlotter tower.Trajectory.Position、tower.Dimensions tower.Trajectory.Orientation);

在实现单站单站模式使用fusionRadarSensor扫描雷达传感器。默认情况下,一个传感器对象报告检测的平台坐标系的传感器安装。你可以改变输出坐标系使用DetectionsCoordinates的属性fusionRadarSensor。可用的输出帧“身体”(默认),“场景”,传感器矩形的,“球形传感器”

radar1 = fusionRadarSensor (1,“UpdateRate”,2.5,“MountingLocation”(0 0 -15),“FieldOfView”(4,45岁),“MechanicalAzimuthLimits”,60 [-60],“MechanicalElevationLimits”[0 0],“HasElevation”,真的,“FalseAlarmRate”1 e)
radar1 = fusionRadarSensor属性:SensorIndex: 1 UpdateRate: 2.5000 DetectionMode:“单站”ScanMode:“机械”InterferenceInputPort: 0 EmissionsInputPort: 0 MountingLocation: [0 0 -15] MountingAngles: [0 0 0] FieldOfView: 45 [4] LookAngle: [0 0] RangeLimits: 100000年[0]DetectionProbability: 0.9000 FalseAlarmRate: 1.0000 e-07 ReferenceRange: 100000 TargetReportFormat:“集群检测”显示所有属性

山塔平台上的传感器。

塔。传感器= radar1;

生成和模拟检测

你可以想象雷达覆盖区及其扫描电子束使用coveragePlotter,coverageConfig,plotCoverage功能。创建一个detectionPlotter可视化检测产生的雷达。

radar1Plotter = coveragePlotter (tp,“DisplayName的”,“Radar1梁”,“颜色”,“b”);detPlotter = detectionPlotter (tp,“DisplayName的”,“检测”,“标记”,“o”,“MarkerFaceColor”,(1 0 0));

重新启动的情况下,生成检测,检测和情节。你可以观察到几个错误的检测。

重启(现场);推进(场景)& & ishghandle (tp.Parent)视图(70年,40);%的评论显示鸟瞰;时间= scene.SimulationTime;%获得目标姿态和阴谋。poseTarget =姿势(目标,“真正的”);plotPlatform (targetPlotter poseTarget.Position);%获得表达的目标造成塔的坐标系。poseInTower = targetPoses(塔);%获得使用雷达的雷达检测对象。[检测,numDets] = radar1 (poseInTower、时间);%提取检测位置和转换他们的场景。detPos = 0 (numDets, 3);i = 1: numDets detPos(我,:)= tower.Trajectory。位置+检测{我}.Measurement ';结束%绘制检测。如果~ isempty (detPos) plotDetection (detPlotter detPos);结束%绘制雷达波束和覆盖范围。plotCoverage (radar1Plotter coverageConfig(场景));结束

图包含一个坐标轴对象。坐标轴对象包含X (m), ylabel Y (m)包含5线,类型的对象。一个或多个行显示的值只使用这些对象标记代表轨迹,目标,塔,Radar1梁,检测。

为所有生成检测传感器安装在一个平台

或者,您可以生成检测传感器在给定的平台上使用检测函数。为了说明这个方法,您添加第二个塔平台雷达传感器。您还创建一个覆盖绘图机第二雷达传感器。

radar2 = fusionRadarSensor (2“旋转”,“UpdateRate”,2.5,“MountingLocation”(0 0 -15),“FieldOfView”(4;45),“HasElevation”,真的,“FalseAlarmRate”1 e);塔。传感器{2}= radar2;radar2Plotter = coveragePlotter (tp,“DisplayName的”,“雷达2梁”,“颜色”,‘g’);

重新启动的情况下,生成检测基于塔,和情节的检测。两个雷达仿真所示,生成目标的检测。

重启(现场);推进(场景)& & ishghandle (tp.Parent)时间= scene.SimulationTime;%获得目标姿态和阴谋。poseTarget =姿势(目标,“真正的”);plotPlatform (targetPlotter poseTarget.Position);%画出传感器的报道。款= coverageConfig(现场);plotCoverage (radar1Plotter款(1));plotCoverage (radar2Plotter配置(2));%生成检测。[towerDetections, numDets] =检测(塔、时间);%提取检测位置和转换他们的场景。detPos =南(numDets, 3);i = 1: numDets detPos(我,:)= tower.Trajectory。位置+ towerDetections{我}.Measurement ';结束%绘制检测。如果numDets plotDetection (detPlotter detPos);结束结束

图包含一个坐标轴对象。坐标轴对象包含X (m), ylabel Y (m)包含6行类型的对象,补丁。一个或多个行显示的值只使用这些对象标记代表轨迹,目标,塔,Radar1梁、检测、雷达2束。

在一个场景中生成检测的传感器

你也可以从所有生成检测传感器跟踪场景中使用检测的函数trackingScenario

为了说明这个方法,你在场景中添加一个平面,定义其路径轨迹。飞机飞从西南到东北2.9公里的高度。创建一个平台平面绘图仪。

飞机=平台(现场);planeTrajectory = waypointTrajectory (“锚点”1 e3 * [-10 -10 -2.9;12 12 -2.9),“TimeOfArrival”80年[0]);飞机。轨迹= planeTrajectory;planePlotter = platformPlotter (tp,“DisplayName的”,“平面”,“标记”,' d ',“MarkerEdgeColor”,“k”);

山在飞机上盯着雷达视场的50度。创建一个雷达绘图机。

radar3 = fusionRadarSensor (3“没有扫描”,“UpdateRate”,2.5,“FieldOfView”(60,20),“HasElevation”,真的,“FalseAlarmRate”1 e);飞机。传感器= radar3;radar3Plotter = coveragePlotter (tp,“DisplayName的”,“雷达3梁”,“颜色”,“y”);

设置报告框架的所有三个雷达坐标系的场景。您需要启用惯性导航系统(INS)之前设置检测坐标框架的场景。

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

重新启动和运行情况下,生成的所有检测场景中,检测和情节。

%隐藏出版图并显示一个预先录制好的动画。图通过设置f %可以显示。可见=‘上’。f = tp.Parent.Parent;f。可见=“关闭”;重启(现场);推进(场景)& & ishghandle (tp.Parent)%获得目标姿态和阴谋。poseTarget =姿势(目标,“真正的”);plotPlatform (targetPlotter poseTarget.Position);%获得平面构成和情节。posePlane =构成(平面,“真正的”);plotPlatform (planePlotter posePlane.Position);%画出传感器的报道。款= coverageConfig(现场);plotCoverage (radar1Plotter款(1));plotCoverage (radar2Plotter配置(2));plotCoverage (radar3Plotter款(3));%生成检测。scenarioDetections =检测(现场);numDets =元素个数(scenarioDetections);%提取场景帧的检测位置。detPos =南(numDets, 3);i = 1: numDets detPos(我:)= scenarioDetections{我}.Measurement ';结束%绘制检测。如果numDets plotDetection (detPlotter detPos);结束结束

的结果,在一段时间内,飞机上的雷达可以不断地检测目标。飞机上的雷达也产生一些错误的检测。塔上的两个雷达可以探测到飞机。

总结

这个例子向您展示了如何创建一个跟踪场景,模拟目标运动,和模拟雷达检测基于传感器在三个不同的方法,一个平台,整个场景。它还向您展示了如何可视化目标轨迹,瞬时位置,雷达扫描光束,和检测。