1 ポイント 投稿者 GN⁺ 2024-07-16 | 1件のコメント | WhatsAppで共有

生のGPSデータを用いた位置計算

GPSシステムの重要性

  • GPSはグローバル・ポジショニング・システムであり、Googleマップでの経路検索から配車アプリまで、さまざまなアプリケーションで使われている
  • GPSは非常に高精度で、プレートテクトニクスや大陸移動の測定にも使われている
  • GPSは米国政府が所有しており、地政学的な理由で他国に対するアクセスが制限される可能性がある
  • そのため、ロシアのGLONASS、欧州連合のGalileo、中国のBeiDouのような、他国のGPS類似システムが開発された

座標系

  • 位置を表現するために、さまざまな座標系が使われる
  • 一般的に使われる緯度・経度は、数学的な計算には適していない
  • ECEF (Earth Centered, Earth Fixed) 座標系は、地球中心を原点として位置を表現する
  • WGS 1984システムは、最も一般的に使われるECEF座標系である

高さの定義

  • 高さを定義する際には、基準となる面を定義する必要がある
  • 基準楕円体とジオイドモデルが使われる
  • 基準楕円体には物理的な意味はなく、ジオイドは同一の重力ポテンシャルを持つ点の集合として定義される

緯度と経度

  • 測地緯度は、楕円体表面での法線と赤道面の間の角度である
  • 測地経度は、基準子午線と特定の子午線の間の角度である
  • 測地高は、楕円体を基準に測定された高さである

測地座標とデカルト座標の変換

  • 測地座標をデカルト座標に変換するのは簡単である
  • デカルト座標を測地座標に変換するには、反復的な手順が必要である

局所座標系

  • 局所座標系は、ユーザーの位置を中心とするENU (East-North-Up) システムである
  • ECEF座標をENU座標に変換する方法がある

GPSを用いたユーザー位置の計算

衛星位置の決定

  • 衛星の軌道は楕円形で、6つのケプラー要素によって完全に指定される
  • 衛星の位置は、GPSインターフェース仕様書に従って計算される

ユーザーと衛星の間の距離計算

  • GPS受信機は、衛星信号のタイムスタンプを使って衛星までの距離を計算する
  • この距離は疑似距離 (pseudorange) と呼ばれる
  • 正確な位置を計算するには、ユーザーと衛星の時計オフセットおよび大気遅延をモデル化する必要がある

ユーザー時計オフセットの推定

  • ユーザー時計オフセットは、ユーザー位置とあわせて推定される

ユーザー位置および時計オフセット推定アルゴリズム

  • 初期ユーザー位置と時計オフセットを設定し、反復的に修正する
  • 各衛星について疑似距離を補正し、信号送信時刻を計算し、衛星位置を計算する
  • 線形代数の手法を使って最小二乗解を求める

Matlabコードに関する注意事項

  • 一部の方程式ではソルバーを呼び出す必要がある
  • たとえば、平均近点離角 (M) から離心近点離角 (E) を計算するにはソルバーが必要である

実験設定

  • 生のGPSデータを収集するには、特殊なGPSユニットが必要である
  • u-bloxのNEO-M8Tおよび6Tチップが適している
  • RTKLibのSTRSVRユーティリティを使って、生のGPS信号を受信・保存する

生のGPSデータ処理

  • STRSVRは、生のGPSデータをRTCM3形式で保存する
  • MatlabライブラリgoGPSを使ってRTCMデータをデコードし、Matlabのデータ構造に変換する

結果分析

  • 位置と時計オフセットの変化を分析する
  • 位置の東西/北/上方向 (E/N/U) 成分の変動を分析する
  • 時計オフセットの変動を時間に沿って分析する

衛星の方位角/高度計算

  • ユーザー中心のENUフレームで衛星の方位角と高度を計算する

GN⁺のまとめ

  • この記事は、GPSシステムの動作原理と位置計算方法を説明している
  • GPSデータの精度を高めるために、さまざまな補正手法が使われる
  • Matlabコードを通じて、実データを処理・分析する方法を提供している
  • GPSシステムの技術的インフラを理解するうえで有用である
  • 類似機能を持つプロジェクトとしてRTKLibとgoGPSがある

1件のコメント

 
GN⁺ 2024-07-16
Hacker Newsのコメント
  • Android はすでにキャリア位相へのアクセスを提供しており、これにより同じ地域内のデバイス間の相対位置を非常に高精度で測定できる

    • 加速度計とジャイロスコープを追加すれば、リアルタイムで位置を測定でき、GNSS の疑似距離測定の変化は予測可能なため、精度は大きく低下しない
    • これによって、模型飛行機をトラックの荷台に自動着陸させるといった興味深い機能を実現できる
    • 消費電力がそれほど重要でなければ、かなり良い GNSS 受信機を安価に作ることができる
  • GPS 受信機を自作したい人向けのオープンソースプロジェクトがある

  • GPS 関連のコメントでよく貼られるリンクだが、それには十分な理由がある

  • さらにインタラクティブな説明を提供する別のリンクもある

  • 水面にごくまれに短時間だけ浮上する水生生物の GPS データを収集している研究者に会ったことがある

    • 生データを記録して後処理することで、消費電力と衛星信号への露出時間を大幅に減らせる(露出時間は 1 秒未満)
  • 次の段階は PPP または RTK

    • GNSS はさまざまな可能性を持つ興味深い分野である
  • 別の優れたオープンソース実装もある

  • ユーザーと信号源の幾何配置が、ユーザー位置の不確実性にどのような影響を与えるかを示す図がある

    • 携帯電話の地図アプリで、位置の不確実性の形を円から弧の交差のような形に変更できる設定があればいいのにと思う
  • GPS は、日常生活で相対論的効果を考慮しなければならない数少ない応用の一つだと聞いたことがある

    • 生成されるデータは、すでにそのような相対論的効果を除いたものになっている
  • 地球平面説の人たちへの練習問題: もし衛星が球形の地球を周回していないなら、携帯電話の GPS マッピングがどう機能しているのか説明してみよ