exponenta event banner

поэтапный. ScenarioViewer

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

Описание

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

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

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

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

  2. Позвоните в step способ обновления позиций РЛС и цели согласно свойствам phased.ScenarioViewer Системный объект. Настраиваемые свойства можно изменить в любое время.

Примечание

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

Строительство

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

sIS = phased.ScenarioViewer(Name,Value) возвращает объект System средства просмотра сценариев, sIS, с любым указанным свойством Name задать для указанного Value. Name должно отображаться внутри отдельных кавычек (''). Можно указать несколько аргументов пары имя-значение в любом порядке как 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-by-N матрица. N - количество радаров. Все скалярные, векторные и матричные записи являются положительными, вещественными числами между 0-360 °. Единицы измерения в градусах.

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

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

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

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

Дальность радиолокационного луча, заданная как положительный скаляр или вектор строки N-элемента, где N - количество радаров. Единицы в метрах. При задании в качестве скаляра все радары имеют одинаковый диапазон направленности. При задании в качестве вектора каждый элемент соответствует одной РЛС. Это свойство можно настроить.

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

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

Направления управления лучом РЛС, определяемые как действительный 2-элементный вектор-колонка положительных значений или 2-by-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

Отображение заголовка, заданного как символьный вектор. 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'объект System оценивает соответствующие значения для положения камеры, ориентации и угла обзора для отображения всех дорожек. При установке для этого свойства значения 'Custom'можно задать положение, ориентацию и углы камеры с помощью свойств камеры или панели инструментов камеры. При установке для этого свойства значения 'Radar'объект System определяет положение камеры, ориентацию и углы от положения радара и направления управления лучом радара. Это свойство можно настроить.

Пример: '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

Параметр для отображения легенды Viewer, указанной как 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

Методы

скрытьСкрыть окно просмотра сценариев
сбросСброс состояния объекта System
показатьПоказать окно просмотра сценариев
шагОбновление просмотра сценариев
Общие для всех системных объектов
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