поэтапный. ScenarioViewer

Отобразите движение радаров и целей

Описание

Система phased.ScenarioViewer object™ создает 3-D средство просмотра, чтобы отобразить движение радаров и целей, которые вы моделируете в своей радарной симуляции. Можно отобразить текущие положения и скорости, объектные дорожки, положение и аннотации скорости, радарные направления луча и другие параметры объекта. Можно изменить радарные функции, такие как область значений луча и излучить ширину во время симуляции. Можно использовать Системный объект phased.Platform для объектов перемещения модели, или можно предоставить собственные динамические модели.

Эти данные показывают сценарий с четырьмя объектами, состоящий из наземного радара, двух самолетов и наземного транспортного средства. Можно просмотреть код, который сгенерировал эту фигуру в Визуализировании Многоплатформенного примера Сценария.

Создать средство просмотра сценария:

  1. Задайте и настройте Системный объект phased.ScenarioViewer. Смотрите Конструкцию. Можно установить свойства Системного объекта во время создания или оставить их их значениям по умолчанию. Некоторые свойства, которые вы устанавливаете во время создания, могут быть изменены позже. Эти свойства являются настраиваемыми.

  2. Вызовите метод phased.ScenarioViewer.step, чтобы обновить радар, и цель отобразила положения согласно свойствам Системного объекта phased.ScenarioViewer. Можно изменить настраиваемые свойства в любое время.

Примечание

При запуске в R2016b, вместо того, чтобы использовать метод step, чтобы выполнить операцию, заданную Системным объектом, можно вызвать объект с аргументами, как будто это была функция. Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Конструкция

sIS = phased.ScenarioViewer создает Системный объект средства просмотра сценария, sIS, имеющий значения свойств по умолчанию.

sIS = phased.ScenarioViewer(Name,Value) возвращает Системный объект средства просмотра сценария, sIS, с любым заданным набором свойства Name к заданному Value. Имя должно находиться внутри одинарных кавычек (' '). Можно задать несколько аргументов пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN.

Свойства

развернуть все

Имя заголовка окна, заданное как вектор символов. Свойство Name и свойство Title отличаются.

Пример: 'Multitarget Viewer'

Типы данных: char

Ссылочный радарный индекс, заданный как положительное целое число. Это свойство выбирает один из радаров как ссылочный радар. Его значение должно быть меньше чем или равно количеству радаров, которые вы задаете в аргументе radar_pos метода phased.ScenarioViewer.step. Это свойство является настраиваемым. Целевой диапазон, радиальная скорость, азимут и повышение заданы относительно этого радара.

Пример 2

Типы данных: double

Включите отображение радарных лучей, заданных как 'ReferenceRadar', 'None' или 'All'. Эта опция определяет, который радар излучает, чтобы показать.

ОпцияЛучи, чтобы показать
'ReferenceRadar'Покажите луч радара, заданного в свойстве ReferenceRadar.
'None'Не показывайте радарные лучи.
'All'Покажите лучи для всех радаров.

Это свойство является настраиваемым.

Пример: 'All'

Типы данных: char

Вертикальный и горизонтальный радар излучает ширины, заданные как положительный скаляр с действительным знаком, вектор-столбец с 2 элементами, N - вектор - строка элемента или 2 N матрицей. N является количеством радаров. Весь скаляр, вектор и матричные записи являются положительными, числами с действительным знаком между 0-360 °. Модули в градусах.

Спецификация значенияИнтерпретация
СкалярГоризонтальные и вертикальные радарные ширины луча равны и идентичны для всех радаров.
Вектор-столбец с 2 элементамиПервая строка задает горизонтальную ширину луча. Вторая строка задает вертикальную ширину луча. Эти значения идентичны для всех радаров.
N- вектор - строка элементаКаждый элемент применяется к одному радару. Вертикальные и горизонтальные ширины луча для каждого радара равны.
2 N матрицейКаждый столбец применяется к одному радару. Первая строка задает горизонтальную ширину луча, и вторая строка задает вертикальную ширину луча для каждого радара.

