Ntrip協議簡介

Ntrip通訊協議1.0

什麼是Ntrip

CORS(Continuously Operating Reference Stations)就是網絡基準站,通過網絡收發GPS差分數據。用戶訪問CORS後,不用單獨架設GPS基準站,即可實現GPS流動站的差分定位。

訪問CORS系統,就需要網絡通訊協議。NTRIP( Networked Transport of RTCM via Internet Protocol)是CORS系統的通訊協議之一。

系統組成

使用NTRIP通訊協議的CORS系統,其組成請參考下圖

1 Ntrip系統組成

NtripSource        用來產生GPS差分數據,並把差分數據提交給NtripServer

NtripServer        負責把GPS差分數據提交給NtripCaster

NtripCaster        差分數據中心,負責接收、發送GPS差分數據

NtripClient        登錄NtripCaster後,NtripCasterGPS差分數據發送給它

NtripSource  NtripServer 一般已經集成到一臺GPS基準站內,GPS基準站產生差分數據(扮演着NtripSource的角色),然後再通過網絡發送給NtripCaster(扮演着NtripServer的角色)

NtripSource  NtripServer也可以分開:GPS基準站產生差分數據,然後通過串口發送給一個程序,這個程序再把差分數據發送給NtripCaster。這裏GPS基準站扮演着NtripSource的角色,程序扮演着NtripServer的角色。

NtripCaster一般就是一臺固定IP地址的服務器,它負責接收、發送差分數據。給NtripClient發送差分數據時有兩種方案:一是直接轉發NtripSource產生的差分數據;二是通過解算多個NtripSource的差分數據,爲NtripClient產生一個虛擬的基準站(即VRS)。

NtripClient一般就是GPS流動站。登錄NtripCaster後,發送自身的座標給NtripCasterNtripCaster選擇或產生差分數據,然後發送給NtripClient。這樣GPS流動站即可實現高精度的差分定位。

3 NtripServer

NtripServer訪問NtripCaster的步驟

1、與NtripCaster建立TCP連接;

2、給NtripCaster發送如下數據(↙表示\r\n0DH0AH):

SOURCE letmein /Mountpoint

Source-Agent: NTRIP NtripServerCMD/1.0

上面的Mountpoint是掛載點名稱,注意它前面的/不能省略。NtripServer可能有多個,掛載點用來區分它們。

上面的letmein是此掛載點對應的密碼。沒有密碼,隨便一個程序都能連上掛載點,整個系統就很容易受到惡意攻擊。

"Source-Agent: NTRIP NtripServerCMD/1.0"這一行不是必需的。它說明了NtripServer的軟件名稱和版本號。這裏的軟件名稱爲NtripServerCMD,版本號爲1.0

3NtripCasterNtripServer的回覆

掛載點、密碼均有效,返回:

ICY 200 OK

掛載點或密碼無效,返回:

ERROR - Bad Password

4NtripServerNtripCaster發送差分數據

NtripCaster回覆ICY 200 OK後,NtripServer就可以給NtripCaster發送差分數據了。

4 NtripClient

NtripClient訪問NtripCaster,一般有兩個目的:獲取源列表、獲取差分數據。下面分別進行介紹。

4.1 獲取源列表

多個NtripServerNtripCaster發送差分數據,這樣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

3NtripCaster將返回如下數據,然後自動斷開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,含每行結尾的\r\n

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) 

數據11秒輸出一次);數據310秒輸出一次)

6 

2

載波相位數據 0—無 1—單頻 2—雙頻

7 

GPS

導航系統,如:GPSGPS+GLOEGNOS

8 

SGNET

網絡

9 

CHN

國家

10 

31

緯度

11

121

經度

12 

1

是否需要發送NMEA0—不需要 1—需要

13 

1

基站類型:0—單基站 1—網絡

14 

SGCAN

產生此數據流的軟件名稱

15 

None

壓縮算法

16 

B

訪問保護 NNone BBasic DDigest

17 

N

Y/N

18 

0

比特率

19 

   

上文提到,NtripCasterNtripClient發送差分數據時分兩種情況:

1、直接轉發NtripSource產生的差分數據。在這種情況下,NtripClient只要指定掛載點即可;

2、通過解算多個NtripSource的差分數據,爲NtripClient產生一個虛擬的基準站。在這種情況下,NtripClient不僅要指定掛載點,還要發送自身的座標給NtripCasterNtripCaster根據這個座標才能產生虛擬基準站。

NtripClientNtripCaster發送自身座標,用到的就是NMEA裏的GGA數據。上表的第12個數據說明了是否需要給NtripCaster發送GGA數據,0表示不需要,1表示需要。

4.2 獲取差分數據

NtripClient獲取差分數據的過程如下:

1、與NtripCaster建立TCP連接;

2、給NtripCaster發送如下命令

GET /RTCM23 HTTP/1.0

User-Agent: NTRIP GNSSInternetRadio/1.4.10

Accept: */*

Connection: close

Authorization: Basic VXNlcjpQd2Q=

上面的RTCM23是掛載點名稱。

VXNlcjpQd2Q=是用戶名、密碼的Base64編碼,解碼後就是User:Pwd。也就是說用戶名爲User、密碼爲Pwd,它們之間以冒號分隔。

3NtripCaster的回覆

如果用戶名、密碼、掛載點均有效,將返回如下數據:

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數據;

2UTC時刻格式必須爲hhmmss,如:80331是不行的,必須改爲080331

3)校驗碼必須正確。

5NtripCaster收到GGA數據後,將給NtripClient發送差分數據。

轉載至:http://blog.csdn.net/hanford/article/details/53025771

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章