В этом примере показано, как оценить, что положение станции (STA) в лучевой среде при помощи времени прибытия основывало (находящийся в ToA) алгоритм расположения, заданный в стандарте IEEE® 802.11az™ Wi-Fi™. Пример оценивает ToA при помощи классификации сигналов кратного (MUSIC) подход суперразрешения, затем оценивает двумерное положение STA при помощи трилатерации. Пример затем оценивает и сравнивает эффективность алгоритма расположения в нескольких точках отношения сигнал-шум (SNR).
802.11az стандарт [1], обычно называемый расположением следующего поколения (NGP), позволяет STA идентифицировать свое положение относительно нескольких точек доступа (APS). Этот стандарт поддерживает две высокой эффективности (HE), располагающуюся физический уровень (PHY) модуль данных о протоколе (PPDU) форматы:
HE, располагающийся пустой пакет данных (NDP)
Основанный на триггере (TB) HE, располагающийся NDP
HE, располагающийся NDP и Тбайт HE, располагающийся NDP, является соответствующими аналогами HE, звучащего как NDP и обратная связь Тбайта HE форматы NDP PPDU, как задано в 802.11ax™ стандарт. Для получения дополнительной информации о них HE форматы PPDU см. [2].
HE, располагающийся NDP, поддерживает расположение одного или нескольких пользователей с дополнительным безопасным HE длинное учебное поле (HE-LTF) последовательность. Однопользовательский HE, располагающийся, форма волны содержит символы HE-LTF для отдельного пользователя, которые также поддерживают дополнительную безопасную последовательность HE-LTF. Многопользовательский HE, располагающийся форма волны, разрешает только безопасные символы HE-LTF для многого пользователя. Чтобы улучшить точность оценки положения, однопользовательские и многопользовательские формы волны могут содержать несколько повторений символов HE-LTF. Чтобы параметрировать и сгенерировать HE, располагающийся АРИФМЕТИЧЕСКИЕ ПРОЦЕССОРЫ, смотрите 802.11az пример Генерации сигналов.
Этот пример симулирует 802.11az сеть, состоящая из STA и нескольких APS. Чтобы оценить положение STA, сеть требует минимума трех APS. Пример симулирует располагающийся обмен измерения для каждой пары STA-AP, затем trilaterates положение STA при помощи этих измерений. Пример повторяет эту симуляцию для нескольких итераций и точек ОСШ. Эта схема показывает процесс расположения в сети с одним STA и тремя APS.
Этот пример демонстрирует обмен измерения между STA и APS путем выполнения этих шагов.
Сгенерируйте располагающийся NDP
Задержите NDP согласно случайным образом сгенерированному расстоянию между STA и AP, добавив дробную и целочисленную демонстрационную задержку
Передайте форму волны через внутренний канал TGax. Модели в качестве примера различная реализация канала для различных пакетов
Добавьте аддитивный белый Гауссов шум (AWGN) в полученную форму волны. Пример использует то же значение ОСШ для всех ссылок между STA и APS
Выполните синхронизацию и коррекцию частоты на полученной форме волны
Демодулируйте HE-LTF
Оцените частотную характеристику канала от HE-LTF
Оцените расстояние при помощи алгоритма суперразрешения MUSIC
Объедините оценки расстояния от других пар STA-AP и trilaterate положение STA
Этот рисунок иллюстрирует обработку для каждой ссылки STA-AP.
Пример выполняет расстояние, располагающееся измерение между STA и каждым AP путем получения меток времени NDP. STA записывает время (UL ToD), в котором это передает восходящий NDP (АРИФМЕТИЧЕСКИЙ ПРОЦЕССОР UL). AP затем получает время (UL ToA), в котором это получает UL NDP и записывает время (DL ToD), в котором это передает нисходящий NDP (АРИФМЕТИЧЕСКИЙ ПРОЦЕССОР DL). STA затем получает время (DL ToA), в котором это получает DL NDP. Эта схема иллюстрирует звучащую фазу измерения между STA и одним AP [1].
Оценки в качестве примера время цикла обработки (RTT), путем объединения этих меток времени.
Пример затем вычисляет расстояние между STA и AP при помощи этого уравнения.
, где скорость света
Оценки в качестве примера и при помощи суперразрешения MUSIC. Чтобы вычислить эти оценки, пример выполняет эти шаги [3].
Интерполируйте через недостающие поднесущие из частотной характеристики канала (CFR), приняв универсальный интервал поднесущей
Оцените корреляционную матрицу CFR
Декоррелируйте мультипути при помощи пространственного сглаживания
Улучшите оценку корреляционной матрицы путем выполнения прямого обратного усреднения. Пример принимает, что оценки CFR от нескольких пространственных потоков являются различными снимками состояния CFR, и использует все снимки состояния для оценки корреляционной матрицы.
Запустите алгоритм MUSIC. Выполните eigendecomposition на корреляционной матрице, чтобы разделить его на и шумовые подпространства сигнала. Оцените профиль задержки временного интервала путем нахождения всех экземпляров, где и шумовые подпространства сигнала являются ортогональными. Пример принимает, что точная размерность подпространства сигнала, равная количеству мультипутей, известна.
Определите ToA путем нахождения первого пика восстановленных мультипутей в предполагаемом профиле задержки, принятом, чтобы быть путем к прямому углу обзора (DLOS)
Эта схема иллюстрирует процесс расположения расстояния.
Этот график сравнивает истинный многопутевой профиль задержки и MUSIC оцененный профиль задержки для сингла 802.11az симуляция ссылки.
heRangingPlotDelayProfile()
Этот пример выполняет расположение и расположение симуляции для нескольких итераций и точек ОСШ. В каждой итерации AP и STA обмениваются несколькими восходящими и нисходящими пакетами. Пример оценивает располагающуюся ошибку между AP и STA для каждой итерации путем сравнения предполагаемого расстояния между AP и STA с известным расстоянием.
Задайте количество итераций, точек ОСШ и APS в сетях. Чтобы оценить положение STA, сеть требует минимума трех APS. Для каждой итерации используйте различный случайный набор положений AP, различную реализацию канала и различный профиль AWGN. Пример генерирует кумулятивную функцию распределения (CDF) для абсолютной располагающейся ошибки при помощи располагающихся измерений от всех итераций и всех пар STA-AP.
numIterations = 50; % Number of iterations snrRange = 15:10:35; % SNR points, in dB numAPs = 3; % Number of APs
Сконфигурируйте генераторы формы волны для каждого AP и STA.
chanBW = 'CBW20'; % Channel bandwidth numTx = 2; % Number of transmit antennas numRx = 2; % Number of receive antennas numSTS = 2; % Number of space-time streams numLTFRepetitions = 3; % Number of HE-LTF repetitions
Сконфигурируйте HE, располагающийся параметры NDP STA.
cfgSTABase = heRangingConfig; cfgSTABase.ChannelBandwidth = chanBW; cfgSTABase.NumTransmitAntennas = numTx; cfgSTABase.SecureHELTF = true; cfgSTABase.User{1}.NumSpaceTimeStreams = numSTS; cfgSTABase.User{1}.NumHELTFRepetition = numLTFRepetitions; cfgSTABase.GuardInterval = 1.6;
Сконфигурируйте HE, располагающийся параметры NDP APS.
cfgAPBase = cell(1,numAPs); for iAP = 1:numAPs cfgAPBase{iAP} = heRangingConfig; cfgAPBase{iAP}.ChannelBandwidth = chanBW; cfgAPBase{iAP}.NumTransmitAntennas = numTx; cfgAPBase{iAP}.SecureHELTF = true; cfgAPBase{iAP}.User{1}.NumSpaceTimeStreams = numSTS; cfgAPBase{iAP}.User{1}.NumHELTFRepetition = numLTFRepetitions; cfgAPBase{iAP}.GuardInterval = 1.6; end ofdmInfo = wlanHEOFDMInfo('HE-LTF',chanBW,cfgSTABase.GuardInterval); sampleRate = heRangingSampleRate(cfgSTABase);
Сконфигурируйте WLAN TGax многопутевой канал при помощи wlanTGaxChannel
Система object™. Этот Системный объект может сгенерировать канал с доминирующим прямым путем, в котором путь DLOS является самым сильным путем или каналом с недоминирующим прямым путем, для которого путь DLOS присутствует, но не самый сильный путь.
delayProfile = 'Model-B'; % TGax channel multipath delay profile carrierFrequency = 5e9; % Carrier frequency, in Hz speedOfLight = physconst ('lightspeed'); chanBase = wlanTGaxChannel; chanBase.DelayProfile = delayProfile; chanBase.NumTransmitAntennas = numTx; chanBase.NumReceiveAntennas = numRx; chanBase.SampleRate = sampleRate; chanBase.CarrierFrequency = carrierFrequency; chanBase.ChannelBandwidth = chanBW; chanBase.PathGainsOutputPort = верный; chanBase.NormalizeChannelOutputs = ложь;
Получите задержку фильтра канала и количество путей
chBaseInfo = info(chanBase); chDelay = chBaseInfo.ChannelFilterDelay; numPaths = size(chBaseInfo.PathDelays,2);
Запустите располагающуюся симуляцию с несколькими итерациями для всех пар STA-AP. Отобразите располагающуюся среднюю абсолютную погрешность (MAE) и располагающуюся ошибку CDF для каждой точки ОСШ.
delayULDL = 16e-6; % Time delay between UL NDP ToA and DL NDP ToD, in seconds numSNR = numel(snrRange); distEst = zeros(numAPs,numIterations,numSNR); % Estimated distance distance = zeros(numAPs,numIterations,numSNR); % True distance positionSTA = zeros(2,numIterations,numSNR); % Two-dimensional position of the STA positionAP= zeros(2,numAPs,numIterations,numSNR); % Two-dimensional positions of the APs per = zeros(numSNR,1); % Packet error rate (PER) %parfor isnr = 1:numSNR % Use 'parfor' to speed up the simulation for isnr = 1:numSNR % Use a separate channel and waveform configuration object for each parfor stream chan = chanBase; cfgAP = cfgAPBase; cfgSTA = cfgSTABase; % Initialize ranging error and total failed packet count variables rangingError = 0; failedPackets = 0; % Set random substream index per iteration to ensure that each % iteration uses a repeatable set of random numbers stream = RandStream('combRecursive','Seed',123456); stream.Substream = isnr; RandStream.setGlobalStream(stream); % Define the SNR per active subcarrier to account for noise energy in nulls snrVal = snrRange(isnr) - 10*log10(ofdmInfo.FFTLength/ofdmInfo.NumTones); for iter = 1:numIterations % Gennerate random AP positions [positionSTA(:,iter,isnr),positionAP(:,:,iter,isnr),distanceAllAPs] = heGeneratePositions(numAPs); distance(:,iter,isnr) = distanceAllAPs; % Range-based delay delay = distance(:,iter,isnr)/speedOfLight; sampleDelay = delay*sampleRate; % Loop over the number of APs for ap = 1:numAPs linkType = ["Uplink","Downlink"]; % ToD of UL NDP (t1) todUL = randsrc(1,1,0:1e-9:1e-6); % Loop for both UL and DL transmission numLinks = numel(linkType); txTime = zeros(1,numLinks); for l = 1:numLinks if linkType(l) == "Uplink" % STA to AP cfgSTA.UplinkIndication = 1; % For UL % Generate a random secure HE-LTF sequence for the exchange cfgSTA.User{1}.SecureHELTFSequence = dec2hex(randsrc(1,10,(0:15)))'; cfg = cfgSTA; else % AP to STA % Generate a random secure HE-LTF sequence for the exchange cfgAP{ap}.User{1}.SecureHELTFSequence = dec2hex(randsrc(1,10,(0:15)))'; cfg = cfgAP{ap}; % For DL end % Set different channel for UL and DL, assuming that the channel is not reciprocal reset(chan) % Generate HE Ranging NDP transmission tx = heRangingWaveformGenerator(cfg); % Introduce time delay (fractional and integer) in the transmit waveform txDelay = heDelaySignal(tx,sampleDelay(ap)); % Pad signal and pass through multipath channel txMultipath = chan([txDelay;zeros(50,cfg.NumTransmitAntennas)]); % Pass waveform through AWGN channel rx = awgn(txMultipath,snrVal); % Perform synchronization and channel estimation [chanEstActiveSC,integerOffset] = heRangingSynchronize(rx,cfg); % Estimate the transmission time between UL and DL if ~isempty(chanEstActiveSC) % If packet detection is successful % Estimate fractional delay with MUSIC super-resolution fracDelay = heRangingTOAEstimate(chanEstActiveSC,ofdmInfo.ActiveFFTIndices, ... ofdmInfo.FFTLength,sampleRate,numPaths); integerOffset = integerOffset - chDelay; % Account for channel filter delay intDelay = integerOffset/sampleRate; % Estimate integer time delay txTime(l) = intDelay + fracDelay; % Transmission time else % If packet detection fails txTime(l) = NaN; end end if ~any(isnan(txTime)) % If packet detection succeeds % TOA of UL waveform (t2) toaUL = todUL + txTime(1); % Time of departure of DL waveform (t3) todDL = toaUL + delayULDL; % TOA DL waveform (t4) toaDL = todDL + txTime(2); % Compute the RTT rtt = (toaDL-todUL) - (todDL-toaUL); % Estimate the distance between the STA and AP distEst(ap,iter,isnr) = (rtt/2)*speedOfLight; % Accumulate error to MAE rangingError = rangingError + abs(distanceAllAPs(ap) - distEst(ap,iter,isnr)); else % If packet detection fails distEst(ap,iter,isnr) = NaN; failedPackets = failedPackets + 1; end end end mae = rangingError/((numAPs*numIterations) - failedPackets); % MAE for successful packets per(isnr) = failedPackets/(numAPs*numIterations); % PER if(per(isnr) > 0.01) % Use only successful packets for ranging and positioning warning('wlan:discardPacket','At SNR = %d dB, %d%% of packets were discarded',snrRange(isnr),100*per(isnr)); end disp(['At SNR = ',num2str(snrRange(isnr)),' dB, ','Ranging mean absolute error = ',num2str(mae), ' meters.']) end
At SNR = 15 dB, Ranging mean absolute error = 0.57082 meters. At SNR = 25 dB, Ranging mean absolute error = 0.40224 meters. At SNR = 35 dB, Ranging mean absolute error = 0.25439 meters.
% Reshape to consider all packets within one SNR point as one dataset rangingError = reshape(abs(distance - distEst),[numAPs*numIterations,numSNR]); hePlotErrorCDF(rangingError,snrRange) xlabel('Absolute ranging error (meters)') title('Ranging Error CDF')
Trilaterate местоположение STA в двух измерениях при помощи оценок расстояния, затем вычислите среднеквадратичную ошибку (RMSE) расположения для каждой итерации при помощи оценки положения STA. Отобразите средний RMSE и его CDF для каждой точки ОСШ.
positionSTAEst = zeros(2,numIterations,numSNR); RMSE = zeros(numIterations,numSNR); for isnr = 1:numSNR for i = 1:numIterations positionSTAEst(:,i,isnr) = hePositionEstimate(squeeze(positionAP(:,:,i,isnr)),squeeze(distEst(:,i,isnr))); end % Find the RMSE for each iteration, then take the mean of all RMSEs RMSE = reshape(sqrt(mean(((positionSTAEst-positionSTA).^2),1)),[numIterations numSNR]); posEr = mean(RMSE(:,isnr),'all','omitnan'); disp(['At SNR = ',num2str(snrRange(isnr)),' dB, ', 'Average RMS Positioning error = ', num2str(posEr), ' meters.']) end
At SNR = 15 dB, Average RMS Positioning error = 0.61713 meters. At SNR = 25 dB, Average RMS Positioning error = 0.40481 meters. At SNR = 35 dB, Average RMS Positioning error = 0.26968 meters.
hePlotErrorCDF(RMSE,snrRange) xlabel('RMS positioning error (meters)') title('Positioning Error CDF')
Постройте оценку местоположения и круги трилатерации последней итерации.
hePlotTrilaterationCircles(positionAP(:,:,numIterations,numSNR),positionSTAEst(:,numIterations,numSNR),distEst(:,numIterations,numSNR),snrRange(numSNR),numIterations);
В этом примере показано, как использовать алгоритм расположения со стандартом IEEE® 802.11az™. В частности, пример показывает, как оценить, что передача - получает расстояние между STA и AP при помощи суперразрешения MUSIC, и как определить местоположение STA в двух измерениях при помощи располагающихся измерений от нескольких пар STA-AP. Пример демонстрирует увеличение эффективности системы позиционирования в выше SNRs путем вычисления оценки расположения в нескольких точках ОСШ.
Помимо ОСШ, несколько важной эффективности расположения удара параметров, такой как повторения HE-LTF, количество пространственных потоков, более высокой пропускной способности и канала задерживают профили. Этот рисунок показывает удар повторений HE-LTF на располагающейся эффективности. Чтобы сгенерировать этот рисунок, запустите более длительную симуляцию с тремя случайным образом помещенными APS и 4 000 итераций для Модели-B 22 канала MIMO 20 МГц в ОСШ на 20 дБ. Рисунок показывает, что располагающаяся ошибка уменьшается с увеличением повторений HE-LTF. Это уменьшение происходит, потому что повторения HE-LTF эффективно уменьшают шум в CFR путем составления в среднем несколько оценок CFR.
Этот рисунок показывает удар различных настроек MIMO на располагающейся эффективности. Чтобы сгенерировать этот рисунок, запустите более длительную симуляцию с тремя случайным образом помещенными APS и 4 000 итераций, генерируя располагающиеся пакеты с тремя повторениями HE-LTF на уровне 20 МГц и задав B-канал Модели в ОСШ на 20 дБ. Рисунок показывает, что располагающаяся ошибка уменьшается с настройками MIMO высшего порядка. Это уменьшение происходит, потому что настройки MIMO высшего порядка производят больше снимков состояния CFR из различных пространственных доступных потоков. Больше снимков состояния CFR дает лучшую оценку корреляционной матрицы, которая дает к лучшему ToA и оценкам расстояния.
3D Внутреннее Расположение с 802.11az Снятие отпечатков пальцев и Глубокое обучение. Обучает сверточную нейронную сеть (CNN) локализации и располагающий при помощи Deep Learning Toolbox и данных о IEEE 802.11az, сгенерированных с WLAN Toolbox.
802.11az Генерация сигналов. Параметрирует и генерирует высокую эффективность (HE) IEEE 802.11az, располагающуюся формы волны пустого пакета данных (NDP), и подсвечивает некоторые ключевые возможности стандарта.
Черновой Стандарт IEEE P802.11az™/D2.0 для Информационных технологий — Телекоммуникаций и обмена информацией между системными Локальными сетями и городскими компьютерными сетями — Конкретными требованиями - Поправка 3: Улучшения для расположения.
Черновой Стандарт IEEE P802.11ax™/D4.1 для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретными требованиями - Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования - Поправка 6: Улучшения для Высокой эффективности WLAN.
Ксинронг Ли и К. Пэхлэвэн, "Суперразрешение оценка TOA с разнообразием для внутренней геолокации", в Транзакциях IEEE на Радиосвязях, издании 3, № 1, стр 224-234, январь 2004, doi: 10.1109/TWC.2003.819035.