В этом примере показано, как вычислить, положение станции (STA) в сети IEEE® 802.11az™ Wi-Fi™ использование расположения времени прибытия (TOA) приближаются в сочетании с методом трилатерации. Пример измеряет точность позиционирования относительно отношения сигнал-шум (SNR) путем вычисления расстояния между предполагаемым и фактическими положениями STA в канале аддитивного белого Гауссова шума (AWGN).
Появление 802.11az стандарт [1], обычно называемый расположением следующего поколения (NGP), позволяет STA идентифицировать свое положение относительно другого STAs. Этот стандарт поддерживает две высокой эффективности (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. Чтобы параметрировать и сгенерировать 802.11az HE, располагающийся АРИФМЕТИЧЕСКИЕ ПРОЦЕССОРЫ, смотрите 802.11az Генерация сигналов.
Этот пример симулирует 802.11az сеть, состоящая из STA и нескольких точек доступа (APS). Чтобы оценить положение STA, сеть требует минимума трех APS. Пример демонстрирует располагающийся обмен измерения между STA и каждым AP:
Генерация HE, располагающегося NDP
Добавление задержки с учетом распространения по расстоянию
Добавление AWGN к переданному NDP, чтобы создать желаемый ОСШ
Выполнение синхронизации и оценки канала в приемнике и,
Вычисление времени цикла обработки (RTT) от фазы переключает оценки канала частотного диапазона на нижний регистр
Оцените положение STA путем выполнения метода трилатерации с помощью расстояний, выведенных из RTT. В каждой точке ОСШ определите среднюю точность положения путем сравнения предполагаемого положения STA к его фактической позиции по нескольким итерациям. ОСШ является тем же самым для всех каналов между STA и AP.
Эта схема иллюстрирует сеть с STA и несколькими AP.
802.11az сеть Wi-Fi
В этом примере STA действует как инициирующая станция (ISTA) и действие APS как станции назначения (RSTA). Между APS (RSTAs) и STA (ISTA), неТбайт, располагающийся, последовательность обмена измерения происходит в двух фазах:
Звучащая фаза измерения
Фаза создания отчетов измерения
STA и AP обмениваются располагающимся объявлением NDP (NDPA) система координат и HE, располагающийся, NDP структурирует (I2R/R2I NDP) во время звучащей фазы измерения и системы координат отчета измерения местоположения (LMR) во время фазы создания отчетов измерения, показанной в этом рисунке.
НеТбайт, располагающийся измерение, обменивается последовательностью
Этот пример симулирует звучащий обмен измерения между APS и STA, чтобы оценить положение STA.
STA и APS выполняют измерения TOA путем получения меток времени NDP. STA записывает время (t1), в котором передается восходящий NDP (UL NDP). AP затем получает время (t2), в котором UL NDP прибывает и записывает время (t3), в котором передается нисходящий NDP (DL NDP). STA наконец получает время (t4), в который прибывает DL NDP.
RTT задан как:
RTT = (t4 – t1) – (t3 – t2)
Эта схема иллюстрирует звучащую фазу измерения между STA и одним AP.
Синхронизация схемы фазы Measurement Sounding в Расположении неТбайта
В этом примере, чтобы вычислить RTT, используют основанную на фазе-сдвигом синхронизацию оценки tp2 и tp4 вместо меток времени базирующийся TOAs, t2 и t4. Определите tp2 и tp4 от наклона фазы оценок канала частотного диапазона соответствующего NDP.
Фаза основанный на сдвигах RTT задана как:
RTT = (t4 – t1) – (t3 – t2’’), с t2’’ = tp2 – (tp4 – t4)
Вычислите расстояние между STA и каждым AP от RTT как:
расстояние = RTT*c/2, где c является скоростью света
Используйте метод трилатерации, чтобы оценить положение STA от предполагаемых расстояний и известное положение APS.
Задайте количество APS в сети. Чтобы оценить положение STA, сеть требует минимума трех APS.
numAPs = 3; % Number of APs, must be >=3
Укажите диапазон ОСШ и количество итераций, чтобы симулировать каждую точку ОСШ.
snr = 5:2:15; % SNR (dB) numIterations = 100; % Number of iterations to average the position error
Чтобы сконфигурировать HE, располагающийся параметры NDP, соответствующие APS и STA, используйте heRangingConfig
объект.
chanBW = 'CBW20'; % Channel bandwidth numTx = 1; % Number of transmit antennas numSTS = 1; % Number of space-time streams numLTFRepetitions = 2; % Number of LTF repetitions % Configure the HE ranging NDP parameters of the STA cfgSTA = heRangingConfig; cfgSTA.ChannelBandwidth = chanBW; cfgSTA.NumTransmitAntennas = numTx; cfgSTA.SecureHELTF = верный; cfgSTA.User {1}.NumSpaceTimeStreams = numSTS; cfgSTA.User {1}.NumHELTFRepetition = numLTFRepetitions; cfgSTA.GuardInterval = 1.6; % Configure the HE ranging NDP parameters of the APs cfgAP = ячейка (1, numAPs); for iAP = 1:numAPs cfgAP {iAP} = heRangingConfig; cfgAP {iAP}.ChannelBandwidth = chanBW; cfgAP {iAP}.NumTransmitAntennas = numTx; cfgAP {iAP}.SecureHELTF = верный; cfgAP {iAP}.User {1}.NumSpaceTimeStreams = numSTS; cfgAP {iAP}.User {1}.NumHELTFRepetition = numLTFRepetitions; cfgAP {iAP}.GuardInterval = 1.6; end
Этот пример оценивает положение STA от располагающегося обмена измерения между STA и APS путем выполнения этих шагов:
Расположите STA в начале координат и numAPs
APS случайным образом в xy-плоскости.
Оцените расстояние путем моделирования обмена измерения для каждого STA-AP и ссылки AP-STA: Сгенерируйте располагающийся NDP и задержите NDP согласно расстоянию и добавьте AWGN. Выполните синхронизацию на полученной форме волны и оцените канал. Вычислите время передачи из оценок канала.
Вычислите RTT со времен передачи и оцените расстояние между STA и каждым AP.
Оцените положение STA путем выполнения трилатерации с помощью предполагаемых расстояний.
Повторите вышеупомянутый процесс для numIteration
времена со случайными положениями AP в области значений точек ОСШ.
Этот рисунок иллюстрирует обработку для каждой ссылки между STA и AP.
Рабочий процесс в качестве примера
% Validate the simulation parameters if numAPs<3 error('Number of APs must be greater than or equals to 3'); end if numIterations<=0 error('Number of iterations must be a positive integer scalar'); end % Define constants speedOfLight = physconst('lightspeed'); % Speed of light (m/s) subcarrierSpacing = 78.125e3; % Subcarrier spacing (Hz) carrierFrequency = 5e9; % Carrier frequency (Hz) if carrierFrequency == 5e9 delayULDL = 16e-6; % Time gap (tDelay) between UL NDP TOA and DL NDP TOD (sec) elseif carrierFrequency == 2.4e9 delayULDL = 8e-6; end % Get sample rate sampleRate = heRangingSampleRate(cfgSTA); % Get occupied subcarrier indices and OFDM parameters ofdmInfo = wlanHEOFDMInfo('HE-LTF',chanBW,cfgSTA.GuardInterval); % Initialize average position error numSNR = numel(snr); % Number of SNR points avgPositionError = zeros(1,numSNR); for isnr = 1:numSNR % Loop over SNR range % Set random substream index to ensure that each iteration uses a % repeatable set of random numbers stream = RandStream('combRecursive','Seed',123456); stream.Substream = isnr; RandStream.setGlobalStream(stream); % Loop over number of iterations to average the positioning error. For % each iteration, generate random positions for the STA and APs and model % ranging measurement exchange between each AP and STA. positionError = 0; linkFailCount = 0; for iter = 1:numIterations % Randomly place the STA and APs in the xy-plane [positionSTA, positionAP, distance] = heGeneratePositions(numAPs); % Range-based delay delay = distance/speedOfLight; sampleDelay = delay*sampleRate; % Loop over the number of APs distEst = zeros(1,numAPs); % Estimate distance for ap = 1:numAPs linkType = ["Uplink", "Downlink"]; % Time of departure 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 % HE Ranging NDP transmission tx = heRangingWaveformGenerator(cfg); % Introduce time delay in the transmit waveform txDelay = heDelaySignal(tx,sampleDelay(ap)); % Add both integer and fractional delay % Pass the waveform through AWGN channel % Account for noise energy in nulls so the SNR is defined % per active subcarrier and per transmit antenna rx = awgn(txDelay,snr(isnr)-10*log10(ofdmInfo.FFTLength/(numTx*ofdmInfo.NumTones))); % Perform synchronization by assuming that the transmit % side secure HE-LTF sequence is known at the receiver [chanEst, integerOffset] = heRangingSynchronize(rx,cfg); % Estimate the transmission time between UL and DL if ~isempty(chanEst) % If packet detection is successful diffAngleChan = diff(unwrap(angle(chanEst))) ; fracDelay = -mean(diffAngleChan(:))/(2*pi*subcarrierSpacing); % Estimate fractional time delay intDelay = integerOffset/sampleRate; % Estimate integer time delay txTime(l) = intDelay + fracDelay; % Transmission time rangeEstFlag = 1; % If packet detection is successful, enable the range estimation flag else rangeEstFlag = 0; % If packet detection fails, disable the range estimation flag break; end end if rangeEstFlag % If packet detection is successful % 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) = (rtt/2)*speedOfLight; else break; % If packet detection fails, discard the link between STA and AP end end % If range estimation flag is enabled, then estimate the STA % position using trilateration and compute the position error. if rangeEstFlag positionSTAEst = hePositionEstimate(positionAP,distEst); positionError = positionError + sqrt(sum((positionSTAEst - positionSTA).^2)); else positionSTAEst = NaN; linkFailCount = linkFailCount + 1; % Count the failed links used to average the position error end end if linkFailCount == numIterations % If all the links fail at a given SNR value disp(['At SNR = ',num2str(snr(isnr)),' dB, ', 'all ranging NDP packet transmissions failed']) else avgPositionError(isnr) = positionError/(numIterations-linkFailCount); disp(['At SNR = ',num2str(snr(isnr)),' dB, ', 'Positioning error in meters = ', num2str(avgPositionError(isnr))]) end end
At SNR = 5 dB, Positioning error in meters = 1.4137 At SNR = 7 dB, Positioning error in meters = 0.77532 At SNR = 9 dB, Positioning error in meters = 0.63 At SNR = 11 dB, Positioning error in meters = 0.51577 At SNR = 13 dB, Positioning error in meters = 0.42353 At SNR = 15 dB, Positioning error in meters = 0.37412
При расположении пакетные передачи NDP успешны, этот раздел генерирует эти графики:
График № 1: Постройте STA, оцененный STA и положения APS в xy-плоскости с кругами трилатерации для последнего значения ОСШ и для последней итерации.
График № 2: Постройте среднюю ошибку положения (метры) против ОСШ (дБ).
if ~isnan(positionSTAEst) % Plot the position of APs and STA heRangingPlotPositions(positionAP,positionSTAEst,distEst,snr(isnr),iter); end
% Plot the position error (meters) against SNR (dB) figure semilogy(snr,avgPositionError,'-b*','LineWidth',2,... 'MarkerEdgeColor','b',... 'MarkerSize',10) hold on; grid on xlabel('SNR (dB)') ylabel('Estimated position error (meters)') title('Position accuracy in an 802.11az network')
Этот пример выполняет HE, располагающийся обмен измерения NDP между APS и STA, чтобы оценить положение STA с помощью трилатерации. Пример также измеряет точность позиционирования, связанную с ОСШ путем вычисления расстояния между предполагаемыми и фактическими положениями STA в канале AWGN. Чтобы параметрировать и сгенерировать 802.11az HE, располагающийся АРИФМЕТИЧЕСКИЕ ПРОЦЕССОРЫ, смотрите 802.11az Генерация сигналов.
Чтобы получить значимую среднюю ошибку положения, увеличьте число итераций numIterations
в каждой точке ОСШ. Чтобы визуализировать удар на точность положения, можно также увеличить число повторений LTF, numLTFRepetitions
и в STA и в AP. Этот рисунок сгенерирован путем выполнения более длительной симуляции с тремя APS, 1 000 итераций для пропускной способности канала 20 МГц и области значений значений ОСШ, 7:2:21. Этот график показывает, что предполагаемая ошибка положения уменьшается с увеличением повторений LTF.
Черновой Стандарт IEEE P802.11az™/D2.0 для Информационных технологий — Телекоммуникаций и обмена информацией между системными Локальными сетями и городскими компьютерными сетями — Конкретными требованиями - Поправка 3: Улучшения для расположения.
Черновой Стандарт IEEE P802.11ax™/D4.1 для Информационных технологий - Телекоммуникаций и обмена информацией между системами - Локальными сетями и городскими компьютерными сетями - Конкретными требованиями - Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования - Поправка 6: Улучшения для Высокой эффективности WLAN.