GNSS定位原理
Published: 2020-01-13 | Lastmod: 2020-01-30
数据文件介绍 #
观测文件
观测文件记录了该观测站能够观测到的卫星及其对应的伪距、载波观测值。
01 9 4 9 40 0.0000000 0 7G 1G 4G 7G13G20G24G25
20532012.14648 20532011.55846 20532016.22546 107896448.4014 84075170.1284
-702.033 -547.047
21255524.69947 21255524.94445 21255529.02045 111698540.8774 87037834.1244
799.589 623.056
24648794.02245 24648792.88941 24648801.63741 129530300.6484 100932694.9344
-3425.352 -2669.144
21267718.45748 21267718.52445 21267722.00945 111762613.2534 87087766.9504
1911.882 1489.773
21900010.88847 21900009.74444 21900015.95344 115085325.1934 89676892.5064
-3011.439 -2346.579
23828505.41246 23828504.07842 23828511.81542 125219643.5474 97573763.5014
2743.177 2137.544
24104647.59546 24104646.97742 24104654.81342 126670763.8784 98704504.1444
-2800.638 -2182.275
导航文件
导航文件用来计算卫星在某一时刻的位置。
7 01 9 4 9 59 44.0 .394901260734D-03 .387672116631D-10 .000000000000D+00
.228000000000D+03 -.138750000000D+02 .543415492579D-08 -.101085380239D+01
-.417232513428D-06 .120551300934D-01 .368431210518D-05 .515375120926D+04
.208784000000D+06 .931322574615D-08 -.123603373253D+01 .264495611191D-06
.944765906161D+00 .300218750000D+03 -.199943296834D+01 -.870929134837D-08
-.653598653579D-10 .000000000000D+00 .113000000000D+04 .000000000000D+00
.200000000000D+01 .000000000000D+00 -.186264514923D-08 .228000000000D+03
.208799000000D+06
RTCM & Ntrip
RTCM标准定义了参考站与移动接收机之间的通信协议。根据这个协议,可以从一串二进制实时数据流中,解译出改正数据、参考站观测值等。 下面是一段rtcm v2.3的数据样例:
00000c00: 7f7f 5f4c 7654 7e47 404a 7f7f 5f63 645c .._LvT~G@J.._cd\
00000c10: 7c47 404d 7f7f 6f50 5e63 4178 7f5e 7f7f |G@M..oP^cAx.^..
00000c20: 5f76 5473 4278 7f59 7f7f 5f7c 6d74 7c47 _vTsBx.Y.._|mt|G
00000c30: 4078 4040 6058 4153 4378 7f51 7f7f 6f6a @x@@`XASCx.Q..oj
00000c40: 594b 4078 7f7d 4040 707e 7d6c 7f47 4054 YK@x.}@@p~}l.G@T
00000c50: 7f7f 4f60 730d 0a59 767c 7f6f 5b72 6c61 ..O`s..Yv|.o[rla
00000c60: 6a56 5e6a 7f63 7c6c 7370 7a51 6e68 6462 jV^j.c|lspzQnhdb
00000c70: 546e 535b 5d62 406f 7242 6353 6c40 4d7b TnS[]b@orBcSl@M{
00000c80: 7a5e 7647 6351 4c7f 6c43 5e73 7378 4c75 z^vGcQL.lC^ssxLu
00000c90: 535b 637b 7a55 7862 746c 7370 7454 5249 S[c{zUxbtlsptTRI
00000ca0: 4c57 5373 6c68 6f74 7863 7e55 4b50 6c70 LWSslhotxc~UKPlp
Ntrip表示"Networked Transport for RTCM via Internet Protocol"。 通过因特网,例如通过手机卡上网,连接CORS服务器,并按照Ntrip规定的格式,请求所需要的改正数据,服务器便发送一串二进制实时数据流过来。
GET /RTCM23 HTTP/1.0
User-Agent: NTRIP GNSSInternetRadio/1.4.10
Accept: */*
Connection: close
Authorization: Basic VXNlcjpQd2Q=
NMEA
NMEAS is a simple standard composed of a serial communication protocol and an ASCII messages, transmitted from a source to a series of destinies. 简而言之,NMEA就是一串文本格式的GPS定位结果等相关信息。
$GPGGA,230331,3115.27393,N,12133.89226,E,1,09,1.0,19.31,M,1,M,,*7F
其他文件
各种高精度的误差改正文件,结合误差模型,能够将误差的影响尽量削弱。 本文仅介绍到短基线RTK,对于长基线的RTK误差估计、精密单点定位PPP需要考虑的其他误差模型, 可参考Interfaces and Protocols。
观测方程 #
对于某一测站,已知测站到各个卫星的距离,各个卫星的坐标,待估参数为测站的坐标\(X\),与测站的时钟误差\(t\)。
单点定位
有如下关系:
\[ \begin{aligned} P_r^i &= \rho_r^i + I_r^i + T_r^i + ct_r + \epsilon_r^i \\ &=\sqrt{(x_r-x^s)^2+(y_r-y^s)^2+(z_r-z^s)^2} + I_r^i + T_r^i + ct_r + \epsilon_r^i \\ &=( \rho_{r,0}^i + \frac{\partial \rho_r^i}{\partial x_r}\Delta x_r ) + I_r^i + T_r^i + ( ct_{r,0} + c\Delta t_r ) + \epsilon_r^i \end{aligned} \]
经典单点定位精度在10m左右。
其中\(\rho_{r,0}^i\)为测站到第\(i\)颗卫星的近似距离,\(ct_{r,0}\)表示接收机钟差的近似值。
由于测站坐标位置、接收机钟差需要一个初值,用带有一个角标0
的符号表示,且存在待估计的小量改正数\(\Delta x_r\)与\(\Delta t_r\)。
\(I\)与\(T\)分别表示电离层、对流层的影响。\(\epsilon\)表示其它随机噪声。
\[ \begin{bmatrix} P_r^i -\rho_{r,0}^i -ct_{r,0} -I_r^i -T_r^i \end{bmatrix} = \begin{bmatrix} E_r^i & 1 \end{bmatrix} \begin{bmatrix} \Delta x_r \\ c\Delta t_r \end{bmatrix} \]
将多个卫星的观测数据累加在一起,用最小二乘,即可求解参数。
DGPS
当有参考站的情况下,可以使用DGPS技术提高定位精度。定位精度在1m左右。
参考站的坐标已知,\(\rho_b^i\)为精确量,也不存在\(\Delta x_b\),其观测方程可以写成如下形式:
\[ \begin{bmatrix} P_b^i -\rho_b^i -ct_{b,0} -I_b^i -T_b^i \end{bmatrix} = \begin{bmatrix} E_b^i & 1 \end{bmatrix} \begin{bmatrix} 0 \\ c\Delta t_b \end{bmatrix} \]
将两个方程组相减,实现站间单差。当参考站与流动站相聚较近时,电离层误差\(I\)、对流层误差\(T\)认为基本相等,可以消去。 从而得到单差观测方程:
\[ \begin{bmatrix} P_{rb}^i -\rho_{r,0}^i -\rho_b^i -ct_{rb,0} \end{bmatrix} = \begin{bmatrix} E_r^i & 1 \end{bmatrix} \begin{bmatrix} \Delta x_r \\ c\Delta t_{rb} \end{bmatrix} \]
选取第\(i\)颗卫星作为参考星,剩余所有卫星分别依次与第\(i\)颗卫星相减,实现星间差分,消除接收机钟差的影响,得到双差观测方程:
\[ \begin{bmatrix} P_{rb}^{ji} -\rho_{r,0}^{ji} -\rho_b^{ji} \end{bmatrix} = \begin{bmatrix} E_r^{ji} \end{bmatrix} \begin{bmatrix} \Delta x_r \end{bmatrix} \]
此时的卫星方程非常精简,大量的共同误差被消除,估计出来的测站坐标精度也比较高。 值得注意的是,对于双差观测方程,协方差矩阵是相关的。
RTK
载波是调试信号的正弦波,在接收机稳定跟踪卫星信号以后,能够给出正弦波变化的周数。 但前面一段正弦波信息无法获得,因此存在所谓的“整周模糊度”。其双差观测方程与伪距的双差观测方程基本相同,仅需要多估计一个模糊度参数。
\[ \begin{bmatrix} P_{rb}^{ji} -\rho_{r,0}^{ji} -\rho_b^{ji} \\ \Phi_{rb}^{ji} -\rho_{r,0}^{ji} -\rho_b^{ji} \end{bmatrix} = \begin{bmatrix} E_r^{ji} &0 \\ E_r^{ji} &\lambda \end{bmatrix} \begin{bmatrix} \Delta x_r \\ N_{rb}^{ji}\end{bmatrix} \]
当基线长度大于10km时,通过双差方程并不能完全消除电离层、对流层的影响, 此时需要考虑对参与量进行估计,或通过其他的观测值线性组合进行特殊处理,这里不再做具体介绍。
周跳探测
接收机跟踪信号过程中可能出现不稳定情况,导致出现丢失几次正弦波计数,称之为“周跳”。有多种手段进行周跳的检测。
TODO
模糊度解算
在得到模糊度参数的浮点解以后,需要将其还原成整数,再将整数解带入原始方程,实现测站坐标的cm级精度估计。
TODO
参考星选择与处理的小技巧
双差观测方程需要选择合适的参考星。在特殊情况下,参考星可能会突然消失,或者出现周跳等不稳定情况,所估计的双差模糊度也需要做特殊处理。
对观测方程做简单的变形,可以使得参考星的处理变得简洁清晰,程序设计更加简单。
TODO
开源软件及学习资源 #
几个官网要仔细逛逛,有很多资源:
IGS
UNAVCO
Navipedia
GPS Toolbox
不重复造轮子,在巨人的肩膀上走的更远。
T. Takasu教授写的两个开源软件,是很好的入门学习软件:
RTKLIB
GpsTools (GT): GPS/GNSS Precise Analysis Software
据说把这个软件搞懂就超神了:
GAMIT/GLOBK
Next: LOAM
Previous: Software Defined Receiver