このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
IEEE 802.15.4z を使用した UWB 位置推定
この例では、Communications Toolbox™ を使用して、IEEE® 802.15.4z™ 規格 [2] に従って単一デバイスの位置を推定する方法を説明します。
概要
IEEE® 802.15.4 規格 [ 1 ] の IEEE 802.15.4z 修正規格 [ 2 ] は、超広帯域 (UWB) 通信を使用した測距および位置推定のために設計された MAC と PHY の仕様です。UWB のパルス存続時間は非常に短いため、時間領域での粒度が細かくなり、空間領域での推定がより正確になります。
802.15.4z 修正規格の測距および位置推定の主要な機能は、次の 3 つの MAC レベルの手法を含みます。
片側双方向測距 (SS-TWR) - 片方のデバイスが無線 802.15.4z リンクの双方向フレーム送信を使用して、2 つのデバイス間の距離を推定します。この手法は、IEEE 802.15.4z を使用した UWB 測距の例で説明されています。
両側双方向測距 (DS-TWR) - 両方のデバイスが無線 802.15.4z リンクの双方向フレーム送信を使用して、2 つのデバイス間の距離を推定します。
単方向測距/到着時間差 (OWR/TDOA) - 1 つのデバイスが同期されたノードのセットと通信してデバイスの位置を推定するネットワーク支援型位置推定です。
この例では、IEEE 802.15.4 規格 [ 1 ] および IEEE 802.15.4z 修正規格 [ 2 ] と互換性のある MAC フレームと PHY フレームを使用して、アップリンク伝送用の OWR/TDOA 手法を示します。PHY レベルの IEEE 802.15.4z 波形生成の詳細については、HRP UWB IEEE 802.15.4a/z の波形生成の例を参照してください。IEEE 802.15.4 MAC フレームの生成の詳細については、IEEE 802.15.4 - MAC フレームの生成および復号化の例を参照してください。
単方向測距/到達時間差 (OWR/TDOA)
単方向測距 (OWR) には、アップリンクまたはダウンリンク方向でのフレーム送信が含まれます。アップリンクでは、位置推定されるデバイスが、"ブリンク" と呼ばれる短いメッセージを定期的にブロードキャストします。IEEE 802.15.4z 修正規格 [ 2 ] では、ブリンクについて特定のフレーム形式を規定していませんが、ブリンクはできるだけ短くする必要があると述べています。これらのブリンク メッセージは、有線バックボーンまたは UWB 無線通信リンク経由で同期される一連のインフラストラクチャ ノードによって受信されます。ダウンリンクでは、同期されたノードが、既知の時間オフセットでブロードキャスト メッセージを定期的に送信します。
周期的メッセージ間での到達時間差 (TDOA) により、デバイスは同期ノードのペアごとに 1 つの双曲面に配置されます [ 3 ]。すべての双曲面の交差 (同期されたノードのすべてのペア) は、デバイスの位置推定を示します。
この例では、アップリンク OWR のケースを示します。
設定
ネットワークの構成
100×100 プレーンで、3 つの同期ノードと 1 つのデバイスを使用してネットワークを設定します。
numNodes = 3;
deviceLoc = [50 50]; % place device at the center
nodeLoc = [40 41;
62 83;
87 24];
TDOA = nan(numNodes);
helperShowLocations(deviceLoc,nodeLoc);
ノードとデバイスの間の実際の距離と飛行時間 (TOF) を計算します。
actualDistances = sqrt(sum((nodeLoc - deviceLoc).^2, 2)); c = physconst('LightSpeed'); % speed of light (m/s) actualTOF = actualDistances/c; SNR = 30; % in dB
ブリンクの構成
短い (IEEE 802.15.4 MAC) データ フレームをブリンクとして使用します。
numBlinks = 1; % MAC layer: payload = '00'; cfg = lrwpan.MACFrameConfig( ... FrameType='Data', ... SourceAddressing='Short address', ... SourcePANIdentifier='AB12', ... SourceAddress='CD77'); blinkMAC = lrwpan.MACFrameGenerator(cfg,payload); % PHY layer: % Ensure the Ranging field is enabled. % Also set the proper PSDU length. blinkPHYConfig = lrwpanHRPConfig( ... Mode='HPRF', ... STSPacketConfiguration=1, ... PSDULength=length(blinkMAC)/8, ... Ranging=true); blinkPHY = lrwpanWaveformGenerator( ... blinkMAC, ... blinkPHYConfig); % Cache preamble, to use in preamble detection. % Get the 1st instance out of the Nsync=PreambleDuration repetitions. indices = lrwpanHRPFieldIndices(blinkPHYConfig); % length (start/end) of each field blinkPreamble = blinkPHY( ... 1:indices.SYNC(end)/blinkPHYConfig.PreambleDuration); % 1 of the Nsync repetitions
シミュレーションの実行
シミュレーション ループでは、ブリンクが各ノードに伝播されます。伝播遅延は、ノード間の距離によって決まります。次に、ノードの各ペアが、ブリンクの到着時間の差を計算します。その結果、デバイスの位置が、ノードの各ペアの双曲面内で推定されます。すべての表面の交差は、デバイスの位置推定を示します。ここでは、2 次元曲線のプロットが、デバイスの推定位置を示す交点を示しています。
vfd = dsp.VariableFractionalDelay; arrivalTime = zeros(1,numNodes); plotStr = {'r--','b--','g--'}; [x, y] = deal(cell(1, 3)); for idx = 1:numBlinks for node = 1:numNodes % Transmission and reception of blink % Each node receives a specifically delayed version of the blink tof = actualTOF(node); samplesToDelay = tof * blinkPHYConfig.SampleRate; reset(vfd); release(vfd); vfd.MaximumDelay = ceil(1.1*samplesToDelay); delayedBlink = vfd( ... [blinkPHY; zeros(ceil(samplesToDelay), 1)], ... samplesToDelay); % Add white Gaussian noise receivedBlink = awgn(delayedBlink,SNR); % Node receiver detection of preamble preamPos = helperFindFirstHRPPreamble( ... receivedBlink,blinkPreamble,blinkPHYConfig); % Transmit each blink at t=0 of each period. The blink arrives % at different instances at each node, due to their dissimilar % distance to the device. arrivalTime(node) = ( ... preamPos - indices.SYNC(end) / ... blinkPHYConfig.PreambleDuration)/blinkPHYConfig.SampleRate; end % Localization: Estimate position at the synchronized backbone for % each pair of nodes. pairCnt = 1; for node1 = 1:numNodes for node2 = (node1+1):numNodes % Calculate Time Difference of Arrival (TDOA) TDOA(node1, node2) = arrivalTime(node1)-arrivalTime(node2); % Get hyperbolic surface for the TDOA between node1 and node2 [x{pairCnt}, y{pairCnt}] = helperGetHyperbolicSurface( ... nodeLoc(node1,:), ... nodeLoc(node2,:), ... TDOA(node1,node2)); plot(x{pairCnt},y{pairCnt},plotStr{pairCnt}); pairCnt = pairCnt + 1; end end % Find intersection points between hyperbolic surfaces [xC,yC] = helperFindHyperbolicIntersection(x,y); % Estimate location as the center of intersection triangle xO = mean(xC, 2); yO = mean(yC, 2); plot(xO, yO, 'ro') plot(xC',yC','rx') end leg = legend( ... 'Device', ... 'Synchronized nodes', ... 'A-B', ... 'A-C', ... 'B-C', ... 'Estimation', ... 'Intersections', ... 'location','northwest');
推定領域にズームインします。
zoomInToEstimationArea(deviceLoc,xC,yC,xO,yO,leg);
IEEE 802.15.4z 位置推定アルゴリズムでは、2 つの双曲面間での複数の交点が許容されるため、1 つか 2 つの位置推定の解が存在することが考えられます。それぞれの解について、位置推定誤差を計算します。
for idx = 1:numel(xO) locError = sqrt(sum([xO(idx) yO(idx)]-deviceLoc).^2); fprintf('Localization error #%d = %0.3f m.\n',idx,locError); end
Localization error #1 = 0.044 m.
到着時間の推定に依存する位置推定方法の場合、距離推定の誤差は主に、到着時間がサンプル時間の整数倍でないことによるものです。この種の位置推定方法では、到着時間がサンプル時間の整数倍よりもサンプル時間の半分を超えて続くときに距離誤差が最大になります。到着時間がサンプル時間の整数倍であるときは距離誤差が最小になります。この例で使用されている高レート パルス繰り返し周波数 (HRP) PHY の高パルス繰り返し周波数 (HRPF) モードでは、シンボル レートが 499.2 MHz、シンボルあたりのサンプル数が 10 です。距離推定の最大誤差は で、約 3 cm になります。
一般に、UWB のチャネル帯域幅が大きいほど、狭帯域通信と比較してシンボル区間が短くなり、測距誤差が小さくなります。IEEE 802.11az で規定されている狭帯域通信では、チャネル帯域幅が 20 MHz ~ 160 MHz の範囲になります。狭帯域通信の最大距離誤差を考慮すると、位置推定誤差の推定値は、160 MHz で 0 ~ 10 cm、20 MHz で 0 ~ 75 cm になります。IEEE 802.11az での測位の詳細については、802.11az Positioning Using Super-Resolution Time of Arrival Estimation (WLAN Toolbox)の例を参照してください。
その他の調査
この例では、以下のオブジェクトと関数を使用します。
lrwpanHRPConfig
:HRP 波形の構成lrwpanWaveformGenerator
:IEEE 802.15.4a/z HRP UWB 波形の作成lrwpan.MACFrameConfig: 802.15.4 MAC フレーム用の構成の作成
lrwpan.MACFrameGenerator: 802.15.4 MAC フレームの生成
ドキュメンテーションにないユーティリティの API と機能は、将来変更される可能性があります。ドキュメンテーションにないユーティリティのソース コードを表示するには、関数edit
を使用します。
function zoomInToEstimationArea(deviceLoc,xC,yC,xO,yO,leg) % Zoom 2D plane into region around device location allX = [deviceLoc(1); xO(:); xC(:)]; allY = [deviceLoc(2); yO(:); yC(:)]; minX = min(allX); maxX = max(allX); minY = min(allY); maxY = max(allY); axis([ ... minX-0.1*(maxX-minX), ... maxX+0.1*(maxX-minX), ... minY-0.1*(maxY-minY), ... maxY+0.1*(maxY-minY)]) leg.Location = 'NorthEast'; end
参考文献
1 - "IEEE Standard for Low-Rate Wireless Networks," in IEEE Std 802.15.4-2020 (Revision of IEEE Std 802.15.4-2015), pp.1-800, 23 July 2020, doi: 10.1109/IEEESTD.2020.9144691.
2 - "IEEE Standard for Low-Rate Wireless Networks – Amendment 1: Enhanced Ultra Wideband (UWB) Physical Layers (PHYs) and Associated Ranging Techniques," in IEEE Std 802.15.4z-2020 (Amendment to IEEE Std 802.15.4-2020), pp.1-174, 25 Aug. 2020, doi: 10.1109/IEEESTD.2020.9179124.
3 - Wong, S.; Zargani, R. Jassemi; Brookes, D. & Kim, B. "Passive target localization using a geometric approach to the time-difference-of-arrival method", Defence Research and Development Canada Scientific Report, DRDC-RDDC-2017-R079, June 2017, pp. 1-77.