Позиционирование 802.11az с использованием времени суперразрешения оценки прибытия

Этот пример показывает, как оценить положение станции (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 путем выполнения этих шагов.

  1. Сгенерируйте диапазон NDP

  2. Задержка NDP согласно случайным образом сгенерированному расстоянию между STA и AP, добавляя дробную и целочисленную задержку выборки

  3. Передайте форму волны через внутренний канал TGax. Пример моделирует различные реализации канала для разных пакетов

  4. Добавьте добавку белого Гауссова шума (AWGN) к полученной форме волны. В примере используется одно и то же значение ОСШ для всех ссылок между STA и AP

  5. Выполните синхронизацию и коррекцию частоты на принятой форме волны

  6. Демодулируйте HE-LTF

  7. Оцените частотную характеристику канала от HE-LTF

  8. Оцените расстояние при помощи алгоритма суперразрешение

  9. Объедините оценки расстояния от других пар STA-AP и трилатризовайте положение STA

Этот рисунок иллюстрирует обработку для каждой ссылки STA-AP.

Диапазон расстояний

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

Оценки примера TRTTвремя туда и обратно время туда и обратно (RTT) путем объединения этих временных меток.

TRTT=(t4-t1)-(t3-t2)

Затем пример вычисляет расстояние d между STA и AP при помощи этого уравнения.

d=TRTT2c , где c - скорость света

Оценки примера t2 и t4 при помощи MUSIC super-resolution. Чтобы вычислить эти оценки, пример выполняет эти шаги [3].

  1. Интерполяция между отсутствующими поднесущими из частотной характеристики канала (CFR), принимая равномерное разнесение поднесущих

  2. Оцените матрицу корреляции CFR

  3. Декорируйте мультипути с помощью пространственного сглаживания

  4. Улучшите оценку корреляционной матрицы, выполнив прямое-обратное среднее. Пример принимает, что оценки CFR из нескольких пространственных потоков являются различными снимками CFR, и использует все снимки для оценки матрицы корреляции.

  5. Запустите алгоритм MUSIC. Выполните собственное разложение на матрице корреляции, чтобы разделить ее на сигнальные и шумовые подпространства. Оцените профиль задержки во временной области путем нахождения всех образцов, где подпространства сигнала и шума ортогональны. Пример принимает, что точная размерность подпространства сигнала, равная количеству мультипутей, известна.

  6. Определите ToA путем нахождения первого пика восстановленных мультипутей в предполагаемом профиле задержки, принятом как тракт прямой линии видимости (DLOS)

Эта схема иллюстрирует процесс диапазона расстояний.

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

heRangingPlotDelayProfile()

Figure contains an axes. The axes with title Delay profile (40 MHz, Model-B, 35 dB SNR, SISO) contains 3 objects of type stem, line. These objects represent True delay profile, MUSIC estimate, Estimated ToA.

Параметры симуляции

Этот пример выполняет симуляцию диапазона и положения для нескольких итераций и точек ОСШ. При каждой итерации 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

802.11az Форма волны Строения

Сконфигурируйте генераторы формы волны для каждой 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')

Figure contains an axes. The axes with title Ranging Error CDF contains 3 objects of type line. These objects represent SNR: 15 dB, SNR: 25 dB, SNR: 35 dB.

Trilateration

Трилатризовать местоположение 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')

Figure contains an axes. The axes with title Positioning Error CDF contains 3 objects of type line. These objects represent SNR: 15 dB, SNR: 25 dB, SNR: 35 dB.

Постройте график оценки местоположения и кругов трилатерации последней итерации.

hePlotTrilaterationCircles(positionAP(:,:,numIterations,numSNR),positionSTAEst(:,numIterations,numSNR),distEst(:,numIterations,numSNR),snrRange(numSNR),numIterations);

Figure contains an axes. The axes with title Node positions at SNR 35 dB for iteration #50 contains 6 objects of type line. These objects represent AP position, STA position, Estimated STA position, Trilateration circles.

Заключение

В этом примере показано, как использовать алгоритм позиционирования со стандартом IEEE ® 802.11az™. В частности, пример показывает, как оценить расстояние приема и передачи между STA и AP с помощью суперразрешение MUSIC, и как найти STA в двух размерностях с помощью диапазонных измерений от нескольких пар STA-AP. Пример демонстрирует увеличение эффективности системы позиционирования при более высоких ОСШ путем вычисления оценки позиционирования при нескольких точках ОСШ.

Дальнейшие исследования

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

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

Похожие примеры

Ссылки

  1. IEEE P802.11az™/D2.0 Проект стандарта на информационные технологии - Телекоммуникации и обмен информацией между системами Локальные и столичные сети - Особые требования - Поправка 3: Улучшения позиционирования.

  2. IEEE P802.11ax™/D4.1 Проект стандарта на информационные технологии - Телекоммуникации и обмен информацией между системами - Локальные и столичные сети - Особые требования - Часть 11: Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического Слоя (PHY) - Поправка 6: Усовершенствования для высокой Эффективности WLAN.

  3. Синьрун Ли и К. Пехлаван, «Суперразрешение с разнообразием для внутренней геолокации», в транзакциях IEEE по беспроводной связи, том 3, № 1, стр. 224-234, январь 2004, doi: 10.1109/TWC.2003.819035.