Когда CameraPerspective установлен в 'Radar', Системный объект использует это свойство вычислить значение CameraViewAngle. Это свойство является настраиваемым.

Пример: [20 10; 18 9]

Типы данных: double

Радарная область значений луча, заданная как положительная скалярная величина или N - вектор - строка элемента, где N является количеством радаров. Модули исчисляются в метрах. Когда задано как скаляр, все радары имеют ту же область значений луча. Когда задано как вектор, каждый элемент соответствует одному радару. Это свойство является настраиваемым.

Пример: [1000 1500 850]

Типы данных: double

Излучите держащиеся направления радаров, заданных как вектор-столбец с 2 элементами с действительным знаком положительных значений или 2 N матрицей с действительным знаком положительных значений. N является количеством радаров. Держащиеся углы луча относительно осей локальной координаты каждого радара. Модули в градусах. Каждый столбец принимает форму [azimuthangle;elevationangle]. Когда только один столбец задан, руководящие направления луча всех радаров являются тем же самым. Углы азимута от-180 ° до 180 °, и углы повышения от-90 ° до 90 °. Это свойство является настраиваемым.

Пример: [20 60 35; 5 0 10]

Типы данных: double

Включите входные параметры скорости, radar_velocity и tgt_velocity, метода phased.ScenarioViewer.step, заданного как true или false. Установка этого свойства к true включает входные параметры. Когда этим свойством является false, векторы скорости оцениваются от изменения положения между последовательными обновлениями, разделенными на интервал обновления. Интервал обновления является инверсией значения UpdateRate.

Пример: false

Типы данных: логический

Включите вход системных осей ориентации локальной координаты, radar_laxes и tgt_laxes, к методу phased.ScenarioViewer.step, заданному как false или true. Установка этого свойства к true включает входные параметры. Когда этим свойством является false, оси ориентации выравниваются с осями глобальной координаты.

Пример: true

Типы данных: логический

Частота обновления средства просмотра сценария, заданного как положительная скалярная величина. Модули находятся в герц.

Пример: 2.5

Типы данных: double

Отобразите заголовок, заданный как вектор символов. Свойство Title и свойство Name отличаются. Заголовок отображения появляется в фигуре наверху. Имя появляется наверху окна рисунка. Это свойство является настраиваемым.

Пример: 'Radar and Target Display'

Типы данных: char

Имена присвоены радарам и целям, заданным как 1 (N+M) массивом ячеек из символьных векторов. N является количеством радаров, и M является количеством целей. Закажите записи ячейки радарными именами, сопровождаемыми целевыми именами. Имена появляются в легенде и аннотациях. Когда вы устанавливаете PlatformNames на 'Auto', имена создаются, последовательно начиная с 'Radar 1' для радаров и 'Target 1' для целей.

Пример: {'Stationary Radar','Mobile Radar','Airplane'}

Типы данных: cell

Продолжительность видимости объектных дорожек, заданных как положительное целое число или (N+M) - вектор длины положительных целых чисел. N является количеством радаров, и M является количеством целей. Когда TrailLength является скаляром, все дорожки имеют ту же длину. Когда TrailLength является вектором, каждый элемент вектора задает длину соответствующего радара или целевой траектории. Закажите записи радарами, сопровождаемыми целями. Каждый вызов метода phased.ScenarioViewer.step генерирует новую видимую точку. Это свойство является настраиваемым.

Пример: [100,150,100]

Типы данных: double

Перспектива камеры, заданная как 'Auto', 'Custom' или 'Radar'. Когда вы устанавливаете это свойство на 'Auto', Системный объект оценивает, что соответствующие значения для положения камеры, ориентации и угла представления показывают все дорожки. Когда вы устанавливаете это свойство на 'Custom', можно установить положение камеры, ориентацию и углы с помощью свойств камеры или панели инструментов камеры. Когда вы устанавливаете это свойство на 'Radar', Системный объект определяет положение камеры, ориентацию и углы от радарного положения и радарного руководящего направления луча. Это свойство является настраиваемым.

