什么是Ntrip?Ntrip協議簡介
Ntrip通訊協議1.0
1什么是Ntrip?
CORS(Continuously Operating Reference Stations)就是網絡基準站,通過網絡收發GPS差分數據。用戶訪問CORS后,不用單獨架設GPS基準站,即可實現GPS流動站的差分定位。
訪問CORS系統,就需要網絡通訊協議。NTRIP( Networked Transport of RTCM via Internet Protocol)是CORS系統的通訊協議之一。
2系統組成
使用NTRIP通訊協議的CORS系統,其組成請參考下圖
圖1 Ntrip系統組成
NtripSource用來產生GPS差分數據,并把差分數據提交給NtripServer
NtripServer負責把GPS差分數據提交給NtripCaster
NtripCaster差分數據中心,負責接收、發送GPS差分數據
NtripClient登錄NtripCaster后,NtripCaster把GPS差分數據發送給它
NtripSource和NtripServer一般已經集成到一臺GPS基準站內,GPS基準站產生差分數據(扮演著NtripSource的角色),然后再通過網絡發送給NtripCaster(扮演著NtripServer的角色)
NtripSource和NtripServer也可以分開:GPS基準站產生差分數據,然后通過串口發送給一個程序,這個程序再把差分數據發送給NtripCaster。這里GPS基準站扮演著NtripSource的角色,程序扮演著NtripServer的角色。
NtripCaster一般就是一臺固定IP地址的服務器,它負責接收、發送差分數據。給NtripClient發送差分數據時有兩種方案:一是直接轉發NtripSource產生的差分數據;二是通過解算多個NtripSource的差分數據,為NtripClient產生一個虛擬的基準站(即VRS)。
NtripClient一般就是GPS流動站。登錄NtripCaster后,發送自身的坐標給NtripCaster。NtripCaster選擇或產生差分數據,然后發送給NtripClient。這樣GPS流動站即可實現高精度的差分定位。
3 NtripServer
NtripServer訪問NtripCaster的步驟
1、與NtripCaster建立TCP連接;
2、給NtripCaster發送如下數據(↙表示 即0DH和0AH):
SOURCE letmein /Mountpoint↙
Source-Agent: NTRIP NtripServerCMD/1.0↙
↙
上面的Mountpoint是掛載點名稱,注意它前面的/不能省略。NtripServer可能有多個,掛載點用來區分它們。
上面的letmein是此掛載點對應的密碼。沒有密碼,隨便一個程序都能連上掛載點,整個系統就很容易受到惡意攻擊。
"Source-Agent: NTRIP NtripServerCMD/1.0"這一行不是必需的。它說明了NtripServer的軟件名稱和版本號。這里的軟件名稱為NtripServerCMD,版本號為1.0。
3、NtripCaster給NtripServer的回復
掛載點、密碼均有效,返回:
ICY 200 OK↙
掛載點或密碼無效,返回:
ERROR - Bad Password↙
4、NtripServer給NtripCaster發送差分數據
NtripCaster回復ICY 200 OK后,NtripServer就可以給NtripCaster發送差分數據了。
4 NtripClient
NtripClient訪問NtripCaster,一般有兩個目的:獲取源列表、獲取差分數據。下面分別進行介紹。
4.1獲取源列表
多個NtripServer給NtripCaster發送差分數據,這樣NtripCaster獲得的差分數據就有多個。NtripClient在獲取差分數據之前,需要知道差分數據有幾個?分別是什么格式的?……這就需要獲取源列表,獲取步驟如下:
1、與NtripCaster建立TCP連接;
2、給NtripCaster發送如下數據:
GET / HTTP/1.0↙
User-Agent: NTRIP GNSSInternetRadio/1.4.10↙
Accept: */*↙
Connection: close↙
↙
"User-Agent: NTRIP GNSSInternetRadio/1.4.10"說明了NtripClient的軟件名稱和版本號。這里的軟件名稱為GNSSInternetRadio,版本號為1.4.10。
3、NtripCaster將返回如下數據,然后自動斷開TCP連接
SOURCETABLE 200 OK↙
Server: NTRIP Trimble NTRIP Caster↙
Content-Type: text/plain↙
Content-Length: 441↙
Date: 02/Jun/2010:14:13:32 UTC↙
↙
STR;RTCM23;RTCM23;RTCM 2.3;1(1),3(10),18(1),19(1);2;GPS;SGNET;CHN;31;121;1;1;SGCAN;None;B;N;0;;↙
STR;CMR;CMR;CMR;CMR;2;GPS;SGNET;CHN;31;121;1;1;SGCAN;None;B;N;0;;↙
STR;CMRP;CMRP;CMR+;CMR;2;GPS;SGNET;CHN;31;121;1;1;Trimble GPSNet;None;B;N;0;;↙
STR;DGPS;DGPS;RTCM 2.1;RTCM 2.1;2;GPS;SGNET;CHN;31;121;1;1;SGCAN;None;B;N;0;;↙
STR;RTCM3X;RTCM3X;RTCM 3.X;1004(1),1005/1007(5),PBS(10);2;GPS;SGNET;CHN;31;121;1;1;SGCAN;None;B;N;0;;↙
ENDSOURCETABLE↙
源列表數據以SOURCETABLE開頭,以ENDSOURCETABLE結尾。
200 OK表示一切正常。
"Server: NTRIP Trimble NTRIP Caster"是對NtripCaster軟件的說明。
"Date: 02/Jun/2010:14:13:32 UTC"表示當前時刻。其格式并不固定,如:
Date: Sun, 01 May 2016 08:40:39中國標準時間↙
以下內容就是源列表數據。"Content-Length: 441"表示源列表數據的字節數為441,含每行結尾的 。
STR;RTCM23;RTCM23;RTCM 2.3;1(1),3(10),18(1),19(1);2;GPS;SGNET;CHN;31;121;1;1;SGCAN;None;B;N;0;;↙
STR;CMR;CMR;CMR;CMR;2;GPS;SGNET;CHN;31;121;1;1;SGCAN;None;B;N;0;;↙
STR;CMRP;CMRP;CMR+;CMR;2;GPS;SGNET;CHN;31;121;1;1;Trimble GPSNet;None;B;N;0;;↙
STR;DGPS;DGPS;RTCM 2.1;RTCM 2.1;2;GPS;SGNET;CHN;31;121;1;1;SGCAN;None;B;N;0;;↙
STR;RTCM3X;RTCM3X;RTCM 3.X;1004(1),1005/1007(5),PBS(10);2;GPS;SGNET;CHN;31;121;1;1;SGCAN;None;B;N;0;;↙
源列表數據中,一行表示一個掛載點。每行以分號分隔,其含義請見下表
序號
示例
說明
1
STR
類型STR/CAS/NET,這里只對STR進行說明
2
RTCM23
掛載點(Mountpoint)
3
RTCM23
identifier
4
RTCM 2.3
差分數據格式
5
1(1),3(10)
數據1(1秒輸出一次);數據3(10秒輸出一次)
6
2
載波相位數據0—無1—單頻2—雙頻
7
GPS
導航系統,如:GPS、GPS+GLO、EGNOS
8
SGNET
網絡
9
CHN
國家
10
31
緯度
11
121
經度
12
1
是否需要發送NMEA。0—不需要1—需要
13
1
基站類型:0—單基站1—網絡
14
SGCAN
產生此數據流的軟件名稱
15
None
壓縮
16
B
訪問保護N—None B—Basic
D—Digest
17
N
Y/N
18
0
比特率
19
上文提到,NtripCaster給NtripClient發送差分數據時分兩種情況:
1、直接轉發NtripSource產生的差分數據。在這種情況下,NtripClient只要指定掛載點即可;
2、通過解算多個NtripSource的差分數據,為NtripClient產生一個虛擬的基準站。在這種情況下,NtripClient不僅要指定掛載點,還要發送自身的坐標給NtripCaster,NtripCaster根據這個坐標才能產生虛擬基準站。
NtripClient給NtripCaster發送自身坐標,用到的就是NMEA里的GGA數據。上表的第12個數據說明了是否需要給NtripCaster發送GGA數據,0表示不需要,1表示需要。
4.2獲取差分數據
NtripClient獲取差分數據的過程如下:
1、與NtripCaster建立TCP連接;
2、給NtripCaster發送如下命令
GET /RTCM23HTTP/1.0↙
User-Agent: NTRIP GNSSInternetRadio/1.4.10↙
Accept: */*↙
Connection: close↙
Authorization: BasicVXNlcjpQd2Q=↙
↙
上面的RTCM23是掛載點名稱。
VXNlcjpQd2Q=是用戶名、密碼的Base64編碼,解碼后就是User:Pwd。也就是說用戶名為User、密碼為Pwd,它們之間以冒號分隔。
3、NtripCaster的回復
如果用戶名、密碼、掛載點均有效,將返回如下數據:
ICY 200 OK↙
Server: Trimble-iGate/1.0↙
Date: Wed, 18 May 2016 07:20:55中國標準時間↙
↙
200 OK表示一切正常。注意:有的服務器只返回200 OK,其余數據行不返回;有的服務器返回的200
OK后面沒有回車、換行。
如果用戶名、密碼、掛載點無效,將返回如下數據:
HTTP/1.0 401 Unauthorized↙
4、給NtripCaster發送GGA數據
GGA數據的示例如下
$GPGGA,230331,3115.27393,N,12133.89226,E,1,09,1.0,19.31,M,1,M,,*7F↙
注意:
1)如上文所述,有的掛載點需要發送GGA數據,有的掛載點不需要發送GGA數據;
2)UTC時刻格式必須為hhmmss,如:80331是不行的,必須改為080331;
3)校驗碼必須正確。
5、NtripCaster收到GGA數據后,將給NtripClient發送差分數據。