【ChatGPT】RTKの計算概要の説明

 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のソースコードの構造
このへんも分解して解説できます!

興味のあるところを教えてください??

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です