Пример: 'Radar'

Типы данных: char

Положение камеры, заданное как вектор [x,y,z] действительных значений. Модули исчисляются в метрах. Это свойство применяется, когда вы устанавливаете CameraPerspective на 'Custom'. Когда вы не задаете это свойство, Системный объект выбирает значения на основе вашей настройки отображения. Это свойство является настраиваемым.

Пример: [100,50,40]

Типы данных: double

Ориентация камеры, заданная как вектор [pan,tilt,roll] положительных, действительных значений. Модули в градусах. Панорамирование и углы вращения принимают значения от –180° до 180°. Угол наклона принимает значения от –90° до 90°. Вращения камеры выполняются в порядке: панорамирование, наклон и список. Это свойство применяется, когда вы устанавливаете CameraPerspective на 'Custom'. Когда вы не задаете это свойство, Системный объект выбирает значения на основе вашей настройки отображения. Это свойство является настраиваемым.

Пример: [180,45,30]

Типы данных: double

Угол поля зрения камеры, заданный как скаляр с действительным знаком. Модули в градусах. Угловые значения представления находятся в области значений 0 ° к 360 °. Это свойство применяется, когда вы устанавливаете CameraPerspective на 'Custom'. Когда вы не задаете это свойство, Системный объект выбирает значения на основе вашей настройки отображения. Это свойство является настраиваемым.

Пример: 75

Типы данных: double

Опция, чтобы показать легенду средства просмотра, заданную как false или true. Это свойство является настраиваемым.

Пример: true

Типы данных: логический

Опция, чтобы показать наземную плоскость сценария средства просмотра, заданного как true или false. Это свойство является настраиваемым.

Пример: false

Типы данных: логический

Аннотируйте радар и предназначайтесь для дорожек с именами, заданными как true или false. Можно задать пользовательские имена платформы с помощью PlatformNames. Это свойство является настраиваемым.

Пример: false

Типы данных: логический

Опция, чтобы аннотировать радар и цель отслеживает с положениями, заданными как false или true. Это свойство является настраиваемым.

Пример: true

Типы данных: логический

Опция, чтобы аннотировать радар и цель отслеживает с диапазоном от ссылочного радара, заданного как false или true. Это свойство является настраиваемым.

Пример: true

Типы данных: логический

Опция, чтобы аннотировать радар и цель отслеживает с высотой, заданной как false или true. Это свойство является настраиваемым.

Пример: true

Типы данных: логический

Опция, чтобы аннотировать радар и цель отслеживает со скоростью, заданной как false или true. Это свойство является настраиваемым.

Пример: true

Типы данных: логический

Опция, чтобы аннотировать радар и цель отслеживает с радиальной скоростью, заданной как false или true. Радиальная скорость относительно ссылочного радара. Это свойство является настраиваемым.

Пример: true

Типы данных: логический

Опция, чтобы аннотировать радар и цель отслеживает с азимутом и углами повышения относительно ссылочного радара, заданного как false или true. Это свойство является настраиваемым.

Пример: true

Типы данных: логический

Размер окна средства просмотра сценария и положение, заданное как вектор [left bottom width height] положительных, действительных значений. Модули находятся в пикселях.

  • left устанавливает положение левого края окна.

  • bottom устанавливает положение базового края окна.

  • width устанавливает ширину окна.

  • height устанавливает высоту окна.

Когда вы не задаете это свойство, окно расположено в центр экрана, с width и height, принимающим значения 410 и пиксели 300, соответственно. Это свойство является настраиваемым.

Пример: [100,200,800,500]

Типы данных: double

Опция, чтобы уменьшать уровень графика, чтобы улучшать производительность, заданную как true или false. Установите это свойство на true обновлять средство просмотра по льготному тарифу. Установите это свойство на false обновлять средство просмотра с каждым вызовом метода phased.ScenarioViewer.step. Этот режим оказывает негативное влияние на производительность средства просмотра. Это свойство является настраиваемым.

Пример: false

Типы данных: логический

Методы

