exponenta event banner

backscatterBicyclist

Сигналы РЛС обратного рассеяния от велосипедиста

Описание

backscatterBicyclist объект имитирует радиолокационные сигналы обратного рассеяния, отраженные от движущегося велосипедиста. Велосипедист состоит как из велосипеда, так и из его гонщика. Объект моделирует движение велосипеда и вычисляет сумму всех отраженных сигналов от множества дискретных рассеивателей на велосипеде. Модель игнорирует внутренние окклюзии внутри велосипедиста. Отраженные сигналы основаны на модели с множеством рассеивателей, разработанной из радиолокационной системы с частотой 77 ГГц.

Рассеиватели расположены на пяти основных компонентах велосипедистов:

  • Рама велосипеда и велогонщик

  • Педали велосипедов

  • Верхние и нижние ноги всадника

  • Переднее колесо

  • Заднее колесо

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

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

Создание

Синтаксис

bicyclist = backscatterBicyclist
bicyclist = backscatterBicyclist(Name,Value,...)

Описание

bicyclist = backscatterBicyclist создает backscatterBicyclist объект, bicyclist, имеющие значения свойств по умолчанию.

bicyclist = backscatterBicyclist(Name,Value,...) создает backscatterBicyclist объект, bicyclist, с каждым указанным свойством Name установить в указанное значение Value. Можно указать дополнительные аргументы пары имя-значение в любом порядке как (Name1,Value1,...,NameN,ValueN). Все неопределенные свойства принимают значения по умолчанию. Например,

bicyclist = backscatterBicyclist( ...
              'NumWheelSpokes',18,'Speed',10.0, ...
              'InitialPosition',[0;0;0],'InitialHeading',90, ...
              'GearTransmissionRatio',5.5);
моделирует велосипед с 18 спицами на каждом колесе, который движется вдоль положительной оси y со скоростью 10 метров в секунду. Передаточное число 5,5 указывает на то, что на каждый поворот педали приходится 5,5 оборотов колеса. Велосипедист движется по оси Y.

На этом рисунке изображен велосипедист, начинающий поворачивать налево.

Свойства

развернуть все

Количество спиц на колесо велосипеда, указанное как положительное целое число от 3 до 50 включительно.

Типы данных: double

Отношение вращений колес к вращениям педалей, определяемое как положительный скаляр. Передаточное число должно быть в диапазоне от 0,5 до 6. Единицы измерения безразмерны.

Типы данных: double

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

Пример: 900e6

Типы данных: double

Исходное положение бициклиста, определяемое как действительный вектор 3 на 1 в виде [x; y; z] в глобальных координатах. Единицы в метрах. Исходное положение соответствует положению начала координат велосипеда. Начало координат находится в центре масс рассеивателей конфигурации велосипедистов по умолчанию, спроецированных на землю.

Типы данных: double

Начальный курс бициклиста, определяемый как скаляр. Курс измеряется в плоскости xy от оси x к оси y. Заголовок относится к глобальным координатам. Единицы измерения в градусах.

Типы данных: double

Скорость бициклиста, определяемая как неотрицательный скаляр. Модель движения ограничивает скорость максимальной скоростью 60 м/с (216 км/ч). Скорость определяется относительно глобальных координат. Единицы измерения в метрах в секунду.

Типы данных: double

Установить состояние наката велосипеда, указанное как false или true. Если установлено значение true, велосипед не педалирует, но колёса по-прежнему вращаются (freeweling). Если установлено значение false, велосипед педалирует, и GearTransmissionRatio определяет вращения колес для вращения педалей.

Типы данных: logical

Скорость распространения сигнала, заданная как положительный скаляр. Единицы измерения в метрах в секунду. Скорость распространения по умолчанию - это значение, возвращаемое physconst('LightSpeed'). Посмотрите physconst для получения дополнительной информации.

Пример: 3e8

Типы данных: double

Азимутальные углы сечения РЛС, определяемые как 1-by-P или P-by-1 действительный вектор. Это свойство определяет азимутальные координаты каждого столбца матрицы сечения РЛС, указанные RCSPattern собственность. P должно быть больше двух. Угловые единицы в градусах.

Пример: [-45:0.1:45]

Типы данных: double

Углы места сечения РЛС, определяемые как 1-by-Q или Q-by-1 действительный вектор. Это свойство определяет координаты отметки каждой строки матрицы сечения РЛС, указанные RCSPattern собственность. Q должно быть больше двух. Угловые единицы в градусах.

Пример: [-30:0.1:30]

Типы данных: double

