Сообщество Engee

Локализация целей на основе пассивных РЛС

Автор
avatar-alexey777alexey777
Соавторы
avatar-dimabalakindimabalakin
Notebook

Локализация целей на основе пассивных РЛС

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

Этот пример является второй частью из серии решения задачи локализации. Первая часть посвящена методу активной радиолокации с применением алгоритма TOA (Time Of Arrival) для локализации малоразмерных объектов.

Введение

В области радиолокации задача локализации цели на основе данных, полученных от группы пространственно разнесённых датчиков с известными координатами, имеет значительную актуальность. Для решения этой задачи традиционно применяются методы, основанные на измерениях времени прихода (TOA — Time Of Arrival) и разности времён прихода (TDOA — Time Difference Of Arrival) сигналов.

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

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

Пассивный_радар_крутой.png

Подключение вспомогательных функций

Выполним инициализацию функций, необходимых для расчета оценок позиционирования и визуализации методов локализации TOA/TDOA

In [ ]:
isdefined(Main,:init_func) || include("init.jl")
Out[0]:
true

1. Формирование сценария работы РЛС

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

In [ ]:
# Параметры РЛС
fc = 12e9 # Гц, несущая частота
c = physconst("LightSpeed") # м/с, скорость распространения сигнала
bw = 100e6 # Гц, полоса сигнала
fs = bw # Гц, частота дискретизации

# Параметры приемо-передающего тракта
Pt = 10 # Вт, пиковая мощнсоть
Gtx = 40 # дБ, усиление передающей антенны
Grx = 40 # дБ, усиление приемной антенны
NF = 2.9 # дБ, коэффициент шума приемного тракта

# Формирование системных объектов (СО) функциональных узлов РЛС
antenna = EngeePhased.IsotropicAntennaElement( # СО изотропного антенного элемента
    BackBaffled=false # учет обратного рассеяния ДН антенны
) 
transmitter = EngeePhased.Transmitter( # СО - передатчик
    Gain=Gtx, # усиление передатчика
    PeakPower=Pt # Пиковая мощность 
)
radiator = EngeePhased.Radiator( # СО - передающая антенна
    Sensor=antenna, # ДН антенного элемента
    OperatingFrequency=fc # несущая частота антенны
)
collector = EngeePhased.Collector( # СО - приемная антенна
    Sensor=antenna, # ДН антенного элемента
    OperatingFrequency=fc # несущая частота антенны
)
receiver = EngeePhased.ReceiverPreamp(
    Gain=Grx, # усиление приемника
    NoiseFigure=NF, # коэффициент шума в тракте
    SampleRate=fs # частота дискретизации
)

# Создание СО - цель
tgtrcs = 1000 # м^2, ЭПР цели
target = EngeePhased.RadarTarget(
    MeanRCS=tgtrcs, # среднее значение ЭПР
    PropagationSpeed=c, # скорость распространения 
    OperatingFrequency=fc # несущая частота ЗС
)

# Модель сценария движения цели
tgtpos = [80; 40; 110]; # [pos_x,pos_y,pos_z],м начальный вектор положения  
tgtvel = [50; 40; 0]; # [v_x,v_y,v_z],м/с вектор скорости  
tgtplatform = EngeePhased.Platform( # СО - модель движения 
    InitialPosition=tgtpos,  # начальный вектор положения  
    Velocity=tgtvel # вектор скорости  
) 

# Модель сценария движения РЛС
radarpos = [ # м, начальные положения    
    0 300 100 200 150; 
    0 50 -200 300 100;
    0 -10 10 5 20
]

# Модель сценария движения РЛС
numRadar = size(radarpos,2) # Число РЛС 
radarvel = zeros(3,numRadar) # [v_x,v_y,v_z] [м/с], вектора скорости 
radarplatform = EngeePhased.Platform( # СО - модель движения РЛС
    InitialPosition=radarpos,  # начальный вектор положения  
    Velocity=radarvel # вектор скорости 
);

#  Модель базовой станции
txpos = [-150; -100; 50] # начальное положение              
txvel = [0; 0; 0] # вектор скорости                  
txplatform = EngeePhased.Platform(
    InitialPosition=txpos,
    Velocity=txvel
);

2. Формирование ЗС с фазокодовой манипуляцией (ФКМ)

ФКМ сигналы — это ещё один тип радиолокационных сигналов. В фазокодовом сигнале можно использовать несколько фазовых кодов, например код "Задоффа — Чу", код "Баркера", и т. д. Воспользуемся кодом "Задоффа — Чу", формирование которого реализуется с помощью системного объекта EngeePhased.PhaseCodedWaveform:

In [ ]:
# Формирование фазокодоманипулированного сигнала
N = 1024 # !!!Количество отчетов в импульсе (отсчеты быстрого времени)
M = 8 # Количетво импульсов (отсчеты медленного времени)
numChip = 2^nextpow2(N)-1 # Количество чипов в коде ФКМ сигнала
tchip = 1/bw # с, длительность чипа
tWave = numChip * tchip # период модуляции
prf = 1/tWave # Гц, частота следования импульсов

