theaterPlot
Визуализация радиолокационного сценарияВ этом примере показано, как использовать theaterPlot
визуализация различных аспектов радиолокационного сценария.
theaterPlot
является эффективным инструментом для визуализации различных аспектов радиолокационного сценария. Он состоит из первичного объекта, который принимает окружение графического изображения на основе родительских осей, и плоттеров, чтобы построить график желаемых аспектов функций из радиолокационного сценария.
Этот рисунок показывает структурное представление theaterPlot
объект.
The Parent
свойство задает оси, на которых включен график театра. Можно задать родительские оси графика театра во время создания объекта. Если вы не задаете родительские оси, theaterPlot
создает новый рисунок и использует в качестве своей Parent
текущие системы координат созданного рисунка свойство. Можно также задать пределы осей родительских осей с помощью
XLimits
, YLimits
, и Zlimits
свойства при помощи аргументов пары "имя-значение" во время создания объекта. Установите единицы измерения для каждой оси с помощью AxesUnits
свойство.
The Plotters
свойство содержит плоттеры, которые вы добавили в theaterPlot
объект.
platformPlotter
- Постройте графики платформ в радиолокационном сценарии
trajectoryPlotter
- Постройте траектории в радиолокационном сценарии
orientationPlotter
- Построение графика ориентации платформ в радиолокационном сценарии
coveragePlotter
- Постройте покрытие датчика и лучи датчика в радиолокационном сценарии
detectionPlotter
- Построение графиков обнаружения датчиков в радиолокационном сценарии
trackPlotter
- Постройте графики в радиолокационном сценарии
Можно задать визуальные элементы и эффекты для каждого плоттера во время создания плоттера. Каждый плоттер также работает в паре с theaterPlot
функция объекта, которую необходимо вызвать, чтобы построить график результатов. Для примера, a coveragePlotter
работает в паре с plotCoverage
функция объекта, которая показывает покрытие датчика.
Этот пример демонстрирует несколько плоттеров для визуализации радиолокационного сценария. theaterPlot
может эффективно работать с radarScenario
хотя вам не обязательно нужен радар Scenario
использовать theaterPlot
объект.
theaterPlot
и радиолокационные Scenario
ОбъектыСоздайте радиолокационный Scenario
объект и theaterPlot
объект.
simulationDuration = 100; scene = radarScenario('StopTime',simulationDuration); tp = theaterPlot('XLimits',[-250 250],'YLimits',[-250 250],'ZLimits',[0 120]); view(3);grid on;
Создайте траекторию путевой точки для целевой платформы.
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
функция для построения графика траектории путевой точки.
trajPlotter = trajectoryPlotter(tp,'DisplayName','Trajectory','Color','k','LineWidth',1.2); plotTrajectory(trajPlotter,{trajectory.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]));
Отобразите башню с помощью platform plotter.
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
объект.