exponenta event banner

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

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

  1. Создание диапазона NDP

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

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

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

  5. Выполните синхронизацию и коррекцию частоты по принимаемому сигналу

  6. Демодуляция HE-LTF

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

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

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

На этом рисунке показана обработка для каждого канала STA-AP.

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

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

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

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

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

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

Пример оценивает t2 и t4 с помощью суперразрешения MUSIC. Для вычисления этих оценок в примере выполняются следующие шаги [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.

Параметры моделирования

В этом примере выполняется моделирование ранжирования и позиционирования для нескольких итераций и точек 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

Конфигурация формы сигнала 802.11az

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

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 для каждой точки 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')

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

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

Помимо 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 и расстояния.

Связанные примеры

Ссылки

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

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

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