В этом примере показано, как генерировать радиолокационные обнаружения из многоплатформной радиолокационной сети. Сеть включает в себя три платформы дальнего действия: две воздушно-десантные и одну наземную. Такие синтетические данные могут быть использованы для проверки производительности архитектур слежения для различных типов целей и маневров.
Радиолокационные платформы и цели моделируются в сценарии как platforms. Моделирование движения платформ в сценарии управляется trackingScenario.
% Create a tracking scenario to manage the movement of the platforms. scene = trackingScenario; % Create tracking scenario scene.UpdateRate = 0; % Use continuous update rate to handle sensors with different update rates sceneDuration = 60; % Duration of scenario in seconds scene.StopTime = sceneDuration;
Добавить воздушную платформу к сценарию движения на север со скоростью 650 км/ч на крейсерской высоте 10 км. Формирование траектории платформы из ППМ с помощью waypointTrajectory.
ht = 10e3; % Altitude in meters spd = 650*1e3/3600; % Speed in m/s start = [-spd*sceneDuration/2 5e3 -ht]; stop = [spd*sceneDuration/2 5e3 -ht]; traj = waypointTrajectory('Waypoints',[start;stop],'TimeOfArrival',[0; sceneDuration]); % Create the airborne platform with its trajectory. plat1 = platform(scene,'Trajectory',traj);
Добавьте к платформе радар с плоской решеткой. Установить радар в конусе в 5 метрах над платформой. Моделируйте радар как механически вращающуюся фазированную решетку. Радар в электронном виде укладывает лучи по высоте вдоль границы визирования массива. Технические характеристики смоделированной РЛС приведены ниже:
Чувствительность: 0 дБсм @ 375 км
Механическое сканирование: только азимут
Пределы сканирования Mechanical: от 0 до 360 град.
Электронное сканирование: только отметка
Ограничения электронного сканирования: от -2 до 45 °
Поле зрения: азимут 1 град., отметка 47 град.
Измерения: Азимут, отметка, диапазон
Разрешение по азимуту: 1 град.
Разрешение по отметке: 5 град.
Разрешение по дальности: 30 м
Моделирование механически вращающейся РЛС с помощью fusionRadarSensor.
sensorIndex = 1; % Identifies originating sensor of each detection radar = fusionRadarSensor(sensorIndex,'Rotator', ... 'MountingLocation', [0 0 -5], ... % m 'UpdateRate', 12.5, ... % Hz 'ReferenceRCS', 0, ... % dBsm 'ReferenceRange', 375e3, ... % m 'ScanMode', 'Mechanical and electronic', ... 'MechanicalAzimuthLimits', [0 360], ... % deg 'MechanicalElevationLimits', [0 0], ... % deg 'ElectronicAzimuthLimits', [0 0], ... 'ElectronicElevationLimits', [-2 45], ... % deg 'FieldOfView',[1;47.1], ... % deg 'HasElevation', true, ... 'AzimuthResolution', 1, ... % deg 'ElevationResolution', 5, ... % deg 'RangeResolution', 30, ... % m 'HasINS', true); % Attach the radar to its airborne platform. plat1.Sensors = radar;
Добавить вторую воздушную платформу к сценарию движения на юг со скоростью 550 км/ч на крейсерской высоте 8 км.
ht = 8e3; % Altitude in meters spd = 550*1e3/3600; % Speed in m/s start = [spd*sceneDuration/2 5e3 -ht]; stop = [-spd*sceneDuration/2 5e3 -ht]; traj = waypointTrajectory('Waypoints',[start;stop],'TimeOfArrival',[0; sceneDuration]); plat2 = platform(scene,'Trajectory',traj);
На платформе может быть установлено множество датчиков. Добавить радар, состоящий из двух линейных фазированных решеток, установленных на высоте 5 метров над платформой. Установите массивы так, чтобы один массив смотрел на правую сторону корпуса, а другой - на левую сторону корпуса. Оба массива обеспечивают охват 150-градусного сектора азимута с обеих сторон платформы. Отметка не измеряется линейными массивами. Технические характеристики этого радара приведены ниже:
Чувствительность: 0 дБсм @ 350 км
Механическое сканирование: Нет
Электронное сканирование: только азимут
Ограничения электронного сканирования: от -75 до 75 град.
Поле зрения: азимут 1 град., отметка 60 град.
Измерения: Азимут, дальность
Разрешение по азимуту: 1 град.
Разрешение по дальности: 30 м
Моделирование РЛС линейной фазированной решетки с помощью fusionRadarSensor.
% Create right facing radar by setting radar's yaw to 90 degrees. sensorIndex = sensorIndex+1; rightRadar = fusionRadarSensor(sensorIndex,'Sector', ... 'MountingLocation', [0 0 -5], ... % m 'MountingAngles', [90 0 0], ... % deg, look over right side 'UpdateRate', 12.5, ... % Hz 'ReferenceRCS', 0, ... % dBsm 'ReferenceRange', 350e3, ... % m 'ScanMode','Electronic', ... 'ElectronicAzimuthLimits',[-75 75], ... % deg 'FieldOfView',[1;60], ... % deg 'HasElevation', false, ... 'AzimuthResolution', 1, ... % deg 'RangeResolution', 30, ... % m 'HasINS', true); % Create an identical radar looking over the left side of the airframe. leftRadar = clone(rightRadar); sensorIndex = sensorIndex+1; leftRadar.SensorIndex = sensorIndex; leftRadar.MountingAngles(1) = -90; % Look over the left side % Attach the two linear radar arrays to the airborne platform. plat2.Sensors = {leftRadar, rightRadar};
Добавить наземный радар с использованием прямоугольной фазированной решетки, установленной на высоте 5 метров над прицепом. РЛС осуществляет электронный обзор 60-градусного азимутального пролета и 20-градусного возвышения над землей с использованием электронной растровой развертки.
Чувствительность: 0 дБсм @ 350 км
Механическое сканирование: Нет
Электронный осмотр: Азимут и отметка
Пределы электронного сканирования: от -30 до 30 градусов по азимуту, от -20 до 0 градусов по высоте
Поле зрения: азимут 1 град., отметка 5 град.
Измерения: Азимут, отметка, диапазон
Разрешение по азимуту: 1 град.
Разрешение по отметке: 5 град.
Разрешение по дальности: 30 м
Моделирование РЛС прямоугольной фазированной решетки с помощью fusionRadarSensor.
% Create an electronically scanning rectangular array radar. sensorIndex = sensorIndex+1; radar = fusionRadarSensor(sensorIndex,'Raster', ... 'MountingLocation', [0 0 -5], ... % m 'UpdateRate', 25, ... % Hz 'ReferenceRCS', 0, ... % dBsm 'ReferenceRange', 350e3, ... % m 'ScanMode','Electronic', ... 'ElectronicAzimuthLimits', [-30 30],... % deg 'ElectronicElevationLimits', [-20 0],... % deg 'FieldOfView', [1;5], ... % deg 'HasElevation', true, ... 'AzimuthResolution', 1, ... % deg 'ElevationResolution', 5, ... % deg 'RangeResolution', 30, ... % m 'HasINS', true); % Attach the rectangular radar array to the trailer platform. plat3 = platform(scene,'Sensors',radar); plat3.Trajectory.Position = [-30e3 30e3 0]; plat3.Trajectory.Orientation = quaternion([-60 0 0],'eulerd','zyx','frame');
Добавить четыре воздушные цели в пределах области наблюдения.
Авиалайнер, следовавший на северо-восток со скоростью 700 км/ч на высоте 3000 м
Переезд авиалайнера на юго-восток со скоростью 900 км/ч на высоте 4000 м
Авиалайнер, следовавший на восток со скоростью 600 км/ч на высоте 9000 м
Реактивный самолет, движущийся со скоростью 300 км/ч и совершающий разворот на 90 градусов на высоте 3000 м
% Add airliner traveling northeast. ht = 3e3; % Altitude in meters spd = 700*1e3/3600; % Speed in m/s ang = 45; rot = [cosd(ang) sind(ang) 0;-sind(ang) cosd(ang) 0; 0 0 1]; offset = [-15e3 -25e3 -ht]; start = offset - [spd*sceneDuration/2 0 0]*rot; stop = offset + [spd*sceneDuration/2 0 0]*rot; traj = waypointTrajectory('Waypoints',[start;stop],'TimeOfArrival',[0; sceneDuration]); rcs = rcsSignature('Pattern', [10 10; 10 10], ... 'Azimuth', [-180 180], 'Elevation', [-90 90], ... 'Frequency', [0 10e9]); % Define custom RCS signature of target platform(scene,'Trajectory',traj,'Signatures',rcs); % Add crossing airliner traveling southeast. ht = 4e3; % Altitude in meters spd = 900*1e3/3600; % Speed in m/s offset = [(start(1)+stop(1))/2 (start(2)+stop(2))/2 -ht]; start = offset + [0 -spd*sceneDuration/2 0]*rot; stop = offset + [0 spd*sceneDuration/2 0]*rot; traj = waypointTrajectory('Waypoints',[start;stop],'TimeOfArrival',[0; sceneDuration]); rcs = rcsSignature; % Default 10 dBsm RCS at all viewing angles platform(scene,'Trajectory',traj,'Signatures',rcs); % Add eastbound airliner. ht = 9e3; % Altitude in meters spd = 600*1e3/3600; % Speed in m/s start = [30e3 -spd*sceneDuration/2-20e3 -ht]; stop = [30e3 spd*sceneDuration/2-20e3 -ht]; traj = waypointTrajectory('Waypoints',[start;stop],'TimeOfArrival',[0; sceneDuration]); platform(scene,'Trajectory',traj); % Default 10 dBsm RCS at all viewing angles % Add jet turning with horizontal acceleration of 0.3 G. ht = 3e3; % Altitude in meters spd = 300*1e3/3600; % Speed in m/s accel = 0.3*9.8; % Centripetal acceleration m/s^2 radius = spd^2/accel; % Turn radius in meters t0 = 0; t1 = t0+5; t2 = t1+pi/2*radius/spd; t3 = sceneDuration; start = [0e4 -4e4 -ht]; wps = [ ... 0 0 0; ... % Begin straight segment spd*t1 0 0; ... % Begin horizontal turn spd*t1+radius radius 0; ... % End of horizontal turn spd*t1+radius radius+spd*(t3-t2) 0]; % End of second straight segment traj = waypointTrajectory('Waypoints',start+wps,'TimeOfArrival',[t0; t1; t2; t3]); platform(scene,'Trajectory',traj);
Следующий цикл продвигает платформу и целевые позиции до конца сценария. Для каждого шага вперед в сценарии обнаружения генерируются из каждой платформы.
trackingScenario может продвигаться через фиксированный интервал времени или автоматически определять следующее время обновления. Установите UpdateRate кому 0 позволять trackingScenario определите следующее время обновления.
rng(2018); % Set random seed for repeatable results % Create a theaterPlot to show the true and measured positions of the detected targets and platforms. theaterDisplay = helperMultiPlatDisplay(scene); title('Multiplatform Radar Scenario'); legend('show'); % Show 3D view of the scenario. view(-60,10); % Log all the detections detLog = {}; timeLog = []; while advance(scene) % Generate detections from radars on each platform. [dets,configs] = detect(scene); % Update display with current beam positions and detections. theaterDisplay(dets); % Log sensor data and ground truth. detLog = [detLog; dets]; %#ok<AGROW> timeLog = [timeLog; scene.SimulationTime];%#ok<AGROW> end

