Fine Timing Measurement(Wi-Fi RTT, Wi-Fi Location)について(★★)

[無線LAN(Wi-Fi, IEEE 802.11)の開発依頼は、フィールドデザインまでお気軽にお問い合わせください。]

FTM(Fine Timing Measurement)は、アクセスポイントとステーションの距離を計測する仕様で、2016年にIEEE 802.11規格にIEEE 802.11mcから取り込みました。主にindoor location(屋内)で利用し、電波の往復時間の計測により距離を計算するToF(Time of Flight)方式です。実装上の精度としては数cmで計測可能ですが、実環境では床、壁、天井のマルチパスの影響があるため、1m程度の精度になります。
また、Wi-Fiでは、Wi-Fi Locationという認証プログラムとして登録されています。また、AndroidではAndroid 9から実装されており、Wi-Fi RTTという名前で呼ばれています(RTT Managerというclassを利用)。

屋内でのドローン自動飛行や、ロボット自動走行などあらゆる分野に利用できる画期的な技術で、弊社でも開発を行っております。なお、この技術は2010年頃からWireless USBにて実現していますが、コスト的に実用で利用できるものが発売できていません。そういう意味ではようやくindoor locationの時代が来たと言えます。


FTMのシーケンス

FTMの動作は下記のようになります。計測を開始したいものをInitiatorといい、それに応えるものをResponderと呼んでいます。一般的にはResponderはあるチャネルでInitiatorからのアクションフレームを受信待機する必要があるため、アクセスポイントがなります。

  1. Initiatorは、最初にFTM Request(Fine Timing Measurement Request frame)という、これからFTMを開始する合図のフレームを投げます。この中には、どの帯域幅でFTMを行うかを指定します。
  2. Responderは、それにAckで答えると、通常10ms以内に、FTM(Fine Timing Measurement frame)というフレームをToD=0, ToA=0のパラメータで送信します。ここで、このFTMフレームを送信した時刻T=t1_1を記録しておきます。時刻は、1ps単位です(つまり、0.3mm単位)。
  3. Initiatorは、そのFTMフレームに対して、Ackで返します。FTMフレームを受信した時刻T=t2_1と、Ackを返信した時刻T=t3_1を記録しておきます。
  4. Responderは、Ackを受信します。その時の時刻T=t4_1を記録します。
  5. Responderは、FTM(Fine Timing Measurement frame)というフレームをToD=t1_1, ToA=t4_1のパラメータで送信します。なお、このときの時刻T=t2_1を記録しておきます。
  6. Initiatorは、そのFTMフレームに対して、Ackで返します。FTMフレームを受信した時刻T=t2_2と、Ackを返信した時刻T=t3_2を記録しておきます。
  7. Responderは、Ackを受信します。その時の時刻T=t4_2を記録します。

一連のシーケンスが完了すると、Round Trip Time(RTT)は下記で計算でき、それが求まれば、高速をcとすると、距離は c*(RTT/2) にて求まります。

RTT = (t4_1-t1_1) – (t3_1 – t2_1)

複数回、FTMフレームのやり取りが繰り返された場合は、平均を取るようにします。なお、FTM(Fine Timing Measurement frame)のやり取りは、1つ前のt1, t4を含めるため、必ず2回以上に設定する必要があります。


FTMによる位置の決定

3つのアクセスポイントの空間上の位置がわかっており、それらとの距離がわかれば、ステーションの空間上の位置が求まります。なお、ステーションの高さがアクセスポイントより低いなどの条件が必要です。

しかし、実際は測定誤差があるため、さまざまな方法で補正をする必要があります。