Схема радиолокационного поперечного сечения (RCS), заданная как матрица вещественных значений Q-by-P или 1-by-P вектор вещественных значений. Строки матрицы представляют постоянную отметку, а столбцы - постоянный азимут. Q - длина вектора, определяемая ElevationAngles собственность. P - длина вектора, определяемая AzimuthAngles собственность. Единицы в квадратных метрах.

Можно также задать образец как 1-by-P действительный вектор углов азимута для одной отметки.

Значением этого свойства по умолчанию является матрица 1 на 361, содержащая значения, полученные в результате радиолокационных измерений бициклиста с частотой 77 ГГц. Значения по умолчанию для AzimuthAngles и ElevationAngles соответствуют матрице RCS по умолчанию.

Пример: [1,.5;.5,1]

Типы данных: double

Функции объекта

развернуть все

getNumScatterersКоличество рассеивателей на велосипеде
moveПоложение, скорость и ориентация движущегося велосипедиста
plotОтображение местоположения рассеивателей на велосипеде
reflectОтраженный сигнал от движущегося велосипедиста
stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Вычислите сигнал РЛС обратного рассеяния от велосипедиста, движущегося по оси Х на расстоянии 5 м/с от РЛС. Предположим, что радар расположен в начале координат. Радар передает сигнал LFM на частоте 24 ГГц с шириной полосы 300 МГц. Сигнал отражается в момент, когда велосипедист начинает движение, а затем на секунду позже.

Инициализация объектов Bicyclist, Waveform и канала распространения

Инициализируйте backscatterBicyclist, phased.LinearFMWaveform, и phased.FreeSpace объекты. Предположим, частота дискретизации 300 МГц. Исходное положение велосипедиста лежит на оси x в 30 метрах от радара.

bw = 300e6;
fs = bw;
fc = 24e9;
radarpos = [0;0;0];
bpos = [30;0;0];
bicyclist = backscatterBicyclist( ...
    'OperatingFrequency',fc,'NumWheelSpokes',15, ...
    'InitialPosition',bpos,'Speed',5.0, ...
    'InitialHeading',0.0);
lfmwav = phased.LinearFMWaveform( ...
    'SampleRate',fs, ...
    'SweepBandwidth',bw);
sig = lfmwav();
chan = phased.FreeSpace( ...
    'OperatingFrequency',fc, ...
    'SampleRate',fs, ...
    'TwoWayPropagation',true);

График начальной позиции бициклиста

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

dt = 1.0;
[bpos,bvel,bax] = move(bicyclist,dt,0);
plot(bicyclist)

Figure Bicyclist Trajectory contains an axes. The axes with title Bicyclist Trajectory contains an object of type line.

Получение первого отраженного сигнала

Распространить сигнал на все рассеиватели и получить суммарный отраженный обратный сигнал.

N = getNumScatterers(bicyclist);
sigtrns = chan(repmat(sig,1,N),radarpos,bpos,[0;0;0],bvel);
[rngs,ang] = rangeangle(radarpos,bpos,bax);
y0 = reflect(bicyclist,sigtrns,ang);

Распечатать положение бициклиста после обновления положения

После того, как велосипедист переместится, получите положения и скорости рассеивателя, а затем перемещайте велосипед по его траектории еще на секунду.

[bpos,bvel,bax] = move(bicyclist,dt,0);
plot(bicyclist)

Figure Bicyclist Trajectory contains an axes. The axes with title Bicyclist Trajectory contains an object of type line.

Получение второго отраженного сигнала

Распространить сигнал на все рассеиватели в их новых положениях и получить суммарный отраженный обратный сигнал.

sigtrns = chan(repmat(sig,1,N),radarpos,bpos,[0;0;0],bvel);
[~,ang] = rangeangle(radarpos,bpos,bax);
y1 = reflect(bicyclist,sigtrns,ang);

Сопоставить отраженные сигналы фильтра

Сопоставьте отраженные сигналы и постройте их график.

mfsig = getMatchedFilter(lfmwav);
nsamp = length(mfsig);
mf = phased.MatchedFilter('Coefficients',mfsig);
ymf = mf([y0 y1]);
fdelay = (nsamp-1)/fs;
t = (0:size(ymf,1)-1)/fs - fdelay;
c = physconst('LightSpeed');
plot(c*t/2,mag2db(abs(ymf)))
ylim([-200 -50])
xlabel('Range (m)')
ylabel('Magnitude (dB)')
ax = axis;
axis([0,100,ax(3),ax(4)])
grid
legend('First pulse','Second pulse')

Figure Bicyclist Trajectory contains an axes. The axes contains 2 objects of type line. These objects represent First pulse, Second pulse.

Вычислите разность в диапазоне между максимумами двух импульсов.

[maxy,idx] = max(abs(ymf));
dpeaks = t(1,idx(2)) - t(1,idx(1));
drng = c*dpeaks/2
drng = 4.9965

