NMEAを詳しく知りたい方のための資料として私がおすすめする資料はu-bloxの公開しているu-blox 8 / u-blox M8 Receiver Description Including Protocol Specificationのpp.105~127あたりです。このふんわりした小話よりもそちらでがっつり読み込んだ方がためになると思います。私は検索がうまくできませんでしたがtrimbleのhelpなども詳しいです。
NMEAとはGNSSの受信したデータを出力する複数のプロトコルをまとめた呼称です。NMEAは正式にはNMEA0183といい、団体であるNMEA(この記事中に出てくるこれ以外のNMEAはプロトコルNMEA0183のことを指した語です)が制定したプロトコルです。GNSS受信機はGNSS衛星から送られてきた信号を元に自らの位置などを推定しています。この推定された位置などの便利そうな情報をいい感じにまとめるプロトコルがNMEAになるわけです。ほとんどのGNSS受信機はこのNMEAに従ってデータを出力します。
NMEAには様々な種類があります。その中でも使われる頻度の高いGGA、GSA、GSV、RMCについてほんのり紹介します。実際に受信機から送られてくるデータを読んだことがある人はGGA、GSAでなく$GPGGA、$GNGSAなどの頭文字を持ってデータが送られてくることを知っているでしょう。NMEAは受信機によってGPGGA、GNGGAと頭文字が変わります。この頭文字は受信機が対応する衛星に従って付けられています。
GGAはざっくりと今の受信機の状態が分かるプロトコルです。位置、使用衛星数、精度低下率などがわかります。
$xxGGA,time,lat,NS,long,EW,quality,numSV,HDOP,alt,M,sep,M,diffAge,diffStation*cs<CR><LF> |
GSAは誤差について詳しく記述されたプロトコルです。使用衛星、精度低下率について詳しく記述されています。
$xxGSA,opMode,navMode{,sv},PDOP,HDOP,VDOP,systemId*cs |
GSVはGNSS Satellites in Viewの略称であり可視状態にある衛星について詳しく記述されています。
$xxGSV,numMsg,msgNum,numSV,{,sv,elv,az,cno},signalId*cs |
RMCはRecommended Minimum dataとされています。RMCに大体のGPSに時刻、位置、速度といったGNSSに要求されている結果が記されています。
$xxRMC,time,status,lat,NS,long,EW,spd,cog,date,mv,mvEW,posMode,navStatus*cs |