Этот пример сравнивает треугольные непрерывные волны с модуляцией частоты свипа (FMCW) и множественные формы манипуляции со сдвигом частоты (MFSK), используемые для одновременной оценки области значений и скорости для нескольких целей. Сигнал MFSK специально разработан для автомобильных радиолокационных систем, используемых в передовых системах помощи драйверу (ADAS). Это особенно привлекательно в многоцелевых сценариях, потому что он не вводит призрачные цели.
В примере Automotive Adaptive Cruise Control Using FMCW Technology (Radar Toolbox), автомобильная радиолокационная система предназначена для выполнения оценки области значений для автоматической системы круиз-контроля. Во второй части этого примера для одновременной оценки области значений и скорости целевого транспортного средства используется сигнал FMCW с треугольным свипом.
Несмотря на то, что форма волны FMCW треугольника свип решает проблему связи диапазон-Допплер элегантно для одной цели, его обработка становится сложной в многоцелевых ситуациях. Следующий раздел показывает, как треугольник свип FMCW сигнал ведет себя, когда две цели присутствуют.
Сцена включает автомобиль в 50 метрах от радара, передвигающийся на 96 км/ч в том же направлении, что и радар, и грузовик в 55 метрах, передвигающийся на 70 км/ч в противоположном направлении. Сам радар движется со скоростью 60 км/ч.
rng(2015);
[fmcwwaveform,target,tgtmotion,channel,transmitter,receiver,...
sensormotion,c,fc,lambda,fs,maxbeatfreq] = helperMFSKSystemSetup;
Затем симулируйте радиолокационный эхо от двух транспортных средств. Форма волны FMCW имеет полосу пропускания 150 МГц, поэтому разрешение области значений составляет 1 метр. Каждый сдвиг вверх или вниз занимает 1 миллисекунду, поэтому каждый сдвиг треугольника занимает 2 миллисекунды. Обратите внимание, что для выполнения области значений соединений и скорости необходим только один сдвиг треугольника.
Nsweep = 2;
xr = helperFMCWSimulate(Nsweep,fmcwwaveform,sensormotion,tgtmotion,...
transmitter,channel,target,receiver);
Хотя системе нужна полоса пропускания 150 МГц, максимальная частота пульсации гораздо меньше. Это означает, что на стороне обработки можно децимировать сигнал на более низкую частоту, чтобы облегчить требования к оборудованию. Частоты пульсации затем оцениваются с использованием децимированного сигнала.
dfactor = ceil(fs/maxbeatfreq)/2; fs_d = fs/dfactor; fbu_rng = rootmusic(decimate(xr(:,1),dfactor),2,fs_d); fbd_rng = rootmusic(decimate(xr(:,2),dfactor),2,fs_d);
Теперь есть две частоты пульсации от свипа вверх и две частоты пульсации от даунсипов. Поскольку любая пара частот пульсации от свипа вверх и свипа вниз может задать цель, существуют четыре возможные комбинации области значений и доплеровских оценок, но только две из них связаны с реальными целями.
sweep_slope = fmcwwaveform.SweepBandwidth/fmcwwaveform.SweepTime;
rng_est = beat2range([fbu_rng fbd_rng;fbu_rng flipud(fbd_rng)],...
sweep_slope,c)
rng_est = 4×1
49.9765
54.9088
64.2963
40.5891
Остальные два - это то, что часто называют призрачными целями. Связь между реальными целями и призрачными целями может быть лучше объяснена с помощью представления частота-время.
Как показано на рисунке, каждое пересечение возврата вверх-сдвига и возврата вниз-сдвига указывает возможную цель. Поэтому очень важно различать истинные цели и цели-призраки. Чтобы решить эту неоднозначность, можно передать дополнительные сигналы FMCW с различными склонами развертки. Поскольку только истинные цели будут занимать одно и то же пересечение во временной частотной области, неоднозначность разрешена. Однако этот подход значительно увеличивает сложность обработки, а также время вычислений, необходимое для получения допустимых оценок.
Сигнал множественного частотного сдвига (MFSK) [1] предназначен для автомобильного радара для достижения одновременного оценивания дальности и радиальной скорости объектов при ситуации множественных целей без попадания в ловушку призрачных целей. Его представление частота-время показано на следующем рисунке.
Рисунок показывает, что сигнал MFSK является комбинацией двух линейных сигналов FMCW с фиксированным смещением частоты. В отличие от регулярных сигналов FMCW, MFSK пропускает всю полосу пропускания на дискретных шагах. На каждом шаге передается сигнал непрерывной волны с одной частотой. Поскольку в каждом шаге существует два тональных сигнала, это может быть рассмотрено как сигнал частотного сдвига (FSK). Таким образом, существует один набор области значений и допплеровского отношения от формы волны FMCW и другой набор области значений и допплеровского отношения от FSK. Объединение двух наборов отношений вместе может помочь разрешить связывание между областью значений и Доплером независимо от количества целей, присутствующих в сцене.
В следующих разделах снова моделируется предыдущий пример, но вместо этого используется сигнал MFSK.
Во-первых, параметризируйте сигнал MFSK, чтобы удовлетворить системным требованиям, указанным в [1]. Поскольку разрешение в области значений составляет 1 метр, ширина полосы пропускания устанавливается на 150 МГц. В сложение смещение частоты устанавливается на -294 кГц как указано в [1]. Каждый шаг длится около 2 микросекунд, и весь свип имеет 1024 шага. Таким образом каждая зачистка FMCW делает 512 шагов, и полное время зачистки составляет немногим более, чем 2 мс. Обратите внимание, что время зачистки сопоставимо с сигналом FMCW, используемым в предыдущих разделах.
mfskwaveform = phased.MFSKWaveform(... 'SampleRate',151e6,... 'SweepBandwidth',150e6,... 'StepTime',2e-6,... 'StepsPerSweep',1024,... 'FrequencyOffset',-294e3,... 'OutputFormat','Sweeps',... 'NumSweeps',1);
Рисунок ниже показывает спектрограмму формы волны. Он масштабируется в небольшой интервал, чтобы лучше выявить частотно-временные характеристики формы волны.
numsamp_step = round(mfskwaveform.SampleRate*mfskwaveform.StepTime); sig_display = mfskwaveform(); spectrogram(sig_display(1:8192),kaiser(3*numsamp_step,100),... ceil(2*numsamp_step),linspace(0,4e6,2048),mfskwaveform.SampleRate,... 'yaxis','reassigned','minthreshold',-60)
Затем моделируйте возврат системы. Снова, только 1 свип необходим, чтобы оценить область значений и Допплер.
Nsweep = 1;
release(channel);
channel.SampleRate = mfskwaveform.SampleRate;
release(receiver);
receiver.SampleRate = mfskwaveform.SampleRate;
xr = helperFMCWSimulate(Nsweep,mfskwaveform,sensormotion,tgtmotion,...
transmitter,channel,target,receiver);
Последующая обработка дискретизирует возврат эхо в конце каждого шага и группирует дискретизированные сигналы в две последовательности, соответствующие двум свипам. Обратите внимание, что частота дискретизации полученной последовательности теперь пропорциональна времени на каждом шаге, что гораздо меньше по сравнению с исходной частотой дискретизации.
x_dechirp = reshape(xr(numsamp_step:numsamp_step:end),2,[]).'; fs_dechirp = 1/(2*mfskwaveform.StepTime);
Как и в случае сигналов FMCW, сигнал MFSK обрабатывается в частотный диапазон. Следующие рисунки показывают частотные спектры принятых эхо-сигналов, соответствующих этим двум свипам.
xf_dechirp = fft(x_dechirp); num_xf_samp = size(xf_dechirp,1); beatfreq_vec = (0:num_xf_samp-1).'/num_xf_samp*fs_dechirp; clf; subplot(211),plot(beatfreq_vec/1e3,abs(xf_dechirp(:,1)));grid on; ylabel('Magnitude'); title('Frequency spectrum for sweep 1'); subplot(212),plot(beatfreq_vec/1e3,abs(xf_dechirp(:,2)));grid on; ylabel('Magnitude'); title('Frequency spectrum for sweep 2'); xlabel('Frequency (kHz)')
Следует отметить, что в каждом частотном спектре имеется два пика, указывающих на две цели. В сложение peaks находятся в одинаковых местах в оба возвратов, поэтому призрачных целей нет.
Для обнаружения peaks можно использовать CFAR-детектор. После обнаружения частоты пульсации, а также различия фазы между двумя спектрами вычисляются в пиковых точках.
cfar = phased.CFARDetector('ProbabilityFalseAlarm',1e-2,... 'NumTrainingCells',8); peakidx = cfar(abs(xf_dechirp(:,1)),1:num_xf_samp); Fbeat = beatfreq_vec(peakidx); phi = angle(xf_dechirp(peakidx,2))-angle(xf_dechirp(peakidx,1));
Наконец, частоты пульсации и различий фаз используются для оценки области значений и скорости. В зависимости от того, как вы создадите различие фаз, уравнения немного отличаются. Для подхода, показанного в этом примере, может быть показано, что область значений и скорость удовлетворяют следующему отношению:
где - частота пульсации, - различие фаз, - длина волны, - скорость распространения, - время шага, - смещение частоты, - уклон сдвига, - область значений, и - скорость. На основе уравнения область значений и скорость оцениваются ниже:
sweep_slope = mfskwaveform.SweepBandwidth/... (mfskwaveform.StepsPerSweep*mfskwaveform.StepTime); temp = ... [1 sweep_slope;mfskwaveform.StepTime mfskwaveform.FrequencyOffset]\... [Fbeat phi/(2*pi)].'; r_est = c*temp(2,:)/2
r_est = 1×2
54.8564 49.6452
v_est = lambda*temp(1,:)/(-2)
v_est = 1×2
36.0089 -9.8495
Предполагаемые области значений и скорость соответствуют истинной области значений и значениям скорости, как представлено ниже, очень хорошо.
Вагон: r = 50 м, v = -10 м/с
Грузовик: r = 55 м, v = 36 м/с
Этот пример показывает два одновременных подхода к оценке области значений и скорости, используя либо сигнал FMCW треугольника свипа, либо сигнал MFSK. Показано, что форма волны MFSK имеет преимущество перед формой волны FMCW, когда присутствуют многочисленные цели, поскольку она не вводит призрачные цели во время обработки.
[1] Ролинг, Х. и М. Мейнеке. Принцип проекта формы волны для автомобильных радиолокационных систем, материалы Международной конференции CIE по радиолокации, 2001.