backscatterBicyclist

Радиолокационные сигналы обратного рассеяния от бициклиста

Описание

The 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, велосипедист не педалирует, но колеса все еще вращаются (свободное плавание). Если установлено значение false, велосипедист педалирует, и GearTransmissionRatio определяет повороты колеса для вращения педали.

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

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

Пример: 3e8

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

Радарные углы азимута поперечного сечения, заданные как 1-бай- P или P-на-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-байтовый P вещественный вектор углов азимута для одного повышения.

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

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

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

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

расширить все

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

Примеры

свернуть все

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

Инициализация объектов канала бициклиста, формы волны и распространения

Инициализируйте 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 функция объекта, получают начальные положения рассеивателя, скорости и ориентацию велосипедиста. Постройте график начального положения велосипедиста. The dt аргумент move функция object определяет, что следующий вызов 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 μsecдлительность. Радар работает на 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. Многоцелевая модель точек отражения велосипедистов для автомобильного радара 2017 European Radar Conference (EURAD), Нюрнберг, 2017, pp. 94-97.

[2] Chen, V., D. Tahmoush, and W. J. Miceli. Радиолокационные микродопплеровские сигнатуры: обработка и применение. Институт инженерии и технологий: Лондон, 2014.

[3] Belgiovane, D., and C. C. Chen. Bicycles and Human Rider Backscattering at 77 GHz for Automotive Radar (неопр.) (недоступная ссылка). 2016 10th Европейская конференция по антеннам и распространению (EuCAP), Давос, 2016, стр. 1-5.

[4] Виктор Чен, The Micro-Doppler Effect in Radar. Norwood, MA: Artech House, 2011.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2021a