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 может эффективно работать с trackingScenario хотя вам не обязательно нужен trackingScenario использовать theaterPlot объект.
theaterPlot и trackingScenario ОбъектыСоздайте trackingScenario объект и theaterPlot объект.
simulationDuration = 100; scene = trackingScenario('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 = fusionRadarSensor(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 объект.