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