exponenta event banner

двинуться

Положение и скорость пешехода

Описание

пример

[BPPOS,BPVEL,BPAX] = move(pedestrian,T,ANGH) возвращает позицию, BPPOS, скорость, BPVELи оси ориентации, BPAX, сегментов кузова движущегося пешехода. Затем объект моделирует движение ходьбы в течение следующей длительности, указанной в T. ANGH определяет текущий угол заголовка.

Примеры

свернуть все

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

Создайте линейный ЧМ-сигнал и канал свободного пространства для распространения сигнала.

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 м по оси Х с начальным курсом по положительному направлению х. Высота пешехода составляет 1,8 м, а пешеход идет со скоростью 0,5 метра в секунду.

pedest = 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')

Figure contains an axes. The axes with title Match-Filtered Reflected Signals contains 2 objects of type line. These objects represent 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')

Figure contains an axes. The axes with title Matched-Filtered Reflected Signals contains 2 objects of type line. These objects represent Signal 1, Signal 2.

Входные аргументы

свернуть все

Целевая модель пешехода, указанная как backscatterPedestrian объект.

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

Пример: 0.75

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

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

Пример: -34

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

Выходные аргументы

свернуть все

Положения сегментов тела, возвращаемые в виде вещественной матрицы 3 на 16. Каждый столбец представляет декартову позицию, [x;y;z], одного из 16 сегментов тела. Единицы в метрах. Столбец, представляющий положение каждого сегмента тела, см. в разделе Индексы сегментов тела.

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

Скорость сегментов тела, возвращаемая в виде вещественной матрицы 3 на 16. Каждый столбец представляет декартовый вектор скорости, [vx;vy;vz], одного из 16 сегментов тела. Единицы измерения в метрах в секунду. Столбец, представляющий скорость каждого сегмента тела, см. в разделе Индексы сегментов тела.

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

Оси ориентации сегментов тела, возвращенных как множество 3 на 3 на 16 с реальным знаком. Каждая страница представляет оси ориентации 3 на 3 одного из 16 сегментов тела. Единицы измерения безразмерны. См. раздел Индексы сегментов тела для страницы, представляющей ориентацию каждого сегмента тела.

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

Подробнее

свернуть все

Индексы сегментов тела

Индексы сегментов тела определяют, в каких столбцах BPPOS и BPVEL содержат данные о положении и скорости для конкретного сегмента тела. Индексы также указывают на страницу BPAX содержит матрицу ориентации для конкретного сегмента тела. Например, третий столбец из BPPOS содержит 3-D положение левого нижнего носка. BPAX содержит матрицу ориентации левой голени.

Индексы сегментов тела

Сегмент телаИндекс сегмента тела
левая нога1
правая нога2
левая голень3
правая голень4
левая верхняя нога5
правая верхняя нога6
левое бедро7
правое бедро8
левая нижняя рука9
правая нижняя рука10
левая верхняя рука11
правая верхняя рука12
левая обочина13
правое плечо14
шея15
голова16

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

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

.

См. также

| |

Представлен в R2019a