Ntrip(Networked Transport of RTCM via Internet Protocol)とは
NtripはRTCM(Radio Technical Commission for Maritime Services)で規定されているインターネット上でGNSSデータを送信するためのプロトコルです。 GNSS単独測位ではメートル級の誤差が生じるのですが、NtripでGNSSデータを受信し測位することによりセンチメートル級の誤差に収めることが可能となります。
GNSSデータの送受信において、Ntripは次の3つの要素で構成されますが、本ページではNtripCaster - NtripClient間の動作を中心に説明していきます。
要素 | |
---|---|
NtripServer | GNSSデータの送信元。要はGNSSレシーバー(基準点)のこと。 GNSSレシーバーで受信されたGNSSデータはNtripCasterに送信され、NtripCasterでレシーバー単位にMountPointとして配信される。 |
NtripCaster | GNSSレシーバから見ればGNSSデータの送信先、GNSS差分データ利用者からみればデータの送信元。 Casterという名前であるが、Server/Clientの区別でいえばどちらから見てもServerである。 |
NtripClient | GNSS差分データ利用者 本ページの対象 |
売り上げランキング: 118
シーケンス
NtripCaster - NtripClient間のプロトコルはHTTP1.1に準じています。 NtripClientはGNSSデータ取得対象のGNSSレシーバー(基準点)をmountpointとしてRequest-URIに設定し、Requestを送信します。
GET <mountpoint> HTTP/1.1<CR><LF> user-Agent: NTRIP<product/comment><CR><LF> Accept: */*<CR><LF> Connection: close<CR><LF> // NTRIPはnonpersisntent connectionのみサポート <CR><LF>
ICY 200 OK<CR><LF>
Requestフォーマットが適正でない場合(mountpointが/等)、NtripCasterは保持するmountpointの一覧であるsourcetableを返します。
GET / HTTP/1.1<CR><LF> user-Agent: NTRIP<product/comment><CR><LF> Accept: */*<CR><LF> Connection: close<CR><LF> <CR><LF>
SOURCETABLE 200 OK<CR><LF> Server: *****<CR><LF> Date: Fri, 31 May 2019 08:00:00 UTC<CR><LF> Content-Type: text/plain<CR><LF> Content-Length: ****<CR><LF> <CR><LF> STR;mountpoint;id;format;format-details,,,,,,<CR><LF> // moutpointのrecord STR;mountpoint;id;format;format-details,,,,,,<CR><LF> ENDSOURCETABLE<CR><LF> <CR><LF>
sourcetableはフリーのNtripCasterにブラウザでアクセスすると参照できます。
初期アクセスにおいてはmountpointは未知のはずなので、sourcetableを取得し最寄りのmountpointを調べそのmountpointのGNSSデータを取得する流れとなります。
ただ上記rtk2goのようなフリーのNtripCasterは実際の基準点をmountpointとして開放していますが、ネットワーク型RTKの商用サービスでは仮想基準点(VRS: Virtual Referrence Station)をmountpointとしていることが多いため、利用者が最寄りのmountpointを指定することができません。
この場合、HTTP Requestのbody部にNMEAフォーマットで自身の概略位置を設定することにより仮想基準点のGNSSデータを取得します。
GET /VRS HTTP/1.1<CR><LF> // Request-URIはVRSのmountpoint名 user-Agent: NTRIP<product/comment><CR><LF> Accept: */*<CR><LF> Connection: close<CR><LF> <CR><LF> $GPGGA, Time(UTC),,,, // NMEAフォーマットで自位置を指定 <CR><LF>
実装における注意点
- HTTP認証はBasic認証、Digest認証をサポートする
- ICY 200 OK受信後GNSSデータを継続して受信するが、必ずしも次パケットからGNSSデータ(バイナリデータ)のストリームが始まるわけではない。同一パケット内にストリームが含まれることもある。