Этот пример показывает, как оценить положение станции (STA) в многолучевом окружении с помощью основанного на времени прибытия (на ToA) алгоритма позиционирования, заданного в стандарте IEEE ® 802.11az™ Wi-Fi™. Пример оценивает ToA с помощью подхода множественной классификации сигналов (MUSIC) с суперразрешением, затем оценивает двумерное положение STA с помощью трилатерации. Затем пример оценивает и сравнивает эффективность алгоритма позиционирования в нескольких точках отношения сигнал/шум (ОСШ).
Стандарт 802.11az [1], обычно называемый позиционированием следующей генерации (NGP), позволяет STA идентифицировать свое положение относительно нескольких точек доступа (AP). Этот стандарт поддерживает два высокоэффективных (HE) формата блока данных физического уровня (PHY) протокола (PPDU):
HE выделяет нулевой пакет данных (NDP)
Основанный на триггерах (ТБ) диапазон NDP
Диапазон HE NDP и HE TB ranging NDP являются соответствующими аналогами зондирования HE ndp и обратной связи HE TB форматов PDP, как определено в 802.11ax™ стандарте. Для получения дополнительной информации об этих форматах HE PPDU см. раздел [2].
NDP диапазона HE поддерживает позиционирование одного или нескольких пользователей с опциональной последовательностью безопасного HE длинного поля обучения (HE-LTF). Линейный сигнал HE с одним пользователем содержит символы HE-LTF для одного пользователя, которые также поддерживают необязательную защищенную последовательность HE-LTF. Многопользовательская форма волны диапазона HE позволяет только безопасные символы HE-LTF для многих пользователей. Чтобы улучшить точность оценки положения, однопользовательская и многопользовательская формы волны могут содержать несколько повторений символов HE-LTF. Для параметризации и генерации диапазонных NDP HE, смотрите пример генерации сигналов 802.11az.
В этом примере моделируется сеть 802.11az, состоящая из STA и нескольких AP. Для оценки положения STA сети требуется минимум три AP. Пример моделирует обмен измерениями диапазона для каждой пары STA-AP, затем трилатеризует положение STA с помощью этих измерений. Пример повторяет эту симуляцию для нескольких итераций и точек ОСШ. Эта схема показывает процесс позиционирования в сети с одной STA и тремя AP.
Этот пример моделирует обмен измерениями между STA и AP путем выполнения этих шагов.
Сгенерируйте диапазон NDP
Задержка NDP согласно случайным образом сгенерированному расстоянию между STA и AP, добавляя дробную и целочисленную задержку выборки
Передайте форму волны через внутренний канал TGax. Пример моделирует различные реализации канала для разных пакетов
Добавьте добавку белого Гауссова шума (AWGN) к полученной форме волны. В примере используется одно и то же значение ОСШ для всех ссылок между STA и AP
Выполните синхронизацию и коррекцию частоты на принятой форме волны
Демодулируйте HE-LTF
Оцените частотную характеристику канала от HE-LTF
Оцените расстояние при помощи алгоритма суперразрешение
Объедините оценки расстояния от других пар STA-AP и трилатризовайте положение STA
Этот рисунок иллюстрирует обработку для каждой ссылки STA-AP.
Пример выполняет измерение диапазона расстояний между STA и каждой AP путем захвата временных меток NDP. STA регистрирует время (UL ToD), в котором он передает NDP восходящей линии связи (UL NDP). Затем AP захватывает время (UL ToA), в котором он получает UL NDP и записывает время (DL ToD), в котором он передает nowlink NDP (DL NDP). Затем STA захватывает время (DL ToA), в котором он получает DL NDP. Эта схема иллюстрирует фазу зондирования измерения между STA и одной AP [1].
Оценки примера время туда и обратно (RTT) путем объединения этих временных меток.
Затем пример вычисляет расстояние между STA и AP при помощи этого уравнения.
, где - скорость света
Оценки примера и при помощи MUSIC super-resolution. Чтобы вычислить эти оценки, пример выполняет эти шаги [3].
Интерполяция между отсутствующими поднесущими из частотной характеристики канала (CFR), принимая равномерное разнесение поднесущих
Оцените матрицу корреляции CFR
Декорируйте мультипути с помощью пространственного сглаживания
Улучшите оценку корреляционной матрицы, выполнив прямое-обратное среднее. Пример принимает, что оценки CFR из нескольких пространственных потоков являются различными снимками CFR, и использует все снимки для оценки матрицы корреляции.
Запустите алгоритм MUSIC. Выполните собственное разложение на матрице корреляции, чтобы разделить ее на сигнальные и шумовые подпространства. Оцените профиль задержки во временной области путем нахождения всех образцов, где подпространства сигнала и шума ортогональны. Пример принимает, что точная размерность подпространства сигнала, равная количеству мультипутей, известна.
Определите ToA путем нахождения первого пика восстановленных мультипутей в предполагаемом профиле задержки, принятом как тракт прямой линии видимости (DLOS)
Эта схема иллюстрирует процесс диапазона расстояний.
Этот график сравнивает истинный профиль многолучевой задержки и предполагаемый профиль задержки MUSIC для одной симуляции ссылки 802.11az.
heRangingPlotDelayProfile()
Этот пример выполняет симуляцию диапазона и положения для нескольких итераций и точек ОСШ. При каждой итерации AP и STA обмениваются несколькими пакетами восходящей и нисходящей линий связи. Пример оценивает ошибку диапазона между AP и STA для каждой итерации путем сравнения оцененного расстояния между AP и STA с известным расстоянием.
Задайте количество итераций, точек ОСШ и точек доступа в сетях. Для оценки положения 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
Сконфигурируйте генераторы формы волны для каждой 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
Сконфигурируйте параметры 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™. Этот Системный объект может сгенерировать канал с доминирующим прямым путем, в котором DLOS-путь является самым сильным путем, или канал с не доминирующим прямым путем, для которого DLOS-путь присутствует, но не самый сильный путь.
delayProfile = 'Model-B'; % TGax channel multipath delay profile carrierFrequency = 5e9; % Carrier frequency, in Hz speedOfLight = физконст ('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 для каждой точки ОСШ.
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 для каждой точки ОСШ.
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. Пример демонстрирует увеличение эффективности системы позиционирования при более высоких ОСШ путем вычисления оценки позиционирования при нескольких точках ОСШ.
Помимо ОСШ, несколько важных параметров влияют на эффективность позиционирования, такие как повторы HE-LTF, количество пространственных потоков, более высокие полосы пропускания и профили задержки канала. Этот рисунок показывает влияние повторов HE-LTF на эффективность в диапазоне. Чтобы сгенерировать этот рисунок, запустите более длительную симуляцию с тремя случайным образом размещенными AP и 4000 итерациями для Модели-B 22 MIMO канал 20 МГц при 20 дБ ОСШ. Рисунок показывает, что ошибка диапазона уменьшается с увеличением повторений HE-LTF. Это уменьшение происходит, потому что повторы HE-LTF эффективно уменьшают шум в CFR путем усреднения нескольких оценок CFR.
Этот рисунок показывает влияние различных строений MIMO на эффективность распределения. Чтобы сгенерировать этот рисунок, запустите более длительную симуляцию с тремя случайным образом размещенными AP и 4000 итерациями, сгенерируя пакеты с тремя повторениями HE-LTF на 20 МГц и задавая канал Model-B на 20 дБ ОСШ. Рисунок показывает, что ошибка диапазона уменьшается при строениях MIMO более высокого порядка. Это уменьшение происходит, потому что строения MIMO более высокого порядка производят больше снимков CFR из различных доступных пространственных потоков. Больше снимков CFR дают лучшую оценку матрицы корреляции, которая дает лучшие оценки ToA и расстояния.
Трехмерное внутреннее позиционирование с отпечатками пальцев 802.11az и глубоким обучением. Обучает сверточную нейронную сеть (CNN) для локализации и позиционирования с помощью данных Deep Learning Toolbox и IEEE 802.11az, сгенерированных WLAN Toolbox.
Генерация сигналов 802.11az. Параметризация и генерация высокоэффективных (HE) сигналов null данных пакета (NDP) IEEE 802.11az и подсветка некоторых ключевых возможностей стандарта.
IEEE P802.11az™/D2.0 Проект стандарта на информационные технологии - Телекоммуникации и обмен информацией между системами Локальные и столичные сети - Особые требования - Поправка 3: Улучшения позиционирования.
IEEE P802.11ax™/D4.1 Проект стандарта на информационные технологии - Телекоммуникации и обмен информацией между системами - Локальные и столичные сети - Особые требования - Часть 11: Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического Слоя (PHY) - Поправка 6: Усовершенствования для высокой Эффективности WLAN.
Синьрун Ли и К. Пехлаван, «Суперразрешение с разнообразием для внутренней геолокации», в транзакциях IEEE по беспроводной связи, том 3, № 1, стр. 224-234, январь 2004, doi: 10.1109/TWC.2003.819035.