exponenta event banner

Пример радиолокационной системы глобальных и локальных координат

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

Выберите частоту сигнала 1 ГГц.

fc = 1e9;
c = physconst('LightSpeed');
lam = c/fc;

Создание всех компонентов радиолокационной системы

Сначала настройте передающую радиолокационную матрицу. Передающая решетка представляет собой однородную прямоугольную решетку (URA) 5 на 5, состоящую из изотропных антенных элементов. Массив неподвижен и расположен в положении (50,50,50) метров в глобальной системе координат. Хотя массивы размещаются в глобальной системе, позиции элементов массива всегда определяются в локальной системе координат массива. Интенсивность передаваемого сигнала в любом направлении является функцией угла передачи в локальной матричной системе координат. Укажите ориентацию массива. Без какой-либо ориентации оси локальных массивов выравниваются по глобальной системе координат. Выберите ориентацию массива так, чтобы вектор нормали массива указывал приблизительно в направлении цели. Для этого поверните массив на 90 ° вокруг оси Z. Затем поверните массив немного на 2 ° вокруг оси Y и снова на 1 ° вокруг оси Z.

antenna = phased.IsotropicAntennaElement('BackBaffled',false);
txarray = phased.URA('Element',antenna','Size',[5,5],'ElementSpacing',0.4*lam*[1,1]);
txradarAx = rotz(1)*roty(2)*rotz(90);
txplatform = phased.Platform('InitialPosition',[50;50;50],...
    'Velocity',[0;0;0],'InitialOrientationAxes',txradarAx,...
    'OrientationAxesOutputPort',true);
radiator = phased.Radiator('Sensor',txarray,'PropagationSpeed',c,...
    'WeightsInputPort',true,'OperatingFrequency',fc);
steervec = phased.SteeringVector('SensorArray',txarray,'PropagationSpeed',c,...
    'IncludeElementResponse',true);

Затем расположите цель примерно в 5 км от передатчика вдоль оси y глобальной системы координат и двигайтесь в направлении X. Обычно значения сечения радара задаются как функции углов падающего и отраженного лучей относительно локальных целевых осей. Выберите любую целевую ориентацию относительно глобальной системы координат.

Смоделировать непеременную цель, но разрешить RCS изменять при каждом вызове target способ. Настройте простую встроенную функцию, rcsval, для вычисления фиктивных, но разумных значений для RCS при различных углах лучей.

tgtAx = rotz(10)*roty(15)*rotx(20);
tgtplatform = phased.Platform('InitialPosition',[100; 10000; 100],...
    'MotionModel','Acceleration','InitialVelocity',[-50;0;0],'Acceleration',[.015;.015;0],...
    'InitialOrientationAxes',tgtAx,'OrientationAxesOutputPort',true);
target = phased.RadarTarget('OperatingFrequency',fc,...
    'Model','Nonfluctuating','MeanRCSSource','Input port');
rcsval = @(az1,el1,az2,el2) 2*abs(cosd((az1+az2)/2 - 90)*cosd((el1+el2)/2));

Наконец, настройте приемную радиолокационную матрицу. Приемная решетка также представляет собой URA 5 на 5, состоящую из изотропных антенных элементов. Массив неподвижен и расположен в 150 метрах в направлении z от передающего массива. Интенсивность принимаемого сигнала в любом направлении является функцией угла падения сигнала в локальной матричной системе координат. Укажите ориентацию массива. Выберите ориентацию так, чтобы этот массив также указывал приблизительно в направлении y к цели, но не был полностью выровнен с первым массивом. Для этого поверните массив на 92 ° вокруг оси Z, а затем на 5 ° вокруг оси X.

rxradarAx = rotx(5)*rotz(92);
rxradarAx = rotx(-.2)*rotz(92);

rxplatform = phased.Platform('InitialPosition',[50;50;200],...
    'Velocity',[0;0;0],'InitialOrientationAxes',rxradarAx,...
    'OrientationAxesOutputPort',true);
rxarray = phased.URA('Element',antenna','Size',[5,5],'ElementSpacing',0.4*lam*[1,1]);

Таким образом, для описания сценария радара необходимы четыре различные системы координат. Это

  1. Глобальная система координат.

  2. Локальная радиолокационная система координат, определяемая передающими радиолокационными осями.

  3. Локальная система координат, определяемая целевыми осями.

  4. Вторая локальная радиолокационная система координат, определяемая принимающими радиолокационными осями.

На рисунке показаны четыре системы координат. Оно не масштабируется и неточно представляет сценарий в примере кода.

Определение формы передаваемого сигнала и усиления передатчика

В качестве передаваемого сигнала используется линейный ЧМ-сигнал. Предположим, частота дискретизации 1 МГц, частота повторения импульсов 5 кГц и длительность импульса 100 микросекунд. Установите пиковую выходную мощность передатчика 1000 Вт, а коэффициент усиления 40,0.

tau = 100e-6;
prf = 5000;
fs = 1e6;
waveform = phased.LinearFMWaveform('PulseWidth',tau,...
    'OutputFormat','Pulses','NumPulses',1,'PRF',prf,'SampleRate',fs);
transmitter = phased.Transmitter('PeakPower',1000.0,'Gain',40);

Создайте согласованный фильтр из передаваемого сигнала.

filter = phased.MatchedFilter('Coefficients',getMatchedFilter(waveform));

Укажите каналы распространения

Использовать модели свободного пространства для распространения сигнала от передающей РЛС на цель и обратно на принимающую РЛС.

channel1 = phased.FreeSpace('OperatingFrequency',fc,...
    'TwoWayPropagation',false);
channel2 = phased.FreeSpace('OperatingFrequency',fc,...
    'TwoWayPropagation',false);

Задание формирователя луча фазового сдвига

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

rxangsteer = [22.2244;-5.0615];
rxangsteer = [10;-.07];
beamformer = phased.PhaseShiftBeamformer('SensorArray',rxarray,...
    'DirectionSource','Property','Direction',rxangsteer,...
    'PropagationSpeed',c,'OperatingFrequency',fc);

Цикл моделирования

Каждая итерация цикла обработки выполняет следующие операции:

  1. Обновляет положения РЛС и цели.

  2. Генерирует сигнал LFM.

  3. Усиливает форму сигнала.

  4. Излучает сигнал из передающей антенной решетки.

  5. Распространение сигнала на цель.

  6. Отражает сигнал от цели.

  7. Распространяет сигнал от цели на приемную антенную решетку.

  8. Собирает принятый сигнал на приемной антенне.

  9. Луч формирует поступающий сигнал на приемной антенне.

  10. Сопоставить (Match) - фильтрация сформированного луча и поиск его пикового значения.

Передача 100 импульсов формы сигнала. Передавать один импульс каждые 100 миллисекунд.

t = 0;
Npulse = 100;
dt = 1;

Создание хранилища для последующей печати.

azes1 = zeros(Npulse,1);
elevs1 = zeros(Npulse,1);
azes2 = zeros(Npulse,1);
elevs2 = zeros(Npulse,1);
rxsig = zeros(Npulse,1);

Введите контур моделирования и создайте передаваемый сигнал.

for k = 1:Npulse
    t = t + dt;
    wav = waveform();

Обновите положения РЛС и целей. Все положения и скорости определяются относительно глобальной системы координат. Потому что OrientationAxesOutputPort свойство целевого системного object™ имеет значение true, можно получить мгновенные локальные целевые оси, tgtAx1, из target способ. Эти оси необходимы для вычисления целевого RCS. Локальные оси массива фиксированы, поэтому их не нужно обновлять.

    [txradarPos,txradarVel] = txplatform(dt);
    [rxradarPos,rxradarVel] = rxplatform(dt);
    [tgtPos,tgtVel,tgtAx1] = tgtplatform(dt);

Вычислите мгновенную дальность и направление цели от передающей РЛС. Интенсивность передаваемой волны зависит от шаблона усиления матрицы. Эта картина является функцией углов направления относительно локальных радиолокационных осей. Можно вычислить направление цели относительно локальных осей передатчика, используя rangeangle функция с необязательным аргументом, определяющим локальные радиолокационные оси, txradarAx. (Без этого дополнительного аргумента, rangeangle возвращает азимут и углы отметки относительно глобальной системы координат).

    [~,tgtang_tlcs] = rangeangle(tgtPos,txradarPos,txradarAx);

Альтернативный способ вычисления углов направления - сначала вычислить их в глобальной системе координат, а затем преобразовать с помощью global2localcoord функция.

Создайте передаваемый сигнал. Переданный сигнал является усиленным вариантом сформированного сигнала.

    txwaveform = transmitter(wav);

Излучайте сигнал в мгновенном целевом направлении. Напомним, что радиатор управляется не в этом направлении, а в угле, определяемом вектором рулевого управления, txangsteer. Угол поворота выбирается, потому что цель проходит через это направление во время своего движения. Сюжет позволит нам увидеть улучшение реакции по мере того, как цель перемещается в главный лепесток радара.

    txangsteer = [23.1203;-0.5357];
    txangsteer = [10;-.07];

    sv1 = steervec(fc,txangsteer);
    wavrad = radiator(txwaveform,tgtang_tlcs,conj(sv1));

Распространение сигнала от передающей РЛС на цель. Координаты распространения находятся в глобальной системе координат.

    wavprop1 = channel1(wavrad,txradarPos,tgtPos,txradarVel,tgtVel);

Отражение формы сигнала от цели обратно к приемной радиолокационной матрице. Используйте простую зависимую от угла модель RCS, определенную ранее. Входами в rcs-модель являются азимут и отметка входящих и отраженных лучей относительно локальной целевой системы координат.

    [~,txang_tgtlcs] = rangeangle(txradarPos,tgtPos,tgtAx1);
    [~,rxang_tgtlcs] = rangeangle(rxradarPos,tgtPos,tgtAx1);
    rcs = rcsval(txang_tgtlcs(1),txang_tgtlcs(2),rxang_tgtlcs(1),rxang_tgtlcs(2));
    wavreflect = target(wavprop1,rcs);
    ns = size(wavreflect,1);
    tm = [0:ns-1]/fs*1e6;

Распространение сигнала от цели на приемную РЛС. Как и ранее, все координаты распространения сигнала выражены в глобальной системе координат.

    wavprop2 = channel2(wavreflect,tgtPos,rxradarPos,tgtVel,rxradarVel);

Вычислите отклик приемной антенной решетки в направлении, из которого поступает излучение. Сначала используйте rangeangle функцию вычисления направления цели относительно локальных осей приемного массива путем задания локальной системы координат приемника, rxradarAx.

    [tgtrange_rlcs,tgtang_rlcs] = rangeangle(tgtPos,rxradarPos,rxradarAx);

Сохраните диапазоны и углы направления для последующей печати.

    azes1(k) = tgtang_tlcs(1);
    elevs1(k) = tgtang_tlcs(2);
    azes2(k) = tgtang_rlcs(1);
    elevs2(k) = tgtang_rlcs(2);

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

    wavcoll = collectPlaneWave(rxarray,wavprop2,tgtang_rlcs,fc);

Луч формирует прибывающую волну. В этом сценарии формирователь луча приемника указывает в направлении, rxangsteer, указанный Direction имущества phased.PhaseShiftBeamformer Системный объект. Когда цель фактически лежит в этом направлении, отклик массива максимизировался.

    wavbf = beamformer(wavcoll);

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

    y = filter(wavbf);
    rxsig(k) = max(abs(y));
end

Постройте траекторию цели по азимуту и отметке относительно локальных координат передатчика. Красная окружность обозначает направление, в которое указывает матрица передатчиков.

plot(azes1,elevs1,'.b')
grid
xlabel('Azimuth (degrees)')
ylabel('Elevation (degrees)')
title('Target Track in Transmitter Local Coordinates')
hold on
plot(txangsteer(1),txangsteer(2),'or')
hold off

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

plot(azes2,elevs2,'.b')
axis([-5.0,25.0,-5.0,5])
grid
xlabel('Azimuth (degrees)')
ylabel('Elevation (degrees)')
title('Target Track in Receiver Local Coordinates')
hold on
plot(rxangsteer(1),rxangsteer(2),'or')
hold off

Постройте график амплитуды возвращенного сигнала в зависимости от азимута в локальных координатах приемника. Величина амплитуды зависит от нескольких факторов.

plot(azes2,rxsig,'.')
grid
xlabel('Azimuth (degrees)')
ylabel('Amplitude')
title('Amplitude vs Azimuth in Receiver Local Coordinates')