Обратите внимание на широкие лучи от воздушных платформ и узкий луч от наземного радара, выполняющего растровое сканирование. Вы можете визуализировать траектории истинности земли на 2D виде ниже. Четыре цели представлены треугольниками. Около 30 км по оси x находится авиалайнер, идущий на восток (слева направо). Около 2 км по оси X находится струя, выполняющая поворот по часовой стрелке. Далее на юг находятся два пересекающихся авиалайнера.
view(-90,90); % 2D view
Постройте график зарегистрированных обнаружений с их неопределенностью измерений. Каждый цвет соответствует платформе, генерирующей обнаружения. Легенда из предыдущего отображения применяется ко всем следующим графикам. Обратите внимание, что радары генерируют ложные аварийные сигналы, которые обнаруживаются далеко от целевых траекторий.
theaterDisplay(detLog); title([num2str(numel(detLog)) ' Detections Logged from ' num2str(numel(timeLog)) ' Simulation Steps']); legend('hide');

На следующем виде 3D показано распределение этих обнаружений по отметке. Для платформ с 3D датчиками (синяя и желтая платформы) обнаруженные объекты точно соответствуют целевым траекториям. Детекции 2D-view платформы (красной платформы) смещены по высоте относительно траекторий цели, поскольку ее радар не способен измерять по высоте. Неопределенность измерения 1-сигма показана для каждого обнаружения в виде серого эллипсоида, центрированного на измеренных целевых положениях (показаны как заполненные окружности).
view([-60 25]); % 3D view
Увеличьте изображение струи, выполняющей горизонтальный поворот на 90 градусов. Неопределенность измерения 1-сигма сообщается РЛС в соответствии с разрешением РЛС и отношением сигнал/шум (SNR) для каждого обнаружения. Цели на более длинных дальностях или с меньшими значениями ОСШ будут иметь большую неопределенность измерения, чем цели на более близких дальностях или с большими значениями ОСШ. Обратите внимание, что синие детекторы имеют меньшие неопределенности измерений, чем желтые. Это происходит потому, что синие обнаруженные сигналы исходят от воздушной платформы (Платформа 1), которая гораздо ближе к цели, чем наземная платформа (Платформа 3), генерирующая желтые обнаруженные сигналы.
xlim([-3000 9000]); ylim([-44000 -32000]); zlim([-12000 0000]); axis('square'); title('Jet Executing Horizontal Turn');

