phased.ScenarioViewer

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

Описание

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

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

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

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

  2. Вызовите 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 аргумент 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, из step метод в виде true или false. Установка этого свойства к true включает входные параметры. Когда этим свойством является false, векторы скорости оцениваются от изменения положения между последовательными обновлениями, разделенными на интервал обновления. Интервал обновления является инверсией UpdateRate значение.

Пример: false

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

Включите вход системных осей ориентации локальной координаты, radar_laxes и tgt_laxes, к 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 вектор, каждый элемент вектора задает длину соответствующего радара или целевой траектории. Закажите записи радарами, сопровождаемыми целями. Каждый вызов 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 обновить средство просмотра с каждым вызовом 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$m/s^2$ в отрицательном направлении 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