Документация Engee
Notebook

Автомобильный радар для оценки дальности одной цели

В примере рассматривается проектирование системной модели автомобильного радара на основе сигнала с линейной частотной модуляции (ЛЧМ) для определения дальностей объектов.

Используемые функции

In [ ]:
using DSP,FFTW,LinearAlgebra

function run_model( name_model, path_to_folder ) # определение функции для прогона модели
    Path = path_to_folder * "/" * name_model * ".engee"
    if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
        model = engee.open( name_model ) # Открыть модель
        engee.run( model, verbose=true ); # Запустить модель
        engee.close( name_model, force=true ); # Закрыть модель
    else
        model = engee.load( Path, force=true ) # Загрузить модель
        engee.run( model, verbose=true ); # Запустить модель
        engee.close( name_model, force=true ); # Закрыть модель
    end
    return
end;

function DataFrame2Array(X)
    out = collect(X)
    out_data = zeros(eltype(out.value[1]),size(out.value[1],1),size(out.value[1],2),length(out.value))
    [out_data[:,:,i] = out.value[i] for i in 1:length(out.value)]

    return out_data, out.time
end

function calc_spectrogram(x::Array,fs::Real,title::String;
    num_pulses::Int64 = 4,
    window_length::Int64 = 64,
    nfft::Int64=512,
    lap::Int64  = 60,
    thesh::Real = -Inf)

    gr()

    spec_out = spectrogram(x[:,:,1:num_pulses][:],window_length,lap;window=kaiser(window_length,3.95),nfft=nfft,fs=fs)

    power = pow2db.(spec_out.power)
    power .= map(x -> x < thesh ? thesh : x,power)

    power_new = zeros(size(power))

    power_new[1:round(Int64,size(power,1)/2),:] .= power[round(Int64,size(power,1)/2)+1:end,:]
    power_new[round(Int64,size(power,1)/2)+1:end,:] .= power[1:round(Int64,size(power,1)/2),:]

    fig = heatmap(fftshift(spec_out.freq).*1e-6,spec_out.time .*1e6, permutedims(power_new),color= :jet,
        gridalpha=0.5,margin=5Plots.mm,size=(900,400))
    xlabel!("Частота, МГц")
    ylabel!("Время, мкс")
    title!(title)

    return fig
end;

1. Описание структуры модели

1.1 Общая схема системной модели

Общая структурная схема системной модели представлена ниже:

image.png

Рассмотрим более детально структуру модели:

  • Генератор ЛЧМ-сигнала (FMCW Waveform): в качестве зондирующего сигнала (ЗС) используется непрерывный ЛЧМ-сигнал;
  • Передатчик (Transmitter): в передатчике усиливается сигнал и формируется диаграмма направленности (ДН);
  • Среда распространения (Channel): сигнал распространяется до целей и обратно до приемника, при этом учитывается аттенюация в зависимости от расстояния до цели;
  • Объект (Car): представляет собой движущийся автомобиль;
  • Приемник (Receiver Preamp): сигнал отраженный от машины поступает на приемную антенную решетку и усиливается, при этом учитываются собственные тепловые шумы приемника;
  • Цифоровая обработка сигнала (Signal Processing): оценивает дальность транспортного средства.

Схема работы модели представлена на рисунке ниже.

image_2.png

1.2 Описание этапов цифровой Обработки сигнала

В радилокационном приемнике отраженный сигнал проходит несколько этапов обработки прежде чем будет получена оценка дальности до целевого объекта - автомобиля. Процесс обработки сигналов (Signal Processing) состоит из двух этапов:

  • 1 Этап: Обработка сигнала по дальности. Принятый сигнал перемножается со комплексно-сопряженным входных сигналом, в результате возникает разностная частота (или частота биений) вследствие движения цели между отраженным и ЗС. Затем в происходит когерентное накопление 64 импульсов, которые складываются в подсистеме Сoherent Integration, что повышает отношение сигнал/шум. Далее, данные передаются в блок Range Response, который выполняет быстрое преобразование Фурье (БПФ) для последующей оценки дальности.
  • 2 Этап: обнаружение и оценка дальности объекта состоит из 5 параллельных каналов обработки данных для обнаружения и оценки дальности целевого объекта.

image.png

На этапе 2 каждый канал включает в себя 3 этапов обработки:

  • Обнаружения объекта: данные радара сначала передаются в одномерный обнаружитель с заданной вероятностью ложных тревоги (CFAR), использующий алгоритм скользящее-среднего окна. Этот блок определяет наличие отраженного сигнала.

  • Кластеризация: затем выполняется процесс кластеризации в блоке "DBSCAN Clusterer", где объединяются ячейки обнаружения в группы по дальности, используя данные полученные в блоке CFAR.

  • Оценка дальности: в заключительном этапе определения объектов обнаружения и кластеров последним шагом является блок Range Estimator. На этом этапе оценивается дальность обнаружения целей по данным радара.

image_2.png

1.3 Модель канала и цели

Подсистема модели «Канал и цель» имитирует распространение сигнала и его отражение от транспортного средства — цели.

  • Канал — имитирует распространение сигнала между транспортным средством-радаром и транспортным средством-целью. Канал может быть настроен как канал прямого прохождения в свободном пространстве (модель Free Space Channel) или как двухлучевой канал, в котором сигнал поступает на приёмник как по прямому, так и по отражённому от земли пути (модель Two-Ray Channel). По умолчанию выбран канал в свободном пространстве.