Обратите внимание на большую неопределенность в подъеме красных детекторов, генерируемых с воздушной платформы (Платформа 2), которая использует два линейных массива. Эллипсоиды имеют небольшие оси в диапазоне и направлении азимута, но имеют очень большие оси вдоль направления возвышения. Это происходит из-за того, что линейные массивы на этой платформе не могут предоставить оценки по высоте. При этом РЛС платформы сообщает об обнаружениях при 0 градусах с неопределенностью в отметке, соответствующей полю обзора отметки.
Увеличьте изображение двух пересекающихся лайнеров. Синий бортовой радар с вращающейся решеткой генерирует наименьшее количество обнаружений (только 4 обнаружения для этих двух целей), но эти обнаружения являются наиболее точными (наименьшие эллипсы). Небольшое количество обнаружений с этой платформы связано с механическим сканированием ее радара на 360, что ограничивает частоту повторного посещения ее лучом цели в сценарии. Другие платформы имеют радары с меньшими областями сканирования, что позволяет им пересматривать цели с большей скоростью.
view([-55 20]);
xlim([-22000 -10000]); ylim([-31000 -19000]);
title('Crossing Airliners');
Увеличьте масштаб полета авиалайнера на восток. Применяются те же наблюдения за количеством обнаружений и точностью с различных радиолокационных платформ.
view([-70 10]);
xlim([24000 36000]); ylim([-26000 -14000]); zlim([-15000 -3000])
title('Airliner Traveling East');
В этом примере показано, как смоделировать сеть радиолокационного наблюдения и смоделировать обнаружения, генерируемые несколькими бортовыми и наземными радиолокационными платформами. В этом примере показано, как определить сценарии, включая цели и платформы, которые могут быть стационарными или находиться в движении. Также вы научились визуализировать траектории истинности земли, пучки датчиков, обнаружения и связанные с ними неопределенности измерений. Вы можете обработать эти синтетические данные с помощью алгоритмов отслеживания и слияния, чтобы оценить их производительность для этого сценария. Можно также изменить этот пример, чтобы использовать многоточечный трекер для различных типов целей и маневров.