# Configure the phase coded waveform as the maximum length sequence
pmcwWaveform = EngeePhased.PhaseCodedWaveform(
    Code="ZadoffChu", # код сигнала
    SampleRate=fs, # частота дискретизации
    NumChips=numChip, # количество чипов
    ChipWidth=tchip, # длительность чипа
    OutputFormat="Samples", # формат выхода - отсчеты
    NumSamples=numChip  # количество чипов в импульсе
)
sig_pmcw = pmcwWaveform()*ones(1,M);
println("Размерность ЗС: $(size(sig_pmcw))")
Размерность ЗС: (1023, 8)
In [ ]:
plot_sig_and_spec(sig_pmcw[:,1];fs=fs,name_sig = "ФКМ")

3. Канал распространения

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

In [ ]:
 # модель канала для базовой станции
txchannel = EngeePhased.FreeSpace(
    PropagationSpeed=c,
    OperatingFrequency=fc,
    SampleRate=fs,
    TwoWayPropagation=false
)

# Аналогичная модель для канала цель-РЛС
rxchannel = deepcopy(txchannel);

4. Расчет сценария работы системы пассивных РЛС

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

In [ ]:
# Выделение памяти под отраженный сигнал для всех РЛС
X = zeros(ComplexF64,size(sig_pmcw)...,numRadar)

# Сигнал базовой станции
txsig = transmitter.(sig_pmcw)

for rad_i in 1:numRadar
    # Выделение памяти для расчета отклика от i-ой РЛС
    x = zeros(ComplexF64,size(sig_pmcw)...)

    # Модель сценария 
    for m in 1:M
        # Обновления положения базовой станции, РЛС и цели
        tx_pos,tx_vel = txplatform(tWave)
        radar_pos,radar_vel = radarplatform(tWave)
        tgt_pos,tgt_vel = tgtplatform(tWave)

        # Расчет угла визирования базовая станция-цель
        _,txang = rangeangle(tgt_pos,tx_pos) 

        # излучение ЗС базовой станцией в среду
        radtxsig = radiator(txsig[:,m],txang) 

        # Распространение сигнала от базовой станции до цели
        txchansig = txchannel(radtxsig,tx_pos,tgt_pos,tx_vel,tgt_vel)

        # Отражение сигнала от цели
        tgtsig = target(txchansig)

        # Распространение сигнала от цели до i-ой РЛС
        rxchansig = rxchannel(
            tgtsig,radar_pos[:,rad_i],tgt_pos, 
            radar_vel[:,rad_i],tgt_vel
        )

        # Расчет угла визирования РЛС-цель
        _,rxang = rangeangle(radar_pos[:,rad_i],tgt_pos)

        # Прием отраженного сигнала i-ой РЛС
        rxsig = collector(rxchansig,rxang)

        # предварительное усиление принятого сигнала
        x[:,m] .= receiver(rxsig)
    end

    # запись принятого сигнала i-ой РЛС
    X[:,:,rad_i] .= x

    # Сброс положения базовой станции, РЛС и цели
    reset_plt!(txplatform,txpos)
    reset_plt!(radarplatform,radarpos)
    reset_plt!(tgtplatform,tgtpos)
end

5. Расчет оценок задержек методом TDOA

Выполнив расчет отраженного сигнала многопозиционной пассивной РЛС, сформируем измерения задержек методом TDOA. Воспользуемся объектом TDOAEstimator для оценки TDOA между различными парами радиолокаторов на основе алгоритма обобщённой кросс-корреляции (GCC) с фазовым преобразованием (PHAT).

In [ ]:
# Создание объекта TDOAEstimator
tdoaEstimator = TDOAEstimator(
    SampleRateSource="Input port", #способ частоты дискретизации (входной порт)
    VarianceOutputPort=true
)

# Расчет оценок и дисперсии задержек
Y2, tdoa_var_2 = tdoaEstimator(X, fs);
println("Оценки задержек для каждой пары РЛС: $(round.(Y2.*1e9;sigdigits=6)) нc")
Оценки задержек для каждой пары РЛС: [372.5 401.0 552.0 -39.0] нc

Анализ СПМ отраженного сигнала может помочь нам лучше понять, насколько точно оценивается TDOA для каждой пары радаров. Отобразим результаты оценки TDOA для пары РЛС с помощью функции plotTDOASpectrum.

In [ ]:
plotTDOASpectrum(tdoaEstimator;
    AnchorPairIndex=1:4, # номера пар РЛС
    MaxDelay=1000e-9, # Максимальная задержка
    DinRange=60, # Динамический диапазон
    OneSidedSpectrum=false # построение одностороннего спектра
)

Получив оценки, дисперсии оценок задержки и известные координаты радара, воспользуемся функцией tdoaposest для определения местоположения:

In [ ]:
tgtposest = tdoaposest(Y2,tdoa_var_2,radarpos)

println("Оценка положений $(round.(tgtposest;sigdigits=6)) м")
println("Истинное положение $(tgtpos) м")
Оценка положений [78.6879; 39.7331; 111.871;;] м
Истинное положение [80, 40, 110] м

Ниже приведена визуализация процесса локализации методом TDOA:

In [ ]:
helperPlotTDOAPositions(c,Y2,tgtposest,radarpos,tgtpos,txpos)

Также, проверим точность определения местоположения с применением функции RMSE:

In [ ]:
RMSE = rmse(tgtposest,tgtpos)
println("СКО позиционирования: $(round(RMSE;sigdigits=6)) м")
СКО позиционирования: 1.32823 м

Заключение

В примере продемонстрировано решение задачи локализации цели с пассивной многопозиционной РЛС в среде моделирования Engee. .

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