В этом примере показано, как оценить положение станции (STA) в среде многолучевого распространения с помощью алгоритма позиционирования на основе времени прибытия (на основе ToA), определенного в стандарте IEEE ® 802.11az™ Wi-Fi™. Пример оценивает ToA, используя подход сверхразрешения с множественной классификацией сигналов (MUSIC), затем оценивает двумерное положение STA, используя трилатерацию. Затем в примере оценивается и сравнивается производительность алгоритма позиционирования в множестве точек отношения сигнал/шум (SNR).
Стандарт 802.11az [1], обычно называемый позиционированием следующего поколения (NGP), позволяет STA идентифицировать свое положение относительно нескольких точек доступа (AP). Этот стандарт поддерживает два формата протокольных блоков данных (PPDU) высокоэффективного (HE) диапазона физического уровня (PHY):
ТО с диапазоном нулевых пакетов данных (NDP)
Диапазон NDP на основе триггера HE (TB)
Диапазоны HE NDP и HE TB NDP являются соответствующими аналогами форматов NDP и NE TB обратной связи NDP PPDU, как определено в стандарте 802.11ax™. Для получения дополнительной информации об этих форматах HE PPDU см. [2].
NDP диапазона HE поддерживает позиционирование одного или нескольких пользователей с опциональной последовательностью безопасного длинного обучающего поля HE (HE-LTF). Однопользовательский сигнал диапазона HE содержит символы HE-LTF для одного пользователя, которые также поддерживают дополнительную безопасную последовательность HE-LTF. Многопользовательская дальномерная форма сигнала позволяет использовать только защищенные символы HE-LTF для нескольких пользователей. Для повышения точности оценки местоположения однопользовательские и многопользовательские формы сигналов могут содержать множество повторений символов HE-LTF. Чтобы параметризовать и генерировать NDP диапазона HE, см. пример создания формы сигнала 802.11az.
В этом примере моделируется сеть 802.11az, состоящая из STA и нескольких AP. Для оценки положения STA сети требуется не менее трех точек доступа. Пример моделирует обмен измерениями дальности для каждой пары STA-AP, затем трилатерирует положение STA, используя эти измерения. Пример повторяет это моделирование для нескольких итераций и точек SNR. На этой схеме показан процесс позиционирования в сети с одним STA и тремя AP.

В этом примере моделируется обмен измерениями между STA и AP путем выполнения этих шагов.
Создание диапазона NDP
Задержка NDP в соответствии с случайно сформированным расстоянием между STA и AP, добавление дробной и целочисленной задержки выборки
Прохождение сигнала через внутренний канал TGax. В примере моделируются различные реализации канала для различных пакетов.
Добавление аддитивного белого гауссова шума (AWGN) к принятой форме сигнала. В примере используется одинаковое значение SNR для всех линий связи между STA и AP.
Выполните синхронизацию и коррекцию частоты по принимаемому сигналу
Демодуляция HE-LTF
Оценка частотной характеристики канала от HE-LTF
Оценка расстояния с помощью алгоритма суперразрешения MUSIC
Объединение оценок расстояния от других пар STA-AP и трилатеризация положения STA
На этом рисунке показана обработка для каждого канала STA-AP.

В примере выполняется измерение расстояния между STA и каждой точкой доступа путем захвата временных меток NDP. STA записывает время (UL ToD), в которое он передает NDP восходящей линии связи (UL NDP). Затем точка доступа захватывает время (UL ToA), в которое она принимает NDP UL, и записывает время (DL ToD), в которое она передает NDP нисходящей линии связи (DL NDP). Затем STA захватывает время (DL ToA), в которое он принимает DL NDP. Эта диаграмма иллюстрирует фазу зондирования измерений между STA и одной точкой доступа [1].

В примере оценивается по времени прохождения в оба конца (RTT) путем комбинирования этих временных меток.
t3-t2)
В примере затем вычисляется расстояние между STA и AP с помощью этого уравнения.
TRTT2c, где - скорость света
Пример оценивает и с помощью суперразрешения MUSIC. Для вычисления этих оценок в примере выполняются следующие шаги [3].
Интерполяция по отсутствующим поднесущим из частотной характеристики канала (CFR), предполагающая равномерное расстояние между поднесущими
Оценка матрицы корреляции CFR
Декоррелировать многолучевые пути с помощью пространственного сглаживания
Улучшение оценки матрицы корреляции путем выполнения усреднения «вперед-назад». В примере предполагается, что оценки CFR из нескольких пространственных потоков являются различными снимками CFR и используют все снимки для оценки корреляционной матрицы.
Запустите алгоритм MUSIC. Выполните собственную компоновку на корреляционной матрице для разделения ее на подпространства сигнала и шума. Оцените профиль задержки во временной области, найдя все случаи, когда подпространства сигнала и шума ортогональны. В примере предполагается, что точная размерность подпространства сигнала, равная числу многолучевых путей, известна.
Определение ToA путем нахождения первого пика восстановленных многолучевых маршрутов в предполагаемом профиле задержки, предполагаемом трактом прямой видимости (DLOS)
Эта диаграмма иллюстрирует процесс ранжирования расстояний.

