プログラミング Python

GPSの取得データと測位原理についてのまとめ

前回の続き

1つ前の記事では、GPSのデータをラズパイ(Raspberry pi)で取得して保存するプログラムを作成しました。

取得したデータには

  1. $GPGGA
  2. $GPGLL
  3. $GPGSA
  4. $GPGSV
  5. $GPRMC
  6. $GPVTG
  7. $GPZDA

がありました。

これらは、NMEA 0183と呼ばれる標準的な形式のGPSデータセンテンスで、GPSレシーバーやその他の位置情報を提供するセンサーからのデータを標準的なフォーマットで伝達するために使用されています。少し調べてみました。

NMEA 0183 形式のGPSデータセンテンス

  1. $GPGGA (Global Positioning System Fix Data):
    • GPSの基本的な位置情報
    • 受信機の日付、時刻、緯度、経度、修正情報などが含まれます。
  2. $GPGLL (Geographic Position - Latitude/Longitude):
    • 緯度と経度の情報
    • 緯度、経度、およびUTC(協定世界時)時刻が含まれます。
  3. $GPGSA (GPS DOP and Active Satellites):
    • 使用中の衛星と、位置の精度を示すDilution of Precision(DOP)情報
    • 使用中の衛星番号、PDOP、HDOP、VDOPなどが含まれます。
  4. $GPGSV (GPS Satellites in View):
    • 受信機が視野に入れることができる全てのGPS衛星の情報
    • 衛星の数、PRN番号(識別番号)、仰角、方位、信号強度などが含まれます。
  5. $GPRMC (Recommended Minimum Specific GPS/Transit Data):
    • 推奨される最小限のGPSデータ
    • 位置のステータス、UTC時刻、緯度、経度、地上速度、進行方向などが含まれます。
  6. $GPVTG (Track Made Good and Ground Speed):
    • 地上速度と進行方向の情報
    • 進行方向、地上速度、真北からの進行方向などが含まれます。
  7. $GPZDA (Time and Date):
    • UTC日付と時刻の情報
    • 年、月、日、UTC時刻、時刻調整などが含まれます。

NMEA 0183プロトコルをサポートするほとんどのGPSレシーバーやGNSS(Global Navigation Satellite System)受信機から得られる一般的なデータです。アプリケーションやデバイスがこれらのデータを解釈できれば、位置情報やタイミング情報などのGPSデータを取得することができます。

image.png

GPS(Global Positioning System)は、人工衛星の信号を使用して、地球上の位置を特定するための測位システムで、GPS測位は受信機が複数のGPS衛星からの信号を受信し、それらの信号を解析することによって行われています。

  1. GPS衛星信号の受信:
  2. 受信機位置の計算:
  3. 位置の交点の計算:
  4. 高度の計算:
  5. 補正と改善:
  6. 最終位置の表示:

GPS測位は、非常に正確で広範な用途に利用されています。ただし、建物や樹木などの遮蔽物が多い環境では、GPS信号の受信が妨げられる可能性があるため、これらの状況では補助的な位置情報や他の測位技術が使用されることがあります。

image.png

地上の受信機に内蔵された時計が正確である場合、3つの人工衛星からの信号を利用して位置を特定できます。ただし、受信機の時計にはわずかな誤差があるため、より正確な時刻情報が必要な場合には、さらに1機の追加の人工衛星の情報が必要です。

人工衛星との距離は、電波の伝播時間によって計算されます。

GPS(Global Positioning System)において、人工衛星との距離は電波の伝播時間を基に計算されます。

$$\text{距離} = \text{電波の伝播時間} \times \text{電波の速度}$$

ここで、電波の速度は約 (299,792,458) メートル/秒(光速)です。電波の伝播時間は、GPS受信機が人工衛星からの信号を受け取るまでの時間と、その信号が受信機に戻るまでの時間の合計です。

この合計時間を2で割ることで、一方向の伝播時間が得られ、それを電波の速度で乗算することで、人工衛星との距離が求められます。

$$\text{伝播時間} = \frac{\text{受信までの時間} \times \text{戻りの時間}}{2}$$


-プログラミング, Python
-