Разность дальности составляет 5 м, как и ожидалось, учитывая скорость велосипедиста.

Отображение спектрограммы, показывающей микродоплеровский эффект на радиолокационные сигналы, отраженные от рассеивателей на движущейся бициклической цели. Стационарная РЛС передает 1000 импульсов радиолокационной волны FMCW с шириной полосы 250 МГц и длительностью 1 мкс. Радар работает на частоте 24 ГГц. Велосипед стартует в 5 м от радара и отодвигается со скоростью 4 м/с.

Настройте форму сигнала, канал, передатчик, приемник и системные объекты платформы.

bw = 250e6;
fs = 2*bw;
fc = 24e9;
c = physconst('Lightspeed');
tm = 1e-6;
wav = phased.FMCWWaveform('SampleRate',fs,'SweepTime',tm, ...
    'SweepBandwidth',bw);
chan = phased.FreeSpace('PropagationSpeed',c,'OperatingFrequency',fc, ...
    'TwoWayPropagation',true,'SampleRate',fs);
radarplt = phased.Platform('InitialPosition',[0;0;0], ...
    'OrientationAxesOutputPort',true);
trx = phased.Transmitter('PeakPower',1,'Gain',25);
rcvx = phased.ReceiverPreamp('Gain',25,'NoiseFigure',10);

Создать bicyclist объект движется со скоростью 4 метра/с.

bicyclistSpeed = 4;
bicyclist = backscatterBicyclist('InitialPosition',[5;0;0],'Speed',bicyclistSpeed, ...
    'PropagationSpeed',c,'OperatingFrequency',fc,'InitialHeading',0.0);
lambda = c/fc;
fmax = 2*bicyclist.GearTransmissionRatio*bicyclistSpeed/lambda;
tsamp = 1/(2*fmax);

Закольцевать более 1000 импульсов. Найдите угол падения радара. Распространить волну на каждый рассеиватель, а затем отразить волну от рассеивателей обратно на радар.

npulse = 1000;
xr = complex(zeros(round(fs*tm),npulse));
for m = 1:npulse
    [posr,velr,axr] = radarplt(tsamp);
    [post,velt,axt] = move(bicyclist,tsamp,0);
    [~,angrt] = rangeangle(posr,post,axt);
    x = trx(wav());
    xt = chan(repmat(x,1,size(post,2)),posr,post,velr,velt);
    xr(:,m) = rcvx(reflect(bicyclist,xt,angrt));
end

Обработка поступающих сигналов. Сначала дехирпируют сигнал, а затем передают сигнал в короткое преобразование Фурье с использованием окна Кайзера.

xd = conj(dechirp(xr,x));
M = 128;
beta = 6;
w = kaiser(M,beta);
R = floor(1.7*(M-1)/(beta+1));
noverlap = M - R;
[S,F,T] = stft(sum(xd),1/tsamp,'Window',w,'FFTLength',M*2, ...
    'OverlapLength',noverlap);
maxval = max(10*log10(abs(S)));
pcolor(T,-F*lambda/2,10*log10(abs(S))-maxval);
shading flat;
colorbar
xlabel('Time (sec)')
ylabel('Speed (m/s)')

Figure contains an axes. The axes contains an object of type surface.

Создание пользовательского шаблона RCS для использования с backscatterBicyclist объект.

Шаблон RCS вычисляется из косинусов, поднятых до четвертой мощности. Постройте график.

az = [-180:180];
el = [-90:90];
caz = cosd(az').^4;
cel = cosd(el).^4;
rcs = (caz*cel)';
imagesc(az,el,rcs)
xlabel('Azimuth (deg)')
ylabel('Elevation (deg)')
colorbar

bicyclist = backscatterBicyclist( ...
    'NumWheelSpokes',18,'Speed',10.0, ...
    'InitialPosition',[0;0;0],'InitialHeading',90, ...
    'GearTransmissionRatio',5.5,'AzimuthAngles',az, ...
    'ElevationAngles',el,'RCSPattern',rcs);

Алгоритмы

развернуть все

Ссылки

[1] Stolz, M. et al. Европейская радиолокационная конференция (EURAD) 2017, Нюрнберг, 2017, стр. 94-97.

[2] Чен, В., Д. Тахмуш и У. Дж. Мицели. Радиолокационные микро-доплеровские подписи: обработка и применение. Инженерно-технологическое учреждение: Лондон, 2014.

[3] Belgiovane, D. и К. К. Чен. 10-я Европейская конференция по антеннам и распространению (EuCAP) 2016, Давос, 2016, стр. 1-5.

[4] Виктор Чен, микро-доплеровский эффект в радаре. Норвуд, Массачусетс: Artech House, 2011.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2021a