backscatterPedestrian

Радар обратного рассеяния сигнализирует от пешехода

Описание

backscatterPedestrian создает объект, который симулирует сигналы, отраженные от идущего пешехода. Модель обхода пешехода координирует движение 16 сегментов тела симулировать естественное движение. Модель также симулирует радарную отражающую способность каждого сегмента тела. Из этой модели можно получить положение и скорость каждого сегмента и общего количества backscattered излучение, когда тело перемещается.

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

Создание

Синтаксис

pedestrian = backscatterPedestrian
pedestrian = backscatterPedestrian(Name,Value,...)

Описание

pedestrian = backscatterPedestrian создает пешеходный целевой объект модели, pedestrian. Пешеходная модель включает 16 сегментов тела – левые и правые ноги, левые и правые голени, левые и правые бедра, левое и правое бедро, левые и правые предплечья, левые и правые плечи, левые и правые плечи, шея и голова.

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

pedestrian = backscatterPedestrian( ...
              'Height',2,'WalkingSpeed',0.5, ...
              'InitialPosition',[0;0;0],'InitialHeading',90);
модели женщина один 2D метр высотой или человек, проходящий положительный y - ось в половине метра в секунду.

Свойства

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

Высота пешехода в виде положительной скалярной величины. Модули исчисляются в метрах.

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

Обход скорости пешехода в виде неотрицательного скаляра. Модель движения ограничивает скорость обхода 1.4 раза пешеходным набором высоты в Height свойство. Модули исчисляются в метрах в секунду.

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

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

Пример: 3e8

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

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

Пример: 1e9

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

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

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

Первоначальный заголовок пешехода в виде скаляра. Заголовок измеряется в xy - плоскости от x - оси к y - ось. Модули в градусах.

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

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

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

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

Примеры

свернуть все

Вычислите отраженный радарный сигнал от пешехода, проходящего ось X далеко от источника. Радар действует на уровне 24 ГГц и расположен в начале координат. Пешеход первоначально в 100 метрах от радара. Передайте линейную форму волны FM, имеющую пропускную способность на 300 МГц. Отраженный сигнал получен в данный момент, пешеход начинает перемещаться и в две секунды в движение.

Создайте линейную форму волны FM и канал свободного пространства, чтобы распространить форму волны.

c = physconst('Lightspeed');
bw = 300.0e6;
fs = bw;
fc = 24.0e9;
wav = phased.LinearFMWaveform('SampleRate',fs,'SweepBandwidth',bw);
x = wav();
channel = phased.FreeSpace('OperatingFrequency',fc,'SampleRate',fs, ...
    'TwoWayPropagation',true);

Создайте пешеходный объект. Установите исходное положение пешехода к 100 м на оси X с первоначальным заголовком вдоль положительного направления X. Пешеходная высота составляет 1,8 м, и пешеход идет на уровне 0,5 метров в секунду.

pedest = phased.BackscatterPedestrian( 'Height',1.8, ...
    'OperatingFrequency',fc,'InitialPosition',[100;0;0], ...
    'InitialHeading',0,'WalkingSpeed',0.5);

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

[bppos,bpvel,bpax] = move(pedest,2,0);

Передайте первый импульс пешеходу. Создайте 16 копий сигнала и распространите их к позициям пешеходных сегментов тела. Используйте rangeangle функция, чтобы вычислить угол падения каждой копии в соответствующем сегменте тела. Затем используйте reflect функционируйте, чтобы возвратить когерентную сумму всех отраженных сигналов от сегментов тела в пешеходном исходном положении.

radarpos = [0;0;0];
xp = channel(repmat(x,1,16),radarpos,bppos,[0;0;0],bpvel);
[~,ang] = rangeangle(radarpos,bppos,bpax);
y0 = reflect(pedest,xp,ang);

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

[bppos,bpvel,bpax] = move(pedest,2,0);

Передайте и распространите второй импульс к новой позиции пешехода.

radarpos = [0;0;0];
xp = channel(repmat(x,1,16),radarpos,bppos,[0;0;0],bpvel);
[~,ang] = rangeangle(radarpos,bppos,bpax);
y1 = reflect(pedest,xp,ang);

Фильтр соответствия и график оба из отраженных импульсов. График показывает увеличенную задержку согласованного фильтра выход, когда пешеход уходит.

filter = phased.MatchedFilter('Coefficients',getMatchedFilter(wav));
ymf = filter([y0 y1]);
t = (0:size(ymf,1)-1)/fs;
plot(t*1e6,abs(ymf))
xlabel('Time (microsec)')
ylabel('Magnitude')
title('Match-Filtered Reflected Signals')
legend('Signal 1','Signal 2')

Увеличьте масштаб и покажите задержки каждого сигнала.

plot(t*1e6,abs(ymf))
xlabel('Time (microsec)')
ylabel('Magnitude')
title('Matched-Filtered Reflected Signals')
axis([50.65 50.7 0 .0026])
legend('Signal 1','Signal 2')

Создайте пешеходный объект. Установите исходное положение пешехода к 100 м на оси X с первоначальным заголовком вдоль положительного направления X. Пешеходная высота составляет 1,8 м, и пешеход идет на уровне 1,5 метров в секунду.

fc = 24.0e9;
pedest = phased.BackscatterPedestrian( 'Height',1.8, ...
    'OperatingFrequency',fc,'InitialPosition',[100;0;0], ...
    'InitialHeading',0,'WalkingSpeed',1.5);

Получите и постройте подробное движение правых и левых предплечий пешехода путем получения их положений каждая 1/10-я из секунды.

blla = zeros(3,100);
brla = blla;
t = zeros(1,100);
T = .1;
for k = 1:100
    [bppos,bpvel,bpax] = move(pedest,T,0);
    blla(:,k) = bppos(:,9);
    brla(:,k) = bppos(:,10);
    t(k) = T*(k-1);
end
plot(t,brla(1,:),t,blla(1,:))
title('Pedestrian Arm Motion')
xlabel('Time (sec)')
ylabel('Distance (m)')
legend('Right Lower Arm','Left Lower Arm')

Отобразите движение пешехода, обходящего квадратный путь. Создайте пешехода, использующего phased.BackscatterPedestrian объект со значениями по умолчанию за исключением высоты, которая составляет 1,7 метра. Усовершенствуйте и отобразите пешеходное положение каждые 3 миллисекунды. Во-первых, пешеход проходит положительная ось X, затем вдоль положительной оси Y, вдоль отрицательной оси X, и наконец вдоль отрицательной оси Y, чтобы вернуться к начальному вопросу.

ped = phased.BackscatterPedestrian('Height',1.7);
dt = 0.003;
N = 3600;
for m = 1:N
    if (m < N/4)
        angstep = 0.0;
    end
    if (m >= N/4)
        angstep = 90.0;
    end
    if (m >= N/2)
        angstep = 180.0;
    end
    if (m >= 3*N/4)
        angstep = 270.0;
    end
    move(ped,dt,angstep);
    plot(ped)
end

Ссылки

[1] Виктор Чен, микроэффект Доплера в радаре, доме Artech, 2011.

[2] Ронан Булик, Надя Магненат-Тальманн, Даниэл Тальманн, глобальная человеческая модель обхода с кинематической персонификацией в реальном времени, визуальным компьютером: международный журнал компьютерной графики, издания 6, выпуска 6, декабрь 1990.

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

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

Введенный в R2019a