Qをクリックすると回答が出てきます 雑談ですが詳しい説明してくれます
RTK/PPKのアルゴリズム解説(概要)
?? 基本の目的:
移動局(ローバー)の位置を、基準局との相対距離で高精度に推定すること(数cm?cm精度)
?? アルゴリズムの基本ステップ:
1. 観測量の取得(GNSSデータの記録)
各衛星からの信号を、以下の2つの観測量として記録:
擬似距離(Pseudorange)
→ 信号の到達時間 × 光速(mオーダーの精度)
搬送波位相(Carrier Phase)
→ 信号の波長に基づく位相ずれ(数mmの精度)
2. 差分処理(Differencing)
ローバーと基準局の誤差を打ち消すために「差分」を取ります。
?? 種類:
Single Difference(1差分):
ローバーと基準局で、同じ衛星の信号の差を取る
Double Difference(2差分):
異なる2つの衛星のSingle Differenceの差を取る
→ これでクロックバイアス(時刻ズレ)もキャンセル!
3. 整数アンビギュイティ推定(Integer Ambiguity Resolution)
搬送波位相には「何波ぶんズレているか」が不明(整数のズレ=アンビギュイティ)
?? 問題:
搬送波の波長はたとえば19cm(L1帯)。
でも記録できるのは位相(0?1周期の小数)だけ。
→ 整数分の波のズレ(N)を正しく求める必要あり!
?? 解法:
Kalmanフィルタや拡張カルマンフィルタ(EKF)で位置とNを推定
LAMBDA法(整数最尤推定)でNを整数化(Fix解)
4. フィルタリング(カルマン・スムージング)
移動しているローバーの軌跡を、時間的に滑らかに推定
カルマンフィルタや後向きスムージングなどで推定値を補強
5. 出力:cmオーダーの位置解(Fix or Float)
整数Nが正確に推定できた:→ Fix解(高精度)
Nが不確かだけど推定位置は出せる:→ Float解(精度は劣る)
?? 数式的にざっくり(Double Difference)
搬送波位相観測式:
Φ_ij = ρ_ij + c(dt_i - dt_j) + λ*N_ij + ε
ここで:
Φ_ij:衛星jと受信機iの位相観測量
ρ_ij:真の幾何学的距離
dt_i:受信機のクロックバイアス
λ:搬送波波長(例:19.03 cm)
N_ij:整数アンビギュイティ
ε:ノイズ
これらを 基準局とローバー、複数衛星に対して差分を取ると、
時刻誤差・衛星時計誤差・大気遅延が消え、純粋な相対位置推定問題に変わる。
?? 補足:RTKとPPKの違い
特徴 RTK(リアルタイム) PPK(後処理)
データ処理 即時(リアルタイム) あとからじっくり処理
精度 高いがFix失敗リスクあり 高精度+安定しやすい
ログ ログ不要 ログ必須(ローバー・基準局)
利用場面 ロボット、農業、建機など ドローン写真測量、スポーツ分析など
?? 参考実装(RTKLIBなど)
PPKは RTKLIB などのオープンソース実装で使えます。
内部では、上記のアルゴリズムをC言語で効率的に実装しています。
もっとディープにいく?
LAMBDA法の詳細
カルマンフィルタの状態空間モデル
RTKLIBのソースコードの構造
このへんも分解して解説できます!
興味のあるところを教えてください??