【ChatGPT】RTKの計算概要の説明
- By: Dj1711572002
- カテゴリー: ChatGPT_RTK
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のソースコードの構造 このへんも分解して解説できます! 興味のあるところを教えてください??
コメントはまだありません