theaterPlot
визуализировать радарный сценарийВ этом примере показано, как использовать theaterPlot
визуализировать различные аспекты радарного сценария.
theaterPlot
эффективный инструмент для визуализации различных аспектов радарного сценария. Это состоит из первичного объекта, который размещает среду графического вывода на основе родительские оси и плоттеры, чтобы построить желаемые аспекты функций из радарного сценария.
Этот рисунок показывает структурное представление theaterPlot
объект.
Parent
свойство задает оси, на которых включен театральный график. Можно задать родительские оси театрального графика во время создания объекта. Если вы не задаете родительские оси, theaterPlot
создает новую фигуру и использует текущую систему координат созданной фигуры как его Parent
свойство. Можно также установить пределы осей родительских осей с помощью XLimits
'YLimits'
, и Zlimits
свойства при помощи аргументов пары "имя-значение" во время создания объекта. Установите единицы измерения для каждого оси с помощью AxesUnits
свойство.
Plotters
свойство содержит плоттеры, которые вы добавили в theaterPlot
объект.
platformPlotter
— Постройте платформы в радарном сценарии
trajectoryPlotter
— Постройте траектории в радарном сценарии
orientationPlotter
— Постройте ориентацию платформ в радарном сценарии
coveragePlotter
— Постройте покрытие датчика и лучи датчика в радарном сценарии
detectionPlotter
— Постройте обнаружения датчика в радарном сценарии
trackPlotter
— Постройте дорожки в радарном сценарии
Можно указать визуальные элементы и эффекты для каждого плоттера во время создания плоттера. Каждый плоттер также соединяется с theaterPlot
возразите функции, которую необходимо вызвать, чтобы построить результаты. Например, coveragePlotter
соединяется с plotCoverage
возразите функции, которая показывает покрытие датчика.
Этот пример демонстрирует несколько плоттеров для визуализации радарного сценария. theaterPlot
может работать эффективно с radarScenario
даже при том, что вам не обязательно нужен radarScenario
использовать theaterPlot
объект.
theaterPlot
и radarScenario
ОбъектыСоздайте radarScenario
возразите и theaterPlot
объект.
simulationDuration = 100; scene = radarScenario('StopTime',simulationDuration); tp = theaterPlot('XLimits',[-250 250],'YLimits',[-250 250],'ZLimits',[0 120]); view(3);grid on;
Создайте waypoint траекторию для целевой платформы.
timeOfArrival = [0 simulationDuration]; waypoints = [100 -100 10; 100 100 80]; trajectory = waypointTrajectory(waypoints,timeOfArrival);
Добавьте целевую платформу кубоида, которая следует за заданной траекторией. Сначала добавьте целевую платформу в радарный сценарий.
target = platform(scene,'Trajectory',trajectory,'Dimensions', ... struct('Length',35,'Width',15,'Height',5.5,'OriginOffset',[0 0 0]));
Затем добавьте trajectoryPlotter
возразите против theaterPlot
объект и использование plotTrajectory
функционируйте, чтобы построить waypoint траекторию.
trajPlotter = trajectoryPlotter(tp,'DisplayName','Trajectory','Color','k','LineWidth',1.2); plotTrajectory(trajPlotter,{trajectory.Waypoints})
Снабдите подсказкой Вас, может построить несколько функций того-же-типа (платформы, траектории, ориентации, покрытия, обнаружения или дорожки) вместе использование одного плоттера. Например, можно построить несколько траекторий вместе путем определения массива ячеек waypoints в качестве второго аргумента plotTrajectory
функция. См. описание синтаксиса plotTrajectory
для получения дополнительной информации.
Задайте плоттер для целевой платформы.
targetPlotter = platformPlotter(tp,'DisplayName','Target', ... 'Marker','s','MarkerEdgeColor','g','MarkerSize',2); plotPlatform(targetPlotter,target.Position, ... target.Dimensions,quaternion(target.Orientation,'rotvecd'))
Можно добавить графические объекты кроме объектов плоттера на theaterPlot
путем прямого графического вывода на родительских осях theaterPlot
объект. Поместите круговой маркер в источник.
hold on plot3(tp.Parent,0,0,0,'Color','k','Marker','o','MarkerSize',4)
Добавьте платформу мачты в сценарий.
tower = platform(scene,'Position',[-100,0,0],'Dimensions', ... struct('Length',5,'Width',5,'Height',30,'OriginOffset',[0 0 -15]));
Отобразите башню с помощью плоттера платформы.
towerPlotter = platformPlotter(tp,'DisplayName','Tower','Marker','s','MarkerSize',2); plotPlatform(towerPlotter,tower.Position,tower.Dimensions,quaternion(tower.Orientation,'rotvecd'))
Смонтируйте моностатический радар к верхней части башни.
radar = radarDataGenerator(1,'DetectionMode','Monostatic', ... 'UpdateRate',5, ... 'MountingLocation',[0, 0, 30], ... 'FieldOfView',[4, 30],... 'MechanicalAzimuthLimits',[-60 60], ... 'MechanicalElevationLimits',[0 0], ... 'HasElevation',true, ... 'RangeResolution',200, ... 'AzimuthResolution',20, ... 'ElevationResolution',20); tower.Sensors = radar;
Добавьте coveragePlotter
и постройте покрытие и начальный луч для моностатического радара. При графическом выводе покрытия, plotCoverage
объектная функция требует второго аргумента, который задает настройку покрытия датчика. Получите настройку при помощи coverageConfig
функция на радарном сценарии scene
.
radarPlotter = coveragePlotter(tp,'Color','b','DisplayName','radar beam'); plotCoverage(radarPlotter,coverageConfig(scene))
Создайте плоттер обнаружения, чтобы построить обнаружения, которые генерирует радар.
detPlotter = detectionPlotter(tp,'DisplayName','Detection','MarkerFaceColor','r','MarkerSize',4);
Выполните итерации через радарный сценарий и сгенерируйте радарные обнаружения. Постройте платформу, радарное покрытие и обнаружения.
rng(2019) % for repeatable results while advance(scene) % Plot target. plotPlatform(targetPlotter,target.Position, ... target.Dimensions,quaternion(target.Orientation,'rotvecd')) % Plot sensor coverage. plotCoverage(radarPlotter,coverageConfig(scene)) % Extract target pose from the view of the tower and use the extracted % pose to generate detections. poseInTower = targetPoses(tower); [detections, numDets] = radar(poseInTower,scene.SimulationTime); detPos = zeros(numDets,3); detNoise = zeros(3,3,numDets); % Obtain detection pose relative to the scenario frame. Also, obtain % the covariance of the detection. for i=1:numDets a = detections; detPos(i,:) = tower.Trajectory.Position + detections{i}.Measurement'; detNoise(:,:,i) = detections{i}.MeasurementNoise; end % Plot any generated detections with the covariance ellipses. if ~isempty(detPos) plotDetection(detPlotter,detPos,detNoise) end end
Можно увеличить масштаб обнаружения на рисунке, чтобы визуализировать нанесенные на график замещающие знаки ковариации сгенерированных обнаружений.
В этом примере вы узнали об организации theaterPlot
объект. Вы также изучили, как визуализировать простой радарный сценарий с помощью theaterPlot
объект.