【GPS】NMEAフォーマット

/ Linux/Unix / Comment[0]

NMEA 0183 (or NMEA for short) is a combined electrical and data specification for communication between marine electronic devices such as echo sounder, sonars, anemometer, gyrocompass, autopilot, GPS receivers and many other types of instruments. It has been defined by, and is controlled by, the U.S.-based National Marine Electronics Association

わかり易く言うと、米国海洋電子機器協会が定めたナビゲーションシステムの規格。
$ cat /dev/ttyUSB0
$GPGGA,110330.000,3612.3456,N,13912.3456,E,1,07,1.0,50.2,M,38.7,M,,0000*62
$GPGSA,A,3,12,29,18,22,09,31,25,,,,,,2.0,1.0,1.7*3A
$GPGSV,3,1,10,14,82,330,,25,75,042,18,31,35,293,19,29,32,133,27*75
$GPGSV,3,2,10,12,29,044,36,22,28,213,17,32,12,317,21,30,10,227,16*7E
$GPGSV,3,3,10,18,10,185,18,09,08,083,22*7F
:
このように、NMEA-0183規格ではASCIIテキストのCSVでデータがやりとりされている。


$GPGSA - GNSS DOP and Active Satellites
$GPGSA,A,3,12,29,22,09,31,25,,,,,,,2.2,1.1,1.9*3E

[A]   観測モード (A:2D/3D自動 M:2D/3D手動選択)
[3]   モード   (1:受信不能 2:2D 3:3D)
[12,29,22,09,31,25] 衛星番号
[2.2]  PDOP (衛星の配置が偏っているかどうか)
[1.1]  HDOP (衛星の配置が水平方向に偏っているかどうか)
[1.9]  VDOP (衛星の配置が垂直方向に偏っているかどうか)
[*3E]  チェックサム


$GPGGA - Global Positioning System Fix Data
$GPGGA,110429.000,3612.3456,N,1391.2345,E,1,06,1.1,50.2,M,38.7,M,,0000*6D

[110429.000]  UTC時刻 (11:04:29秒)
[3612.3456,N]  北緯 (36度12.3456分)
[1391.2345,E]  東経 (139度1.2345分)
[1]    GPSクオリティ (0:受信不能 1:単独観測 2:複数の衛星によるDGPS)
[06]   受信衛星数 (6台)
[1.1]   HDOP
[50.2,M] 平均海水面からのアンテナ高度 (50.2m)
[38.7,M] WGS-84楕円体から平均海水面の高度差 (38.7m)
[0000] DGPS基準局のID
[*6D] チェックサム


$GPGSV - Satellites in View
$GPGSV,3,2,10,12,28,044,34,22,29,213,15,32,13,317,16,30,11,227,23*7D

[3] 全メッセージ数
[2] メッセージ番号
[10] 受信可能衛星数
[12,28,044,34] 衛星番号,仰角,方位,SNR (衛星番号12、仰角28度、方位044度、信号強度34)
[22,29,213,15] 衛星番号,仰角,方位,SNR (衛星番号22、仰角29度、方位213度、信号強度15)
[32,13,317,16] 衛星番号,仰角,方位,SNR (衛星番号32、仰角13度、方位317度、信号強度16)
[30,11,227,23] 衛星番号,仰角,方位,SNR (衛星番号30、仰角11度、方位227度、信号強度23)
[*7D] チェックサム


$GPRMC - Recommended Minimum Specific GNSS Data
$GPRMC,110428.000,A,3612.3456,N,13912.3456,E,0.00,,010311,,,A*7F

[110428.000] UTC時刻 (11:04:28秒)
[A] ステータス (A:有効 V:無効)
[3612.3456,N] 北緯 (北緯36度12.3456分)
[1391.2345,E] 東経 (東経139度1.2345分)
[0.0] 対地速度 (0ノット)
[010311] UTC日付 (11年3月01日)
[A*7F] チェックサム


使用例
シリアルポートは複数同時アクセスは出来ないので、ログをとりつつ
$ cat /dev/ttyUSB0 > gps.log&
ttyUSB0を参照せず、ログのほうを参照するようにする。
$ tail -f gps.log

座標と速度(knot)を表示
$ tail -f gps.log|grep MC|cut -d, -f4-8
36XX.XXXX,N,137XX.XXXX,E,2.65
36XX.XXXX,N,137XX.XXXX,E,1.65
36XX.XXXX,N,137XX.XXXX,E,0.45
:
「北緯36XX.XXXX、東経137XX.XXXX、対地速度1.65ノット」
1海里≒1.85kmなので、1.65knを時速に直すと約3.05km/h

受信衛星数と精度(HDOP)を表示
$ tail -f gps.log|grep GA|cut -d, -f8-9
05,2.2
06,1.9
07,1.7
07,1.7
08,1.1
「受信衛星数8、精度1.1(数字が小さいほど高精度)」

関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可