скрытьсяСкройте окно средства просмотра сценария
сбросСбросьте состояние Системного объекта
showПокажите окно средства просмотра сценария
шагОбновите отображение средства просмотра сценария
Характерный для всех системных объектов
release

Позвольте изменения значения свойства Системного объекта

Примеры

развернуть все

Визуализируйте дорожки радара и одной цели самолета. Радар является стационарным, и самолет перемещается в прямую линию. Поддержите радарный луч, указывающий на самолет.

Создайте радар и объекты платформной системы самолета. Установите частоту обновления на 0,1 с.

updateRate = 0.1;
radarPlatform = phased.Platform(...
    'InitialPosition',[0;0;10], ...
    'Velocity',[0;0;0]);
airplanePlatforms = phased.Platform(...
    'InitialPosition',[5000.0;3500.0;6000.0],...
    'Velocity',[-300;0;0]);

Создайте Системный объект phased.ScenarioViewer. Покажите, что радар излучает и аннотирует дорожки положением, скоростью и высотой.

sSV = phased.ScenarioViewer('BeamRange',5000.0,'UpdateRate',updateRate,...
    'PlatformNames',{'Ground Radar','Airplane'},'ShowPosition',true,...
    'ShowSpeed',true,'ShowAltitude',true,'ShowLegend',true);

Запустите сценарий. На каждом шаге вычислите угол к цели. Затем используйте тот угол, чтобы регулировать радарный луч к цели.

for i = 1:100
    [radar_pos,radar_vel] = step(radarPlatform,updateRate);
    [tgt_pos,tgt_vel] = step(airplanePlatforms,updateRate);
    [rng,ang] = rangeangle(tgt_pos,radar_pos);
    sSV.BeamSteering = ang;
    step(sSV,radar_pos,radar_vel,tgt_pos,tgt_vel);
    pause(0.1);
end

Визуализируйте дорожки бортового радара и цели наземного транспортного средства. Бортовой радар несет беспилотник, летящий на 5-километровой высоте.

Создайте радар беспилотника и наземное транспортное средство с помощью Системных объектов phased.Platform. Установите частоту обновления на 0,1 с.

updateRate = 0.1;
drone = phased.Platform(...
    'InitialPosition',[100;1000;5000], ...
    'Velocity',[400;0;0]);
vehicle = phased.Platform('MotionModel','Acceleration',...
    'InitialPosition',[5000.0;3500.0;0.0],...
    'InitialVelocity',[40;5;0],'Acceleration',[0.1;0.1;0]);

Создать Системный объект phased.ScenarioViewer?. Покажите, что радар излучает и аннотирует дорожки положением, скоростью, и, высота.

viewer = phased.ScenarioViewer('BeamRange',8000.0,'BeamWidth',2,'UpdateRate',updateRate,...
    'PlatformNames',{'Drone Radar','Vehicle'},'ShowPosition',true,...
    'ShowSpeed',true,'ShowAltitude',true,'ShowLegend',true,'Title','Vehicle Tracking Radar');

Запустите сценарий. На каждом шаге вычислите угол к цели. Затем используйте тот угол, чтобы регулировать радарный луч к цели.

for i = 1:100
    [radar_pos,radar_vel] = step(drone,updateRate);
    [tgt_pos,tgt_vel] = step(vehicle,updateRate);
    [rng,ang] = rangeangle(tgt_pos,radar_pos);
    viewer.BeamSteering = ang;
    viewer(radar_pos,radar_vel,tgt_pos,tgt_vel)
    pause(.1)
end

Этот пример показывает, как создать и отобразить многоплатформенный сценарий, содержащий наземный стационарный радар, поворачивающийся самолет, самолет постоянной скорости и движущееся наземное транспортное средство. Поворачивающийся самолет следует за параболическим курсом полета при убывании на уровне 20 м/с.

Задайте частоту обновления сценария на уровне 0,5 Гц. Для 150 шагов длительность времени сценария составляет 300 с.

updateRate = 0.5;
N = 150;

