
Time Difference of Arrival(TDOA)測位は、BLEベースの屋内位置測位において最も高精度なアプローチの一つですが、システムに最も厳しい要件を課します:すべての受信Beacon(アンカー)がサブマイクロ秒精度の共通時間基準を共有する必要があります。本記事では、同期アーキテクチャ、タイムスタンプ方式、水晶発振器のドリフト影響、および現実的に期待できるエンドツーエンドの精度予算を分解して解説します。
1. TDOAにクロック同期が必要な理由
RSSIベースの測位では、各Beaconが独立して信号強度を測定しサーバーに報告します。測定が振幅ベースであり時間ベースでないため、共通クロックは不要です。
TDOAでは、タグが単一のBLEアドバタイズメントを送信します。複数のアンカーがこれを受信し到着時刻を記録します。2つのアンカー間の到着時刻の差が双曲線を定義します。3つ以上のアンカーがあれば、双曲線の交点としてタグ位置が求まります。
重要な洞察:TDOAは絶対時刻ではなく相対時刻(時刻の*差*)のみを必要とします。ただし、すべてのアンカーが共通クロックに同期している必要があります。アンカー間のタイミングオフセットが位置推定に直接影響するためです。
1マイクロ秒のタイミング誤差は約300メートルの距離誤差に変換されます(光速 × 1 µs = 300 m)。実際、BLE屋内システムは1〜3メートルの精度を目標とするため、アンカー間のクロックオフセットは約10ナノ秒以下に抑える必要があります。
2. TDOA測位の数学
2.1 双曲線測位
未知の位置(x, y)にあるタグと、既知の位置(x_i, y_i)にあるアンカーについて:
t_i = t_0 + d_i / c
ここで、t_iはアンカーiでの到着時刻、t_0は送信時刻(未知)、d_iはタグからアンカーiまでの距離、cは光速(3 × 10^8 m/s)です。
アンカーiとjの差を取ると:
t_i – t_j = (d_i – d_j) / c
これでt_0が消去されます。(d_i – d_j)はアンカーiとjを焦点とする双曲線を定義します。N個のアンカーでN-1個の独立したTDOA測定値が得られます(1つのアンカーを基準とする)。
2.2 最小アンカー数
- 2次元測位:最小3アンカー(2つのTDOA測定 → 2つの双曲線 → 1つの交点)
- 冗長2次元:4+アンカーで最小二乗法による過剰決定解と誤差検出
- 3次元測位:最小4アンカー(3つのTDOA測定)
2.3 クラメール・ラオ下限(CRLB)
位置分散の理論的下限は:
var(position) >= (c^2 / sigma_t^2) x tr(F^-1)
ここで、sigma_tはタイムスタンプの標準偏差、Fはフィッシャー情報行列です。一般的な4アンカー配置で10 nsのタイムスタンプジッタ、良好な幾何学配置(GDOP ≒ 2)の場合、CRLBは概ね:
sigma_position >= c x sigma_t x GDOP = 3×10^8 x 10×10^-9 x 2 ≒ 6 m
これは、完全な同期でも10 nsのタイムスタンプジッタが精度を約6メートルに制限することを示しています。サブメートルのTDOAにはサブナノ秒のタイムスタンプが必要であり、これはBLE PHYが本来提供できるものではありません。
3. クロック同期方式
3.1 有線同期(PPS / ハードウェアトリガー)
最も堅牢な方法:マスタークロックが1 HzのPPS(Pulse Per Second)信号を生成し、ケーブルで全アンカーに分配します。各アンカーはPPSエッジでローカルラジオタイマーカウンターをラッチします。
| パラメータ | 代表値 |
|---|---|
| 同期精度 | 10〜50 ns |
| ケーブル最大長 | ~50 m(LVDS)/ ~10 m(GPIO) |
| ケーブルスキュー | ~5 ns/m(同軸)、~1 ns/m(LVDSツイストペア) |
| コスト | 高(配線 + 分配アンプ) |
| 拡張性 | ケーブルインフラに制限 |
nRF52833/nRF5340での実装:PPSをGPIOTEチャネルに接続し、PPI(Programmable Peripheral Interconnect)経由でTIMERキャプチャをトリガーするよう設定します。タイマーは16 MHz(62.5 ns分解能)で動作し、PPSキャプチャにより絶対時間同期が得られます。PPSエッジ間はローカル32 MHz水晶がタイムベースを提供します。
3.2 無線同期(Beacon間)
ケーブル不要。アンカーが定期的に同期パケットを交換します。課題は、同期パケット自体に未知の伝搬遅延があり、これを推定して補償する必要があることです。
双方向測距(TWR)同期プロトコル:
1. アンカーAが時刻t_A(Aのクロックで記録)に同期パケットを送信
2. アンカーBがt_B = t_A + δ_AB + offset_BAで受信
3. アンカーBが時刻t_B’(Bのクロックで記録)で応答
4. アンカーAがt_A’ = t_B’ + δ_BA + offset_ABで応答を受信
ここでδは伝搬遅延、offsetはAとB間のクロックオフセットです。
クロックオフセット推定:
offset = [(t_B – t_A) – (t_A’ – t_B’)] / 2
伝搬遅延推定(対称パスと仮定):
delta = [(t_B – t_A) + (t_A’ – t_B’)] / 4
これによりクロックオフセットと伝搬遅延の両方が消去され、タイムスタンプジッタと非対称性で制限される同期精度が得られます。
| パラメータ | 代表値 |
|---|---|
| 同期精度 | 100〜500 ns(ジッタに依存) |
| 更新レート | 1〜10 Hz |
| RFオーバーヘッド | 同期交換あたり2パケット |
| 配線不要 | はい |
| 拡張性 | 良好(メッシュリレー同期) |
制限事項:TWRは双方向通信が必要です。アンカーがリスンのみ(パッシブTDOAレシーバー)の場合、無線同期は既知位置のリファレンスタグを使用する必要があります。リファレンスタグが定期的に同期パルスをブロードキャストし、各アンカーがタイムスタンプを記録して相対オフセットを計算します。
3.3 ハイブリッド:配線不要リファレンスタグ
測量済み位置にリファレンスタグを配置します。既知の間隔で同期パケットをブロードキャストします。各アンカーは到着時刻をタイムスタンプ記録し、以下を計算します:
offset_i = t_measured_i – t_expected_i
ここで、t_expected_i = t_broadcast + d_ref_to_anchor_i / c。
リファレンスタグの位置とアンカー位置が既知のため、期待到着時刻は決定的です。その差がリファレンスタイムベースに対するアンカーのクロックオフセットを与えます。
| パラメータ | 代表値 |
|---|---|
| 同期精度 | 50〜200 ns |
| リファレンスタグ数 | 同期ゾーンあたり1 |
| RFオーバーヘッド | 同期サイクルあたり1パケット |
| カバレッジ | 全アンカーへの視線 |
3.4 比較表
| 方式 | 同期精度 | 配線 | コスト | 拡張性 | 最適用途 |
|---|---|---|---|---|---|
| PPS(有線) | 10〜50 ns | 必要 | 高 | 制限あり | 高精度固定設置 |
| TWR(無線) | 100〜500 ns | なし | 低 | 良好 | 柔軟な展開 |
| リファレンスタグ | 50〜200 ns | なし | 低 | 良好 | 混合屋内環境 |
| NTP/PTP(Ethernet) | 1〜10 µs | Ethernet | 中 | 良好 | 粗いTDOAのみ |
4. タイムスタンプ:どこで、どのように
4.1 BLEパケットタイムスタンプポイント
BLE受信チェーンには3つの可能なタイムスタンプポイントがあります:
PHYレベル(SFD検出):無線機がプリアンブル末尾のStart of Frame Delimiter(SFD)を検出します。これが最も早く最も精密なポイントです。タイムスタンプはハードウェアレベルで行われ、プリアンブル相関のため典型的に1〜2 µsの不確実性があります。
リンクレイヤー(パケット末尾):完全なパケット(CRC含む)が受信されます。SFDの20〜500 µs後で、パケット長に依存します。ファームウェアが完全なパケットを持つため便利ですが、タイミングオフセットはパケット長に依存して変化します。
アプリケーションレベル(APIコールバック):BLEスタックが処理後にアプリケーションに通知します。100 µsから数ミリ秒のソフトウェアレイテンシが追加され、変動が大きくTDOAには不適切です。
推奨:SFD(PHYレベル)でタイムスタンプを記録。nRF52/nRF53では、RADIOペリフェラルがアドレスフィールドが一致した時点(プリアンブル+SFDの後)でEVENTS_ADDRESSを発生させます。PPI経由でTIMERがこのイベントをキャプチャし、16 MHz分解能でハードウェアタイムスタンプを提供します。
4.2 タイムスタンプジッタ要因
| 要因 | ジッタ(1σ) | 緩和策 |
|---|---|---|
| プリアンブル相関 | 0.5〜1.0 µs | 2 MB/s PHY使用(短いプリアンブル) |
| 無線割り込みレイテンシ | 0.1〜0.5 µs | PPIハードウェアキャプチャ(CPU不使用) |
| タイマー量子化 | 31.25 ns(32 MHz) | 16 MHzタイマーで62.5 ns分解能;許容範囲 |
| 水晶周波数誤差 | 10〜50 ppm → 蓄積 | 定期再同期 |
| 温度ドリフト | 0.5 ppm/°C → 蓄積 | 温度補償水晶(TCXO) |
支配的なジッタ要因はプリアンブル相関(0.5〜1.0 µs)です。これはBLE TDOAのタイムスタンプジッタが基本的に約1 µsに制限されることを意味します。
4.3 実用的なタイムスタンプ分解能
1 µsのジッタでは、距離換算誤差は300 mです。これは屋内測位には壊滅的に思えます。しかし、TDOAは2つのタイムスタンプの差を使用し、両方のアンカーが相関ジッタ(同じ無線機、同じプリアンブルパターン)を持つ場合、差分ジッタは低くなります。概ね√2 × σ_jitter ≒ 1.4 µsです。
これは標準BLE PHYでのBLE TDOA測位精度が、クロック同期品質に関わらず基本的に約3〜5メートルに制限されることを意味します。これは公表された研究結果や商用システムの仕様と一致しています。
5. 水晶発振器ドリフトの影響
5.1 周波数誤差の蓄積
各アンカーのローカルクロックはリファレンスに対してドリフトします。同期更新間に蓄積されるタイミング誤差は成長します:
delta_t_error = ppm x delta_t_sync
20 ppm水晶で1秒の同期間隔の場合:
delta_t_error = 20×10^-6 x 1 s = 20 µs/秒
これは1秒あたり6 kmの距離誤差に相当し、完全に受け入れられません。10 Hzの同期更新でも:
delta_t_error = 20×10^-6 x 0.1 s = 2 µs → 600 mの距離誤差
5.2 水晶選択の影響
| 水晶タイプ | 精度(ppm) | 温度係数 | コスト | 必要な同期間隔(<100 nsドリフト) |
|---|---|---|---|---|
| 標準XO(32 MHz) | ±20〜50 ppm | 0.05 ppm/°C | $0.10 | 2〜5 ms(非現実的) |
| TCXO | ±0.5〜2 ppm | 0.01 ppm/°C | $0.80 | 50〜200 ms |
| OCXO | ±0.01 ppm | 0.001 ppm/°C | $5+ | 5〜10 s |
| 原子(CSAC) | ±0.001 ppm | — | $1500 | 分単位 |
実用的なBLE TDOAでは、TCXOが最適です。±2 ppm精度で10 Hz同期の場合:
delta_t_error = 2×10^-6 x 0.1 s = 200 ns → 60 mの距離誤差
まだ高いですが、タイムスタンプジッタ(支配的)と組み合わせると、合計誤差予算は:
sigma_total = sqrt(sigma_sync^2 + sigma_timestamp^2) = sqrt(200^2 + 1000^2) ≒ 1020 ns ≒ 306 mの距離誤差
タイムスタンプジッタ(1 µs)が同期誤差(200 ns)を5:1で上回るため、水晶をさらに改善しても収穫逓減となります。
5.3 温度誘起ドリフト
標準32 MHz水晶は放物線状の温度特性を持ちます:
delta_f/f = k x (T – T_0)^2
ここでk ≒ 0.04 ppm/°C^2、T_0はターニングオーバー温度(通常25°C)です。ターニングオーバーから10°Cの場合:
delta_f/f = 0.04 x 100 = 4 ppm
これは無視できません。0.1秒間で400 nsのドリフトです。TCXOはこれを全産業用温度範囲で約0.1 ppmに補償します。
6. 実装アーキテクチャ
6.1 nRF52833/nRF5340 TDOAアンカー設計
ハードウェア:
- nRF52833またはnRF5340 + TCXO(例:Epson TG-5032CGN、±0.5 ppm)
- GPIO経由PPS入力(オプション、有線同期用)
- 位置計算用EthernetまたはWi-Fiバックホール
ファームウェア:
- スキャンモードのBLE無線(連続アドバタイジングチャネルスキャン)
- PPI接続:RADIO.EVENTS_ADDRESS → TIMER.CAPTURE
- タイムスタンプをパケットメタデータと共にRAMリングバッファに保存
- 同期プロトコル:隣接アンカーとのTWR、100 ms間隔
タイムスタンプキャプチャチェーン:
無線がパケット受信 → EVENTS_ADDRESS発生
→ PPIがTIMER0.CAPTURE[0]をトリガー(16 MHzタイマー)
→ {timestamp, RSSI, channel, packet_data}を保存
→ バックホール経由で位置エンジンに転送
6.2 位置エンジン
位置エンジンはサーバー(またはエッジゲートウェイ)で動作します。全アンカーからタイムスタンプ付きパケットを受信し、TDOAを計算します:
1. グループ化:同じアドバタイジングイベントの全タイムスタンプを収集(AdvA + ペイロードハッシュでマッチング)
2. 差分:基準アンカーに対する各アンカーのt_i – t_refを計算
3. 補正:同期プロトコルからの同期オフセット補正を適用
4. 求解:最小二乗双曲線ソルバー(ガウス・ニュートン法またはレーベンバーグ・マルカート法)
5. 検証:外れ値を拒否(TDOA残差 > 3σ)
6.3 チャネル選択の影響
BLEは3つのチャネルでアドバタイズします:37(2402 MHz)、38(2440 MHz)、39(2480 MHz)。タグのアドバタイズメントは3つ全てに順次送信されます(各々 ≤10 ms間隔)。各チャネルは異なるマルチパス特性を持ちます。
ベストプラクティス:TDOA用にアンカーペアごとに最初のアドバタイジングチャネルイベントのみを使用し、チャネル依存の伝搬遅延変動を回避します。または、各チャネルで個別にTDOAを計算し中央値を取ります。
7. エンドツーエンド精度予算
| 誤差要因 | 1σ値 | 距離換算 | 備考 |
|---|---|---|---|
| タイムスタンプジッタ(プリアンブル) | 1.0 µs | 300 m | 支配的;BLE PHYの制限 |
| クロック同期誤差(TCXO、10 Hz) | 200 ns | 60 m | 無線TWR同期あり |
| マルチパス(NLOS) | 0.5〜2.0 µs | 150〜600 m | 環境依存 |
| アンカー位置測量誤差 | 0.1 m | 0.1 m | 測量済みなら無視可能 |
| 温度ドリフト(TCXO) | 50 ns | 15 m | 同期更新間 |
| 合計(RSS) | ~1.5 µs | ~450 m | 幾何学ゲイン適用前 |
ただし、これはTDOA誤差が距離誤差ではなく距離差誤差であり、位置誤差は幾何学(GDOP)に依存することに注意が必要です。効果的なジッタを300 nsに改善した場合(2 MB/sコード化PHY、オーバーサンプリング、パケット平均)、GDOP ≒ 0.5〜1.0の良好なアンカー配置では:
sigma_position ≒ 3×10^8 x 300×10^-9 x 0.7 ≒ 63 m → 実環境で2〜5 mに収束
7.1 現実的な精度期待値
| 設定 | 同期方式 | 期待精度 | ユースケース |
|---|---|---|---|
| 標準BLE、XO、無線同期 | TWR 10 Hz | 5〜10 m | 資産追跡 |
| 標準BLE、TCXO、無線同期 | TWR 10 Hz | 3〜5 m | ナビゲーション |
| コード化PHY、TCXO、PPS同期 | 有線PPS | 1〜2 m | 高精度屋内 |
| BLE 5.1 CTE、TCXO、PPS同期 | 有線PPS | 0.5〜1 m | 研究/RTLS |
8. TDOA vs AoA vs RSSI比較
| パラメータ | TDOA | AoA(BLE 5.1 CTE) | RSSI |
|---|---|---|---|
| 最小アンカー数 | 3(2D)/ 4(3D) | 2(2D)/ 3(3D) | 3+ |
| クロック同期必要 | はい(サブµs) | いいえ(アンカー単位) | いいえ |
| 特別ハードウェア | TCXO、同期線 | アンテナアレイ(4+素子) | なし |
| 代表的精度 | 2〜5 m | 0.5〜1 m | 3〜5 m |
| タグ複雑さ | 低(標準BLE) | 低(標準BLE) | 最低 |
| アンカーコスト | 中 | 高(アレイ + RFスイッチ) | 低 |
| マルチパス感度 | 高(タイミング) | 中(位相) | 高 |
| 消費電力(アンカー) | 中 | 高(CTE処理) | 低 |
| 規格準拠 | BLE 4.2+ | BLE 5.1+ | BLE 4.0+ |
9. 展開推奨事項
3〜5メートル精度(大部分の屋内追跡):
- TCXO搭載アンカーを使用
- 10 Hz無線TWR同期
- ゾーンあたり4+アンカー、8〜15 m間隔
- より短いプリアンブルのため2 MB/s PHY
- 外れ値拒否機能付き位置エンジン
1〜2メートル精度(高価値RTLS):
- 全アンカーに有線PPS同期
- 全アンカーとタグにTCXO
- コード化PHY(125 kbpsまたは500 kbps)
- ゾーンあたり5+アンカー、測量済み位置
- 位置出力にカルマンフィルタ
サブメートル精度:
- BLE TDOAを断念;BLE 5.1 AoAまたはUWBを使用
- UWB(例:DW1000/QM33820)はネイティブでナノ秒タイムスタンプを提供
10. 結論
BLEベースのTDOA測位は、PHYレイヤーのタイムスタンプ精度(プリアンブル相関レベルで約1 µs)によって基本的に制限されます。TCXOと10 Hz無線同期を採用すれば、クロック同期はボトルネックではなくなり、タイムスタンプジッタが支配的になります。
実用的な展開について:3〜5メートルの精度はTCXOアンカーと無線同期で達成可能です。2メートル以下にpushするには有線PPS同期とコード化PHYが必要で、収穫逓減となります。サブメートル精度は異なる技術(UWBまたはアンテナアレイを備えたBLE 5.1 AoA)が必要です。
重要なエンジニアリングの決定は、同期要件がなく標準ハードウェアで3〜5メートルを達成するRSSIベースシステムに対する精度改善が、追加インフラコスト(TCXO、同期配線、測量)に見合うかどうかです。
