文章目录
- Ntrip通讯协议1.0
- Ntrip是什么?Ntrip系统组成NtripServerNtripClient4.1 获取源列表4.2 获取差分数据
- 其他资料
Ntrip通讯协议1.0
Ntrip是什么?
NTRIP是在互联网上进行RTK数据传输的协议。所有的 RTK数据格式(NCT,RTCM,CMR,CMR+等等)都能被传输。
https://baike.baidu.com/item/NTRIP/9687306?fr=aladdin
CORS(Continuously Operating Reference Stations)就是网络基准站,通过网络收发GPS差分数据。用户访问CORS后,不用单独架设GPS基准站,即可实现GPS流动站的差分定位。
访问CORS系统,就需要网络通讯协议。NTRIP(.NETworked Transport of RTCM via Internet Protocol)是CORS系统的通讯协议之一。
问题:Ntrip协议由谁?在哪一年制定的?
问题:Ntrip和RTCM的关系?
Ntrip 协议是 RTCM 数据的网络传输协议。
注意:Ntrip是应用层协议
https://www.bbsmax.com/A/obzb8N4Q5E/
Ntrip系统组成
使用NTRIP通讯协议的CORS系统,其组成请参考下图
- 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流动站即可实现高精度的差分定位。
设备问题:F9P设备怎么产生差分数据?是模组产生RTCM电文、还是产生NEMA数据然后转化成RTCM?然后应用NtripServer服务通过Ntrip协议上报给Caster。
NtripServer
NTRAP通信通常通过HTTP/TCP/IP或RTSP/TCP/IP和RTP/UDP/IP连接进行。
问题:这里的示例是哪种方式?
NtripServer访问NtripCaster的步骤
1. 与NtripCaster建立TCP连接;
2. 给NtripCaster发送如下数据(↙表示rn即0DH和0AH)
上面的Mountpoint是挂载点名称,注意它前面的/不能省略。NtripServer可能有多个,挂载点用来区分它们。
上面的letmein是此挂载点对应的密码。没有密码,随便一个程序都能连上挂载点,整个系统就很容易受到恶意攻击。
"Source-Agent: NTRIP NtripServerCMD/1.0"这一行不是必需的。它说明了NtripServer的软件名称和版本号。这里的软件名称为NtripServerCMD,版本号为1.0。
3. NtripCaster给NtripServer的回复
挂载点、密码均有效,返回:
挂载点或密码无效,返回:
抓包实例:
4. NtripServer给NtripCaster发送差分数据
NtripCaster回复ICY 200 OK后,NtripServer就可以给NtripCaster发送差分数据了
NtripClient
NtripClient访问NtripCaster,一般有两个目的:获取源列表、获取差分数据。下面分别进行介绍。
4.1 获取源列表
多个NtripServer给NtripCaster发送差分数据,这样NtripCaster获得的差分数据就有多个。NtripClient在获取差分数据之前,需要知道差分数据有几个?分别是什么格式的?……这就需要获取源列表,获取步骤如下:
1. 与NtripCaster建立TCP连接;
2. 给NtripCaster发送如下数据:
"User-Agent: NTRIP GNSSInternetRadio/1.4.10"说明了NtripClient的软件名称和版本号。这里的软件名称为GNSSInternetRadio,版本号为1.4.10。
3. NtripCaster将返回如下数据,然后自动断开TCP连接
源列表数据以SOURCETABLE开头,以ENDSOURCETABLE结尾。
200 OK 表示一切正常。
"Server: NTRIP Trimble NTRIP Caster"是对NtripCaster软件的说明。
"Date: 02/Jun/2010:14:13:32 UTC"表示当前时刻。其格式并不固定,如:
以下内容就是源列表数据。"Content-Length: 441"表示源列表数据的字节数为441,含每行结尾的rn。
源列表数据中,一行表示一个挂载点。每行以分号分隔,其含义请见下表
序号 |
示例 |
说 明 |
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发送差分数据时分两种情况:
- 直接转发NtripSource产生的差分数据。在这种情况下,NtripClient只要指定挂载点即可;
- 通过解算多个NtripSource的差分数据,为NtripClient产生一个虚拟的基准站。在这种情况下,NtripClient不仅要指定挂载点,还要发送自身的坐标给NtripCaster,NtripCaster根据这个坐标才能产生虚拟基准站。
问题:设备配置千寻挂载点为AUTO就是使用虚拟基准站喽?
NtripClient给NtripCaster发送自身坐标,用到的就是NMEA里的GGA数据。上表的第12个数据说明了是否需要给NtripCaster发送GGA数据,0表示不需要,1表示需要。
4.2 获取差分数据
NtripClient获取差分数据的过程如下:
1.与NtripCaster建立TCP连接;
2.给NtripCaster发送如下命令
上面的RTCM23是挂载点名称。
VXNlcjpQd2Q=是用户名、密码的Base64编码,解码后就是User:Pwd。也就是说用户名为User、密码为Pwd,它们之间以冒号分隔。(basic认证)
3.NtripCaster的回复
如果用户名、密码、挂载点均有效,将返回如下数据:
200 OK 表示一切正常。注意:有的服务器只返回200 OK,其余数据行不返回;有的服务器返回的200 OK后面没有回车、换行。
如果用户名、密码、挂载点无效,将返回如下数据:
4.给NtripCaster发送GGA数据
GGA数据的示例如下
注意:
1)如上文所述,有的挂载点需要发送GGA数据,有的挂载点不需要发送GGA数据;
2)UTC时刻格式必须为hhmmss,如:80331是不行的,必须改为080331;
3)校验码必须正确。
5、NtripCaster收到GGA数据后,将给NtripClient发送差分数据。
其他资料
原文:Ntrip协议简介
http://blog.csdn.net/hanford/article/details/53025771
简单的NTRIP caster/client/server示例程序,支持NTRIP 1.0/2.0协议
https://Github.com/sevensx/ntrip
NTRIP 客户端
http://lefebure.com/software/ntripclient/
ntripbrowser 2.2.3
https://pypi.org/project/ntripbrowser/
linux ntripserver
https://gitee.com/duowei/ntripserverlinux/blob/master/NtripServerLinux.c
linux ntripcaster
https://blog.csdn.net/improve100/article/details/119909554