主要内容

雷达场景教程

这个例子展示了如何构建和可视化一个简单的雷达场景编程方式使用radarScenario,theaterPlot,radarDataGenerator对象。

场景设置

首先,创建一个空雷达的场景。所有场景属性有默认值。默认的场景不包含任何平台。

场景= radarScenario
场景与属性= radarScenario: IsEarthCentered: 0 UpdateRate: 10 SimulationTime: 0 StopTime:正SimulationStatus: NotStarted平台:{}SurfaceManager: [1 x1 radar.scenario。SurfaceManager] AtmosphereManager: [1 x1 radar.scenario.AtmosphereManager]

增加平台

一个场景组成的对象,被称为平台,你可以在它爬上去传感器和发射器。添加一个平台,使用平台对象的功能。你创建一个简单的塔。

塔=平台(场景)
塔=平台属性:PlatformID: 1 ClassID: 0位置:[0 0 0]取向:[0 0 0]维度:[1 x1 struct]轨迹:[1 x1 kinematicTrajectory] PoseEstimator: [1 x1 insSensor]发射器:{}传感器:{}签名:{[1 x1 rcsSignature]}

平台识别

当你第一次构建一个平台,它有一个PlatformID,这是一个惟一的标识符可以用来识别平台。场景布置平台平台创建标识符的顺序。您可以指定一个ClassID表示平台的分类。例如,在这里你用3来表示一个塔。

塔。ClassID = 3;

平台的签名

传感器可以检测平台。雷达传感器,有关签名是雷达截面(RCS)。默认情况下统一使用RCS签名:

tower.Signatures {1}
ans = rcsSignature属性:EnablePolarization: 0模式:[2 x2双]方位:[-180 - 180]海拔:[2 x1双]频率:1.0000 e + 20 [0] FluctuationModel: Swerling0

预定义的汽缸RCS数据加载和使用的数据定义RCS塔平台。

负载(“RCSCylinderExampleData.mat”,“气缸”);tower.Signatures {1}= rcsSignature(“模式”cylinder.RCSdBsm,“方位”cylinder.Azimuth,“高度”cylinder.Elevation,“频率”,cylinder.Frequency);

平台尺寸

默认情况下,平台没有维度和建模为点目标。您可以选择指定长度、宽度和高度来表示对象的程度,以及一个抵消身体的帧从其起源的几何中心。您可以指定尺寸使用平台财产。

你指定的尺寸塔是这样的:

塔。尺寸=结构(“长度”10“宽度”10“高度”现年60岁的“OriginOffset”30],[0 0);

塔有长度、宽度和高度的10,60米。的起源抵消[0 0 30]表明,它的身体坐标系原点(旋转中心)是30米的积极z方向当地平台的轴。

平台的轨迹

您可以获得一个平台通过其当前的位置和姿态位置取向属性。你可以获得更多信息平台使用场景的platformPoses方法:

scenario.platformPoses
ans =结构体字段:PlatformID: 1 ClassID: 3位置:[0 0 0]速度:[0 0 0]加速度:[0 0 0]取向:[1 x1四元数]AngularVelocity: [0 0 0]

您可以指定一个平台的位置和姿态随时间使用它轨迹财产。您可以指定一个平台使用的轨迹kinematicTrajectory,waypoinTrajectory,或geoTrajectory对象。

默认情况下,一个平台由一个静态的kineticTrajectory他的身体轴是完全集中,与场景轴:

tower.Trajectory
ans = kinematicTrajectory属性:SampleRate: 100位置:[0 0 0]取向:[1 x1四元数]速度:[0 0 0]AccelerationSource:“输入”AngularVelocitySource:“输入”

获得4度角,你使用取向轨迹的对象的属性。指定使用四元数从欧拉角获得取向。

tYaw = 0;tPitch = 4;巨魔= 0;tower.Trajectory。取向= quaternion([tYaw tPitch tRoll],“eulerd”,“zyx股票”,“帧”);

轴约定

大多数例子在雷达工具箱,使用“North-East-Down”公约。这意味着轴指向北方,y轴指向东方,z轴点向下。另外,x, y,和z -本地车身骨架的方向前进,分别和向下的方向。

想象一个场景

theaterPlot对象提供了一个接口动态三维场景绘制对象。你可以使用标准的MATLAB轴绘制的方法来添加或删除注释戏剧情节的轴,你可以获得通过财产。

使用一个platformPlotter绘制平台。

正如所料,塔在NED坐标原点为中心距4度。

tPlot = theaterPlot (“XLim”50 [-50],“YLim”50 [-50],“ZLim”,-100年[0]);pPlotter = platformPlotter (tPlot,“DisplayName的”,“塔”);构成= platformPoses(场景);towerPose =构成(1);towerDims = tower.Dimensions;plotPlatform (pPlotter towerPose。位置,towerDims, towerPose.Orientation); set(tPlot.Parent,“YDir”,“反向”,“ZDir”,“反向”);视图(tPlot。父,-37.5, 30)

添加传感器平台