Этот график сравнивает истинный профиль задержки многолучевого распространения и предполагаемый профиль задержки MUSIC для моделирования одной линии связи 802.11az.
heRangingPlotDelayProfile()

В этом примере выполняется моделирование ранжирования и позиционирования для нескольких итераций и точек SNR. В каждой итерации AP и STA обмениваются множеством пакетов восходящей и нисходящей линии связи. Пример оценивает ошибку ранжирования между AP и STA для каждой итерации, сравнивая оцененное расстояние между AP и STA с известным расстоянием.
Укажите количество итераций, точек SNR и точек доступа в сетях. Для оценки положения STA сети требуется не менее трех AP. Для каждой итерации используйте различный случайный набор позиций AP, различную реализацию канала и различный профиль AWGN. В примере создается кумулятивная функция распределения (CDF) для ошибки абсолютного диапазона с использованием измерений диапазона из всех итераций и всех пар STA-AP.
numIterations =50; % Number of iterations snrRange =
15:10:35; % SNR points, in dB numAPs =
3; % Number of APs
Сконфигурируйте генераторы сигналов для каждой точки доступа и 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
Сконфигурируйте параметры NDP диапазона HE для 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;Сконфигурируйте параметры NDP диапазона HE точек доступа.
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™ системы. Этот объект System может генерировать канал с доминирующим прямым путем, в котором путь 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 = true; chanBase.NormalizeChannelOutputs = false;
Получение задержки канального фильтра и количества трактов
chBaseInfo = info(chanBase); chDelay = chBaseInfo.ChannelFilterDelay; numPaths = size(chBaseInfo.PathDelays,2);
Выполните моделирование диапазонов с несколькими итерациями для всех пар STA-AP. Отображение средней абсолютной ошибки (MAE) и ошибки диапазона CDF для каждой точки SNR.
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')

Трилатерируйте расположение STA в двух измерениях, используя оценки расстояния, затем вычислите ошибку позиционирования среднеквадратичного значения (RMSE) для каждой итерации, используя оценку положения STA. Отображение среднего значения RMSE и его CDF для каждой точки SNR.
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. Пример демонстрирует увеличение производительности системы позиционирования при более высоких ОСШ путем вычисления оценки позиционирования в множестве точек ОСШ.
Помимо SNR, несколько важных параметров влияют на характеристики позиционирования, такие как повторы HE-LTF, количество пространственных потоков, более высокие полосы пропускания и профили задержки канала. На этом рисунке показано влияние повторений HE-LTF на производительность диапазона. Чтобы создать этот рисунок, выполните более длинное моделирование с тремя случайно размещенными AP и 4000 итерациями для канала Model-B 2 × 2 MIMO 20 МГц при SNR 20 дБ. Рисунок показывает, что погрешность ранжирования уменьшается с увеличением повторений HE-LTF. Это уменьшение происходит потому, что повторы HE-LTF эффективно уменьшают шум в CFR путем усреднения нескольких оценок CFR.

На этом рисунке показано влияние различных конфигураций MIMO на производительность ранжирования. Чтобы создать этот рисунок, выполните более длинное моделирование с тремя случайно размещенными AP и 4000 итерациями, генерируя пакеты диапазона с тремя повторениями HE-LTF на 20 МГц и указывая канал Model-B на 20 дБ SNR. На рисунке показано, что ошибка ранжирования уменьшается в конфигурациях MIMO более высокого порядка. Это уменьшение происходит потому, что конфигурации MIMO более высокого порядка создают больше снимков CFR из различных доступных пространственных потоков. Большее количество снимков CFR дает лучшую оценку корреляционной матрицы, которая дает лучшие оценки ToA и расстояния.

Трехмерное позиционирование в помещении с использованием отпечатков пальцев 802.11az и глубоким обучением. Тренирует сверточную нейронную сеть (CNN) для локализации и позиционирования с помощью Deep Learning Toolbox и данных IEEE 802.11az, сгенерированных с помощью WLAN Toolbox.
Генерация сигналов 802.11az. Параметризует и генерирует сигналы IEEE 802.11az с высокой эффективностью (HE) в диапазоне нулевых пакетов данных (NDP) и выделяет некоторые из ключевых функций стандарта.
IEEE P802.11az™/D2.0 Проект стандарта для информационных технологий - Телекоммуникации и обмен информацией между системами Локальные и городские сети - Особые требования - Поправка 3: Усовершенствования для позиционирования.
IEEE P802.11ax™/D4.1 Проект стандарта для информационных технологий - Телекоммуникации и обмен информацией между системами - Локальные и городские сети - Особые требования - Часть 11: Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического уровня (PHY) - Поправка 6: Усовершенствования для высокой эффективности WLAN.
Синьжун Ли и К. Пехлаван, «Оценка TOA с суперразрешением для геолокации внутри помещений», в IEEE Transactions on Wireless Communications, том 3, № 1, стр. 224-234, январь 2004, doi: 10.1109/TWC.2003.819035.