GNSSに関する覚え書き




 (7)UART0でGPSデータの表示について記載していましたが、その後に変化したことや、新たな知識を得たことなどを含めて再びGPSに関して備忘録として記述してみました。

 GPS(Global Positioning System)はアメリカ合衆国によって運用される衛星測位システムを指します。世界で最も広く使われているGNSS(Global Navigation Satellite System)の一つです。GNSSとは、衛星を利用した測位システムの総称を指します。つまり、一般的に馴染みのあるGPSはGNSSに含まれる衛星システムの一つということになります。現在、GPS以外のGNSSも利用可能で、以下のようなものがあります。

  BeiDou Navigation Satellite System(BDS): 中国

  Navigation Indian Constellation(NavIC): インド

  European Global Navigation System(Galileo): ヨーロッパ

  Quasi-Zenith Satellite System(QZSS): 日本

  Globalnaya Navigazionnaya Sputnikovaya Sistema(GLONASS): ロシア


 GNSS受信機は、衛星の3次元での位置と受信機の時計の時間差を計算し、受信装置の位置・速度等を割り出します。それらの計算のためには、最低でも4つの衛星が必要です。衛星の数が増えるに従い、位置・速度・時間データの正確性や精度は向上します。

(1)GPS受信機からの出力データ
 単体のGPSモジユールから出力されるデータメッセージプロトコルでもっとも広く利用されているデータメッセージプロトコルは、NMEA0183メッセージプロトコルです。NMEA(米国海洋電子機器協会 National Marine Electronics Association)によって定義・管理されています。GPS受信機とナビゲーションシステム機器間をシリアルポートを利用して通信するための規格です。NMEAのフォーマットおよびセンテンスに関する詳細な情報は、正式には、www.nmea.orgから有料で購入できますが、無償のPDF版(https://www.sparkfun.com/datasheets/GPS/NMEA%20Reference%20Manual1.pdf)もあるようです。以下に簡単な概略を以下に述べてみます。

 NMEA0183は、ASCII形式のシリアル通信プロトコルです。以下の通信設定で行われています。

  ・ボーレート  :4800 BPS
  ・データビット :8
  ・パリティ   :8
  ・ストップビット:none


NMEA0183メッセージプロトコルには、1つのセンテンスだけでなく、異なる目的の利用のために使われるいくつかのセンテンスが含まれています。$マークで始まり、CR(キャリッジリターン)とLF(ラインフィード)で終わる以下のような6つのセンテンスが1行毎に出力され、更新されるようになっています。(先頭GPの記号はGPSの場合に付けられる記号です)

  ・$GPGGA ・・・Position Response Message(Max82byte)
           時刻、位置、補正データ

  ・$GPRMC ・・・Recommended Minimum Course Response Message(Max77Byte)
           時刻、位置、GPS関連情報をまとめたセンテンス

  ・$GPGSV ・・・Satellites-in-View Response Message(Max70Byte)
           観測できる衛星数、衛星ID、仰角、方位角、SN比

  ・$GPGSA ・・・Satellite Used Response Message(Max69byte)
           GPS受信機の動作モード、位置解析に使われた衛星、精度低下率

  ・$GPGLL ・・・Geograpic Position-Lattude/Lonitude (Max47byte)
           緯度、経度、位置補正と状態のUTC時刻

  ・$GPVTG ・・・Course over Ground and Ground Speed Response Message(Max46Byte)
           方向、対地速度



◎GPRMCの場合の例
$GPRMC hhmmss、X、ddmm.mmmm、N、dddmm.mmmm、E、nnn.n、ddd.d,、ddmmyy、ddd.d、X、a*cc[CR][LF]
                                                   
   項目    意味
  hhmmss 測定時刻(UTC時刻 時 分 秒)
  X 測位状態 A:単独測位中またはDGPS測位中 V:未測位
  ddmm.mmmm 緯度(度 分.1/10000分)
  N N:北緯  S:南緯
  ddmm.mmmm 経度(度 分.1/10000分)
  E E:東経 W:西経
  nnn.n 速度(000.0〜270.0 単位:ノット)
  ddd.d 真方位による進行方向(000.0〜359.9 単位:度)
  ddmmyy 日付(日 月 年)
  ddd.d 磁気偏差(000.0〜180.0 単位:度)
  X E:磁気偏差東(真方位−磁気偏差=磁気方位) W:磁気偏差西(真方位+磁気偏差=磁気方位) X:なし
  a 測位モード N:未測位 A:単独測位中 D:DGPS測位中
  *cc 最初の1文字(*)に続いて 2桁のチェックサムを示します(00〜FF)


(2)GPXファイルとは

 GPX(GPS eXchange Format)ファイルとは、拡張子.gpxを持ったテキストベースのファイルです。GPX(GPS eXchange Format)は、GPS/GNSS装置やソフトウェア間で位置情報を交換するためのデータフォーマットです。GPS/GNSS装置等で位置情報を交換利用するためのデータ形式のことを言います。詳しくはこのサイトをご覧ください。多くの地図ソフトウエア(カシミール3Dなど)やGPS機器がこのGPXファイルを利用しており、非常に汎用性が高いファイル形式です。 このGPXのフォーマットは、XML Schemaベースで設計されており、ウエイポイント、軌跡、ルートなどの情報を含んでいます。GARMINなどの多くのアウトドアで使われているGPS機器からは直接このGPX形式に変換されたファイルが出力されてきます。GPSデータを数値としてのみ利用することはもちろん可能ですが、幅広く、地図等を用いて表示させたりするためには、GPS受信機から出力されるNMEA0183形式のデータをGPXのフォーマットに変換する必要があります。


◎GPXファイルの例
 <xml version="1.0" encoding="UTF-8" standalone="no" ?>
 <gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3">
 <trk>
 <name>ACTIVE LOG152833</name>      ・・・ トラックログの名前
 <trkseg>                     ・・・ トラックセグメント(連続したトラックのデータ)の始まりを示す
   <trkpt lat="33.828762" lon="132.704914">  ・・・ GPSからの緯度、経度の値
   <ele>0.616</ele>               ・・・ 
   <time>2024-05-13T06:28:33Z</time>    ・・・ 日付、時間の記述
   </trkpt>
      ・
      <trkpt> から</trkpt>までが1つのGPSドットデータの値を示す
      ・
     途中省略
      ・
      ・
 </trkseg>                    ・・・ 1つのトラックセグメントの終わりを示す
 </trk>
 </gpx>

  カシミール等のアプリケーションの地図画面では、<trkseg> から </trkseg> 迄が連続した一本のトラックとして繋がって表示されます。




(3)GPSログデータをGPXファイルに変換する

 数値データとして画面表示することは、前回、(7)UART0の中でGPSデータを表示させていますので、今回はGPXファイルとしてカシミールを使って地図上に表示させることを考えてみます。

手っ取り早く変換するにはGPSBabelというオープンソースのフリーソフトを使うのが良いかと思います。


Ramer-Douglas-Peuckerというアルゴリズムを使って、GPSデータの間引きをおこなっているということです。ここで最も重要となるのが、GPSログデータの間引き。GoogleのStatic Maps API V2には、渡せる文字数は2048バイトまでという制限があります。 逆算すると、GPSログデータは92ポイントまでしか使えません (92ポイントで、座標データ以外の文字を合わせて2016バイトになります)。RC3 GPSの場合、GPSログデータは1時間あたり3600ポイント(秒1ポイント×60秒×60分)のデータになりますから、かなり高精度に間引かないと、自分の走った軌跡がきれいに地図上に再現されません。 参考資料:




メニューに戻る