RSSIはおおまかな距離を出しますが、実際の部屋ではマルチパスや人体で誤差が±3〜5mになります。BLEタグで持ち物探索やゾーン入退をサブメートル精度にしたいなら測距が必要です。本稿では双方向測距(TWR)、クロック漂移が効く理由、RSSIとの融合を解説します。

測距の考え方

受信電力からではなく、電波の飛行時間を測ります。往復では:

d = c * (T_round – T_reply) / 2

光は0.3m/nsなので、1nsの誤差は0.15mです。

片側TWR(SS-TWR)

タグがt0で送信、アンカーが固定遅延Δ後にt1で応答、タグがt2で受信。

T_round = t2 – t0

d = c * (T_round – T_reply) / 2

クロックが同期していないと、周波数オフセットf_offが効きます。

error = c * f_off * T_round / 2

20ppm水晶、T_round=10µsでは誤差2e-10s→6cm。100µsでは60cmに伸びるため、往復時間を短くするかオフセットを打ち消します。

両側TWR(SDS-TWR)

2回目の交換を加え、タグとアンカーのクロックオフセットを相殺します。処理遅延の非対称(<1ns)のみが残ります。SDS-TWRは水晶精度の要件を取り除くため、BLE/UWB測距の標準です。

BLE実装上の現実

BLEにUWBのようなRTTプリミティブはなく、次で実装します。

  • 接続イベントのタイミング
  • CTE/AoAフレームの位相
  • GATT要求/応答( simplestだが主堆遅延1〜10msが支配)

1µsタイマは150mの不確定性を生むため、アプリ層ではなく無線層でタイムスタンプします。

RSSI融合

TWRは正確だが数msの能動TX/RXで数mA。RSSIは受動で安いがバイアス付き。カルマンフィルタで融合し、TWRはN回に1回に抑えて電力を節約します。

電力コスト

手法 能動時間 電流 精度
RSSI受動 0.5ms 5-8mA ±3-5m
SS-TWR ~4ms 5-8mA ±0.5m
SDS-TWR ~8ms 5-8mA ±0.1-0.3m

チェックリスト

  • SDS-TWRで水晶オフセット相殺
  • 工場でアンテナ+処理遅延を較正
  • 無線層でタイムスタンプ
  • カルマンでRSSI融合
  • 往復時間を短く

適切なBLEタグはSDS-TWRで0.1〜0.3mを達成し、疎な測距とRSSIで電池寿命を維持します。