添加一个雷达传感器平台,您可以添加一个radarDataGenerator对象在这个平台上使用它传感器财产。

记住,在NED坐标系统中,“Z”的方向点了。因此,如果你想安装一个雷达塔的顶部,你应该设定其-60米的“z”位置。

radarDataGenerator在场景中选择报告检测坐标。报告检测场景坐标中更容易比较生成的检测场景中对象的位置。

towerRadar = radarDataGenerator (“SensorIndex”,1“UpdateRate”10“MountingLocation”(0 0 -60),“ScanMode”,“没有扫描”,“之内”,真的,“TargetReportFormat”,“检测”,“DetectionCoordinates”,“场景”);塔。传感器= towerRadar;

可视化覆盖区域

看到传感器保险在一个场景中,您使用一个覆盖绘图机和情节的覆盖配置场景。你可以扩大戏剧情节的范围通过调整其内部轴的极限:

tPlot。XLimits = (-5000 - 5000);tPlot。YLimits = (-5000 - 5000);tPlot。ZLimits = (-1000 0);covPlotter = coveragePlotter (tPlot,“DisplayName的”,传感器覆盖的);plotCoverage (covPlotter coverageConfig(场景));

平台的签名

您可以添加其他平台的场景和调整参数,影响其他传感器观测平台。您可以使用一个rcsSignature模拟雷达安装在塔会看到什么。

下面的代码创建一个直升机和设置它的雷达截面全方位的价值40 dBsm。

直升机=平台(场景);直升机。维= struct(“长度”30岁的“宽度”、1。“高度”7“OriginOffset”[0 8 -3.2]);直升机。签名= rcsSignature (“模式”,(40 40;40 40),“高度”,-90;90年),“方位”[-180180]);

你可以安装多个传感器单元阵列中的任何平台通过将传感器之前分配的传感器财产。

直升机。传感器= {radarDataGenerator (“SensorIndex”2,“UpdateRate”,20岁,“MountingLocation”(22 0 0),“MountingAngles”(5 0 0),“ScanMode”,“没有扫描”,“之内”,真的,“TargetReportFormat”,“检测”,“DetectionCoordinates”,“场景”),radarDataGenerator (“SensorIndex”3,“UpdateRate”30岁的“MountingLocation”(22 0 0),“MountingAngles”(5 0 0),“ScanMode”,“没有扫描”,“之内”,真的,“TargetReportFormat”,“检测”,“DetectionCoordinates”,“场景”)};

平台运动和动画

你可以安排直升机雷达波束的路径。这显示了如何使直升机遵循一个连续路径在一个恒定的速度100米海拔250米为7秒:

直升机。轨迹= waypointTrajectory([2000 50 -250; 2000 -50 -250],[0 7]);

平台的运动时间是由使用while循环和调用场景的推进方法。

你可以画出所有的平台位置、方向和维度的循环:

概要文件= platformProfiles(场景);尺寸= vertcat (profiles.Dimensions);推进(场景)姿势= platformPoses(场景);位置= vertcat (poses.Position);方向= vertcat (poses.Orientation);plotPlatform (pPlotter,位置,尺寸,方向);plotCoverage (covPlotter coverageConfig(场景));取消注释以下行%动画更为缓慢%暂停(0.01)结束

检测平台

在上面的示例中,您添加三个雷达不同的更新率:塔有一个更新的速度10赫兹,和直升飞机有两个雷达更新20赫兹和30 Hz,分别。

场景可以放在调用模式推进更新仿真的时间需要更新的每个传感器它包含。你可以通过设置来实现这一点UpdateRate的场景为零。

场景。UpdateRate = 0;

显示仿真时间,UI控件添加到图。

无花果=祖先(tPlot.Parent,“图”);timeReadout = uicontrol(图,“风格”,“文本”,“HorizontalAlignment”,“左”,“位置”[0 0 200 20]);timeReadout。字符串=”SimulationTime:“+ scenario.SimulationTime;

现在的传感器*可到达。您可以使用检测让每个传感器检测可用的内循环。检测可以通过构造一个显示detectionPlotter对象。

dPlotter = detectionPlotter (tPlot,“DisplayName的”,“检测”);

你可以再次运行相同的模拟检测通过重启它和修改报告。

检测到的位置radarDataGenerator从检测可以提取吗测量字段:

重启(场景);(场景)timeReadout前进。字符串=”SimulationTime:“+ scenario.SimulationTime;检测=检测(场景);%提取列向量测量位置allDetections =(检测{:});如果~ isempty (allDetections)测量=猫(2,allDetections.Measurement)”;其他的测量= 0 (0,3);结束plotDetection (dPlotter、测量);提出了= platformPoses(场景);位置= vertcat (poses.Position);方向= vertcat (poses.Orientation);plotPlatform (pPlotter,位置,尺寸,方向);plotCoverage (covPlotter coverageConfig(场景));结束

注意,模拟增量不均一的更新时间乘以各自所需的传感器。

总结

在这个例子中,您学习了如何构建和可视化一个简单的场景和获取检测由雷达数据生成器生成的。