Main Content

tracking.scenario.airplaneMesh

Mesh representation of airplane

Description

example

mesh = tracking.scenario.airplaneMesh returns an extendedObjectMesh object defining an airplane mesh that can be used with the trackingScenario object.

Examples

collapse all

Create the airplane mesh.

mesh = tracking.scenario.airplaneMesh;

Visualize the mesh.

ax = axes('ZDir','reverse');
show(mesh,ax);
view(30,50);

Figure contains an axes object. The axes object contains an object of type patch.

Create a tracking scenario object and an airplane mesh object.

scene = trackingScenario;
mesh = tracking.scenario.airplaneMesh;

Create two tower platforms.

% Create the first tower.
tower = platform(scene);
h = 50;
tower.Trajectory.Position = [0 0 -h];
tower.Dimensions = struct('Length',10,'Width',10,'Height',h,'OriginOffset',[0 0 -h/2]);
tower.Sensors = monostaticLidarSensor('SensorIndex',1,...
    'MaxRange',200,...
    'HasINS',true,...
    'DetectionCoordinates','scenario',...
    'AzimuthLimits',[-75 75],...
    'ElevationLimits',[-10 30]);

% Create the second tower.
tower2 = platform(scene);
h = 50;
tower2.Trajectory.Position = [0 500 -h];
tower2.Dimensions = struct('Length',10,'Width',10,'Height',h,'OriginOffset',[0 0 -h/2]);
tower2.Sensors = monostaticLidarSensor('SensorIndex',2,...
    'MaxRange',200,...
    'HasINS',true,...
    'DetectionCoordinates','scenario',...
    'AzimuthLimits',[-75 75],...
    'ElevationLimits',[-10 30]);

Create the airplane target with associated mesh.

airplane = platform(scene);
airplane.Mesh = mesh;
% Set the dimensions of the plane which automatically adjust the size of the mesh.
airplane.Dimensions = struct('Length',40,...
    'Width',40,...
    'Height',12.5,...
    'OriginOffset',[0 0 12.5/2]);

Create a landing trajectory for the plane.

x = 50*ones(10,1);
y = linspace(-500,1000,10)';
yToLand = max(0,-y);
z = -1e4*(2.*(yToLand./50e3).^3 + 3*(yToLand./50e3).^2);
wps = [x y z];
toa = linspace(0,30,10)';
traj = waypointTrajectory(wps,toa);
airplane.Trajectory = traj;

Create a plotter to visualize the scenario.

lp = scatter3(nan,nan,nan,6,nan,'o','DisplayName','Lidar data');
tp = theaterPlot('Parent',lp.Parent,...
    'XLimits',[0 100],...
    'YLimits',[-500 1000],...
    'ZLimits',[-75 0]);
lp.Parent.ZDir = 'reverse';
view(lp.Parent,169,5);
pp = platformPlotter(tp,'DisplayName','Platforms','Marker','^');
cp = coveragePlotter(tp,'DisplayName','Lidar coverage');
hold on;

Advance the simulation, generate data, and visualize the results.

scene.UpdateRate = 0; % Automatic update rate
while advance(scene)
    % Generate point cloud.
    ptCloud = lidarDetect(scene);
    
    % Obtain coverage configurations.
    cfgs = coverageConfig(scene);
    
    % Plot coverage.
    cp.plotCoverage(cfgs);
    
    % Plot platforms.
    platPoses = platformPoses(scene);
    pos = vertcat(platPoses.Position);
    mesh = cellfun(@(x)x.Mesh,scene.Platforms);
    orient = vertcat(platPoses.Orientation);
    pp.plotPlatform(pos,mesh,orient);
    
    % Concatenate all point clouds.
    s = vertcat(ptCloud{:});
    % Plot lidar data.
    set(lp,'XData',s(:,1),...
        'YData',s(:,2),...
        'ZData',s(:,3),...
        'CData',s(:,3));
    drawnow;
end

Figure contains an axes object. The axes object contains 3 objects of type scatter, line, patch. These objects represent Lidar data, Platforms, Lidar coverage.

Output Arguments

collapse all

Airplane mesh, returned as an extendedObjectMesh object defining the mesh of an airplane.

Introduced in R2020b