image_2.png

  • Цель - Отражает падающий сигнал и моделирует траекторию движения целевого транспортного средства. Подсистема, показанная ниже, состоит из двух частей: модели цели для имитации отраженного сигнала (блок - Target) и модели объекта в пространстве для имитации динамики движения целевого транспортного средства (блок - Platform).

image_4.png

2.Инициализация входных параметров

В сценарии модели транспортное средство, оснащенное радаром, начинает движение из точки отсчёта со скоростью 100 км/ч (27,8 м/с), а целевой объект начинает движение в 43 метрах перед ним со скоростью 96 км/ч (26,7 м/с). Положения и скорости радара и цели используются в канале распространения для расчёта задержки, эффекта Доплера и затухания сигнала.

Для инициализации входных параметров модели подключим файл "FMCWParam.jl". Если требуется изменить значения параметров, то откройте данный файл и отредактируйте необходимые параметры.

In [ ]:
include("$(@__DIR__)/FMCWParam.jl") # подключение файла с входными параметрами
paramRadarFMCW = FMCWParam(); # запись входных параметров в структуру
T = paramRadarFMCW.T; # шаг дискретизации модели
simT = 640*T; # время симуляции модели

3. Запуск модели

Запустим расчет симуляции модели при помощи функции run_model:

In [ ]:
run_model("FMCW_Radar_Range_Estimation",@__DIR__); # Запустить модель
Building...
Progress 0%
Progress 0%
Progress 5%
Progress 10%
Progress 15%
Progress 20%
Progress 33%
Progress 38%
Progress 49%
Progress 55%
Progress 66%
Progress 73%
Progress 80%
Progress 87%
Progress 93%
Progress 100%
Progress 100%

4. Cчитывание выходных данных

Извлечем результаты симуляции из переменных, записанных в рабочую область, в массив для дальнейшей визуализации:

In [ ]:
input_signal, _ = DataFrame2Array(in_sig) # входной ЛЧМ-сигнал
dec_signal, _ = DataFrame2Array(dec_sig) # сигнал после цифровой обработки
range_estimate, slow_time = DataFrame2Array(rng_est) # оценки дальности
RPos, fast_time = DataFrame2Array(RPos) # положение радара
CPos,_ = DataFrame2Array(CPos); # положение объекта

5. Визуализация работы радара

5.1 Cпектрограмма входного сигнала

Сначала рассмотрим спектрограмму излученного ЛЧМ-сигнала.

In [ ]:
calc_spectrogram(
    input_signal, # ЛЧМ-сигнал
    paramRadarFMCW.Fs, # частота дискретизации
    "Cпектрограмма ЛЧМ-сигнала";
    num_pulses=4 # количество импульсов отображения
)
Out[0]:

Спектрограмма приведенная выше, показывает, что девиация частоты составляет 150 МГц c периодом каждые 7 микросекунд, что соответствует разрешению примерно в 1 метр.

5.2 Cпектрограмма сигнала после цифровой обработки

Далее, рассмотрим спектрограмму сигнала после цифровой обработки:

In [ ]:
calc_spectrogram(
    dec_signal[:,:,2:end], # сигнал после обработки (отображается со 2 импульса)
    paramRadarFMCW.Fs/paramRadarFMCW.NumSweeps, # частота дискретизации
    "Cпектрограмма сигнала после обработки";
    num_pulses=4, # количество импульсов 
    thesh=-300 # порог, дБ
)
Out[0]:

На графике показано, что частота биений, создаваемая объектов, составляет приблизительно 100 кГц. Обратите внимание, что после обработки сигнал имеет только одну частотную составляющую. Итоговая оценка дальности рассчитывается на основе частоты биений, с точностью в 1 метр.

5.3 Оценка дальности до объекта

И наконец, посмотрим на результат работы радара:

In [ ]:
gr()
true_range = [norm(CPos[:,1,i].-RPos[:,1,i]) for i in 1:size(CPos,3)]
p1 = plot(Vector(slow_time)*1e3,range_estimate[:],label="оценка расстояния",margin=5Plots.mm,
    titlefont=font(10,"Computer Modern"),guidefont = font(8,"Computer Modern"),legendfont = font(8,"Computer Modern"))
plot!(Vector(fast_time)*1e3,true_range,label="истинное расстояние")
ylabel!("Расстояние, м")
title!("Зависимость оценки расстояния до цели от времени")

p2 = plot(Vector(slow_time)*1e3,abs.(range_estimate[:].-true_range[1:paramRadarFMCW.NumSweeps:end]),lab="",
titlefont=font(10,"Computer Modern"),guidefont = font(8,"Computer Modern"),legendfont = font(8,"Computer Modern"))
xlabel!("Время, мс")
ylabel!("Расстояние, м")
title!("Отклонение оценки")

plot(p1,p2,layout=(2,1),size=(900,460))
Out[0]:

Таким образом, точность оценки расстояние от радара до целевого объекта соответствует заявленной точности - 1 м.

5.4 Анализ влияния двухлучевого распространения сигнала

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

Если установить модель распространение по двухлучевому каналу (Two-Ray), являющийся простейшим многолучевым каналом, можно заметить, что главную частоту биений невозможно различить на фоне спектра шума (см. спектрограмму ниже) поскольку прямой сигнал складываются с отраженным.

image.png

Залючение

В примере было рассмотрено моделирование базовой модели атомобильного радара с применение в качестве зондирующего сигнала - непрерывный ЛЧМ-сигнал. В результате работы модели была найдена оценка расстояние от радара до целевого объекта (автомобиля) с точностью разрешения радара - 1 метр.

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

Блоки, использованные в примере