802.11az располагающий Используя супервремя разрешения оценки прибытия

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

  1. Сгенерируйте располагающийся NDP

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

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

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

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

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

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

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

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

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

Расположение расстояния

Пример выполняет расстояние, располагающееся измерение между STA и каждым AP путем получения меток времени NDP. STA записывает время t1 (UL ToD), в котором это передает восходящий NDP (АРИФМЕТИЧЕСКИЙ ПРОЦЕССОР UL). AP затем получает время t2 (UL ToA), в котором это получает UL NDP и записывает время t3 (DL ToD), в котором это передает нисходящий NDP (АРИФМЕТИЧЕСКИЙ ПРОЦЕССОР DL). 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. Чтобы вычислить эти оценки, пример выполняет эти шаги [3].

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

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

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

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

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

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

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

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

heRangingPlotDelayProfile()

Figure contains an axes object. The axes object 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 с известным расстоянием.

Задайте количество итераций, точек ОСШ и 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

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

Сконфигурируйте 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 = wlanSampleRate(chanBW);

Настройка канала

Сконфигурируйте 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')

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

Трилатерация

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')

Figure contains an axes object. The axes object 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 object. The axes object 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. Пример демонстрирует увеличение эффективности системы позиционирования в выше SNRs путем вычисления оценки расположения в нескольких точках ОСШ.

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

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

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

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

Ссылки

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

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

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