phased.ScenarioViewer

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

Описание

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

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

Чтобы создать средство просмотра сценариев:

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

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

Примечание

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

Конструкция

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

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

Свойства

расширить все

Имя заголовка окна, заданное как вектор символов. The 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-by- 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

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

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

Пример: true

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

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

Пример: 2.5

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

Отобразите заголовок, заданный как вектор символов. The 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

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

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

Пример: false

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

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

Пример: false

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

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

Пример: true

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

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

Пример: true

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

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

Пример: true

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

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

Пример: true

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

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

Пример: true

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

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

Пример: true

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

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

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

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

  • width задает ширину окна.

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

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

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

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

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

Пример: false

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

Методы

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

Разрешить изменение значения свойства системного объекта

Примеры

свернуть все

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

Создайте радар и платформу самолета System objects™. Установите частоту обновления равной 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 Системные objects™. Установите частоту обновления равной 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 Системные object™. Укажите начальное положение самолета по области значений и азимуту от наземного радара и его повышению. Самолет находится в 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