Настройте поворачивающийся самолет с помощью модели Acceleration Системного объекта phased.Platform?. Задайте исходное положение самолета областью значений и азимутом от наземного радара и его повышения. Самолет в 10 км от радара в 60? азимут и имеет высоту 6 км. Самолет ускоряется в 10 в отрицательном направлении X.

airplane1range = 10.0e3;
airplane1Azimuth = 60.0;
airplane1alt = 6.0e3;
airplane1Pos0 = [cosd(airplane1Azimuth)*airplane1range;...
    sind(airplane1Azimuth)*airplane1range;airplane1alt];
airplane1Vel0 = [400.0;-100.0;-20];
airplane1Accel = [-10.0;0.0;0.0];
airplane1platform = phased.Platform('MotionModel','Acceleration',...
    'AccelerationSource','Input port','InitialPosition',airplane1Pos0,...
    'InitialVelocity',airplane1Vel0,'OrientationAxesOutputPort',true,...
    'InitialOrientationAxes',eye(3));

Настройте стационарный наземный радар в начале координат глобальной системы координат. Чтобы моделировать вращающийся радар, измените наземный радарный руководящий угол луча в цикле обработки.

groundRadarPos = [0,0,0]';
groundRadarVel = [0,0,0]';
groundradarplatform = phased.Platform('MotionModel','Velocity',...
    'InitialPosition',groundRadarPos,'Velocity',groundRadarVel,...
    'InitialOrientationAxes',eye(3));

Настройте наземное транспортное средство, чтобы переместиться в постоянную скорость.

groundVehiclePos = [5e3,2e3,0]';
groundVehicleVel = [50,50,0]';
groundvehicleplatform = phased.Platform('MotionModel','Velocity',...
    'InitialPosition',groundVehiclePos,'Velocity',groundVehicleVel,...
    'InitialOrientationAxes',eye(3));

Настройте второй самолет, чтобы также переместиться в постоянную скорость.

airplane2Pos = [8.5e3,1e3,6000]';
airplane2Vel = [-300,100,20]';
airplane2platform = phased.Platform('MotionModel','Velocity',...
    'InitialPosition',airplane2Pos,'Velocity',airplane2Vel,...
    'InitialOrientationAxes',eye(3));

Настройте средство просмотра сценария. Задайте радар как наличие области значений луча 8 км, вертикальной ширины луча 30?, и горизонтальная ширина луча 2?. Аннотируйте дорожки положением, скоростью, высотой и областью значений.

BeamSteering = [0;50];
viewer = phased.ScenarioViewer('BeamRange',8.0e3,'BeamWidth',[2;30],'UpdateRate',updateRate,...
    'PlatformNames',{'Ground Radar','Turning Airplane','Vehicle','Airplane 2'},'ShowPosition',true,...
    'ShowSpeed',true,'ShowAltitude',true,'ShowLegend',true,'ShowRange',true,...
    'Title','Multiplatform Scenario','BeamSteering',BeamSteering);

Продвиньтесь через цикл обработки отображения, обновив радар и предназначайтесь для положений. Вращайте наземный радарный руководящий угол четырьмя градусами на каждом шаге.

for n = 1:N
    [groundRadarPos,groundRadarVel] = groundradarplatform(updateRate);
    [airplane1Pos,airplane1Vel,airplane1Axes] = airplane1platform(updateRate,airplane1Accel);
    [vehiclePos,vehicleVel] = groundvehicleplatform(updateRate);
    [airplane2Pos,airplane2Vel] = airplane2platform(updateRate);
    viewer(groundRadarPos,groundRadarVel,[airplane1Pos,vehiclePos,airplane2Pos],...
        [airplane1Vel,vehicleVel,airplane2Vel]);
    BeamSteering = viewer.BeamSteering(1);
    BeamSteering = mod(BeamSteering + 4,360.0);
    if BeamSteering > 180.0
        BeamSteering = BeamSteering - 360.0;
    end
    viewer.BeamSteering(1) = BeamSteering;
    pause(0.2);
end

Введенный в R2016a

Для просмотра документации необходимо авторизоваться на сайте