什么是Ntrip?Ntrip协议简介
Ntrip通讯协议1.0
1什么是Ntrip?
CORS(Continuously Operating Reference Stations)就是(shi)网(wang)络基准(zhun)站(zhan),通过(guo)网(wang)络收发(fa)GPS差(cha)分数据。用户访(fang)问CORS后(hou),不用单独架设GPS基准(zhun)站(zhan),即可实(shi)现GPS流动站(zhan)的差(cha)分定位。
访问CORS系(xi)统,就需要网(wang)络通讯协议。NTRIP( Networked Transport of RTCM via Internet Protocol)是CORS系(xi)统的通讯协议之一。
2系统组成
使用(yong)NTRIP通(tong)讯(xun)协议的CORS系统,其(qi)组(zu)成请参考(kao)下图
图1 Ntrip系统组成
NtripSource用(yong)来(lai)产生(sheng)GPS差分(fen)数(shu)据,并把差分(fen)数(shu)据提(ti)交给NtripServer
NtripServer负(fu)责把GPS差(cha)分数(shu)据(ju)提交给NtripCaster
NtripCaster差(cha)(cha)分数据(ju)中心,负责(ze)接(jie)收、发送GPS差(cha)(cha)分数据(ju)
NtripClient登录NtripCaster后,NtripCaster把GPS差(cha)分(fen)数据发送给它
NtripSource和NtripServer一(yi)(yi)般已经(jing)集成到一(yi)(yi)台GPS基(ji)(ji)准站内,GPS基(ji)(ji)准站产生差分数据(扮演着NtripSource的角(jiao)(jiao)色),然后(hou)再通过网络发送给NtripCaster(扮演着NtripServer的角(jiao)(jiao)色)
NtripSource和(he)NtripServer也可以分开:GPS基准站(zhan)产生差分数据,然(ran)后通过串口发(fa)(fa)送给一(yi)个程(cheng)序,这个程(cheng)序再把差分数据发(fa)(fa)送给NtripCaster。这里GPS基准站(zhan)扮(ban)(ban)演(yan)着NtripSource的(de)角(jiao)色,程(cheng)序扮(ban)(ban)演(yan)着NtripServer的(de)角(jiao)色。
NtripCaster一(yi)(yi)般就是一(yi)(yi)台固定IP地址的(de)服务器,它负责接(jie)收、发(fa)送(song)差(cha)分数据。给NtripClient发(fa)送(song)差(cha)分数据时有两种方案:一(yi)(yi)是直(zhi)接(jie)转发(fa)NtripSource产生(sheng)的(de)差(cha)分数据;二是通过解(jie)算多个NtripSource的(de)差(cha)分数据,为NtripClient产生(sheng)一(yi)(yi)个虚拟的(de)基(ji)准站(即VRS)。
NtripClient一般就是GPS流动(dong)站(zhan)。登录NtripCaster后,发送自身的坐标给NtripCaster。NtripCaster选(xuan)择或产生(sheng)差分数据,然后发送给NtripClient。这样GPS流动(dong)站(zhan)即(ji)可实现高(gao)精度的差分定位。
3 NtripServer
NtripServer访问NtripCaster的步(bu)骤
1、与NtripCaster建立TCP连(lian)接;
2、给NtripCaster发(fa)送如下数据(↙表(biao)示 即0DH和0AH):
SOURCE letmein /Mountpoint↙
Source-Agent: NTRIP NtripServerCMD/1.0↙
↙
上面的Mountpoint是挂(gua)载(zai)点名称,注(zhu)意它前面的/不能(neng)省(sheng)略。NtripServer可能(neng)有多个,挂(gua)载(zai)点用来区分它们。
上(shang)面的(de)letmein是此挂载点(dian)对应(ying)的(de)密(mi)码。没有(you)密(mi)码,随便一个程序(xu)都(dou)能(neng)连上(shang)挂载点(dian),整(zheng)个系统就很容易受到恶意(yi)攻击。
"Source-Agent: NTRIP NtripServerCMD/1.0"这一行不是必需的。它说(shuo)明了NtripServer的软(ruan)件名称和版本号(hao)。这里的软(ruan)件名称为NtripServerCMD,版本号(hao)为1.0。
3、NtripCaster给NtripServer的回复
挂(gua)载(zai)点、密码均(jun)有效,返回:
ICY 200 OK↙
挂载点或密码(ma)无效,返回:
ERROR - Bad Password↙
4、NtripServer给NtripCaster发(fa)送(song)差分数据
NtripCaster回复ICY 200 OK后,NtripServer就可以(yi)给NtripCaster发送差分数据了。
4 NtripClient
NtripClient访(fang)问NtripCaster,一般有两个目的:获取(qu)源(yuan)列(lie)表、获取(qu)差分数据。下面分别(bie)进行(xing)介绍。
4.1获(huo)取源列(lie)表(biao)
多个(ge)NtripServer给NtripCaster发送差分(fen)数(shu)据,这样NtripCaster获(huo)(huo)得的(de)差分(fen)数(shu)据就有(you)多个(ge)。NtripClient在获(huo)(huo)取差分(fen)数(shu)据之前,需(xu)要(yao)知(zhi)道(dao)差分(fen)数(shu)据有(you)几个(ge)?分(fen)别是什么(me)格(ge)式的(de)?……这就需(xu)要(yao)获(huo)(huo)取源(yuan)列表(biao),获(huo)(huo)取步骤如下:
1、与NtripCaster建立TCP连接(jie);
2、给NtripCaster发送如(ru)下(xia)数(shu)据:
GET / HTTP/1.0↙
User-Agent: NTRIP GNSSInternetRadio/1.4.10↙
Accept: */*↙
Connection: close↙
↙
"User-Agent: NTRIP GNSSInternetRadio/1.4.10"说明(ming)了(le)NtripClient的软(ruan)件名称(cheng)和版本号。这里的软(ruan)件名称(cheng)为GNSSInternetRadio,版本号为1.4.10。
3、NtripCaster将返(fan)回如下数据,然(ran)后自动断开(kai)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↙
源列表(biao)数(shu)据以SOURCETABLE开头,以ENDSOURCETABLE结(jie)尾(wei)。
200 OK表(biao)示一切正常。
"Server: NTRIP Trimble NTRIP Caster"是对(dui)NtripCaster软件的说明。
"Date: 02/Jun/2010:14:13:32 UTC"表示当前时(shi)刻(ke)。其格(ge)式(shi)并不固(gu)定,如:
Date: Sun, 01 May 2016 08:40:39中国标(biao)准时间↙
以下内容就是源列表(biao)(biao)(biao)数(shu)据。"Content-Length: 441"表(biao)(biao)(biao)示源列表(biao)(biao)(biao)数(shu)据的字节数(shu)为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;;↙
源列表(biao)数(shu)据中,一(yi)行表(biao)示一(yi)个(ge)挂载点(dian)。每行以(yi)分号分隔,其含义请见下表(biao)
序(xu)号(hao)
示例
说(shuo)明
1
STR
类型STR/CAS/NET,这里只对STR进行说明(ming)
2
RTCM23
挂(gua)载(zai)点(dian)(Mountpoint)
3
RTCM23
identifier
4
RTCM 2.3
差分(fen)数据(ju)格式
5
1(1),3(10)
数(shu)据1(1秒输(shu)出一次);数(shu)据3(10秒输(shu)出一次)
6
2
载波相位数据0—无1—单频2—双频
7
GPS
导航系统,如:GPS、GPS+GLO、EGNOS
8
SGNET
网(wang)络
9
CHN
国(guo)家
10
31
纬(wei)度
11
121
经度
12
1
是(shi)否需要发送NMEA。0—不需要1—需要
13
1
基(ji)站类(lei)型:0—单基(ji)站1—网络(luo)
14
SGCAN
产生此数(shu)据流(liu)的软(ruan)件名(ming)称
15
None
压缩
16
B
访问保(bao)护N—None B—Basic
D—Digest
17
N
Y/N
18
0
比(bi)特率(lv)
19
上文(wen)提到(dao),NtripCaster给NtripClient发(fa)送(song)差分数据时分两种情况:
1、直接转发NtripSource产生的差分(fen)数(shu)据。在这种情况下,NtripClient只要(yao)指定挂载点(dian)即(ji)可;
2、通过解(jie)算多个NtripSource的差分数据,为NtripClient产(chan)生一个虚拟(ni)(ni)的基准(zhun)站。在这种(zhong)情(qing)况下,NtripClient不仅要(yao)指定挂载点,还要(yao)发送(song)自身(shen)的坐(zuo)标给NtripCaster,NtripCaster根据这个坐(zuo)标才能产(chan)生虚拟(ni)(ni)基准(zhun)站。
NtripClient给NtripCaster发送(song)自身(shen)坐标(biao),用到的(de)就(jiu)是NMEA里的(de)GGA数(shu)据(ju)。上(shang)表的(de)第12个(ge)数(shu)据(ju)说明了(le)是否需(xu)要(yao)给NtripCaster发送(song)GGA数(shu)据(ju),0表示(shi)不(bu)需(xu)要(yao),1表示(shi)需(xu)要(yao)。
4.2获(huo)取差分数据
NtripClient获取差(cha)分(fen)数据的过程如下(xia):
1、与NtripCaster建立(li)TCP连接;
2、给NtripCaster发(fa)送如下命(ming)令
GET /RTCM23HTTP/1.0↙
User-Agent: NTRIP GNSSInternetRadio/1.4.10↙
Accept: */*↙
Connection: close↙
Authorization: BasicVXNlcjpQd2Q=↙
↙
上面的(de)RTCM23是挂载点名称。
VXNlcjpQd2Q=是(shi)用户(hu)名、密码的Base64编码,解码后就是(shi)User:Pwd。也就(jiu)是说用户名(ming)为User、密码为Pwd,它们之间以(yi)冒号分隔。
3、NtripCaster的回复(fu)
如果用户(hu)名、密码(ma)、挂载点均(jun)有效,将返(fan)回如下数据:
ICY 200 OK↙
Server: Trimble-iGate/1.0↙
Date: Wed, 18 May 2016 07:20:55中国标准时间↙
↙
200 OK表示一切正常(chang)。注意:有(you)(you)的(de)服务器只(zhi)返(fan)回(hui)200 OK,其余数(shu)据行不返(fan)回(hui);有(you)(you)的(de)服务器返(fan)回(hui)的(de)200
OK后面没有回车、换行(xing)。
如(ru)果用户(hu)名、密码(ma)、挂载点无效,将返(fan)回如(ru)下数据:
HTTP/1.0 401 Unauthorized↙
4、给NtripCaster发送(song)GGA数据(ju)
GGA数据的(de)示例如下(xia)
$GPGGA,230331,3115.27393,N,12133.89226,E,1,09,1.0,19.31,M,1,M,,*7F↙
注意:
1)如(ru)上文所述,有(you)的挂载点(dian)需(xu)要发送GGA数(shu)据,有(you)的挂载点(dian)不需(xu)要发送GGA数(shu)据;
2)UTC时刻格(ge)式必(bi)须为hhmmss,如:80331是不行的,必(bi)须改为080331;
3)校验码必须正确(que)。
5、NtripCaster收到(dao)GGA数(shu)据(ju)后,将给(ji)NtripClient发送差分数(shu)据(ju)。