学习rtklib

数据下载

日期转换和一些常用数据下载

http://www.gnsscalendar.com/index.html?year=2019.

多系统精密星历和精密钟差下载

ftp://ftp.gfz-potsdam.de/GNSS/products/mgex/.

多系统广播星历下载

ftp://cddis.gsfc.nasa.gov/gps/data/campaign/mgex/daily/rinex3/.
注意:多系统是p文件,n文件只有GPS的星历

电离层下载

http://ftp.aiub.unibe.ch/CODE/2015/.
例如codg0750.15i意思是15年第75天的电离层

天线文件下载

ftp://ftp.igs.org/pub/station/general/pcv_archive/.

DCB下载

ftp://igs.ign.fr/pub/igs/products/mgex/dcb.
但是上面这个太新了,RTKLIB不支持直接读进去,所以一般就选择下面这个:
http://ftp.aiub.unibe.ch/CODE/2019/.

在Visual Studio下打开rtklib

导入源代码并编译

首先从https://github.com/tomojitakasu/RTKLIB下载RTKLIB的源码到一个路径下,我是选择了D:\Project\RTKLIB-master\RTKLIB-master下,然后进行D:\Project\RTKLIB-master\RTKLIB-master\app\rnx2rtkp\msc路径中,我是用Visual Studio2015打开msc.sln(用其他版本的Visual Studio应该也可以,比如2017和2019的,但是我没有尝试过),然后一些版本的问题连续点击确认后进入工程中。
这里有个问题是msc.sln有时候cannot load,先打开VS,然后从VS open project的成功率比较高点;如果提示说少一个vcxproj文件,就把别的版本里的vcxproj复制了一份过来,2.4.3版本的sln就能打开了。
碰到问题,在Debug模式下编译代码有三个错误,其中后面两个.c文件找不到是直接移除文件即可,前面的rtklib.h文件找不到通过下面的博客解决(因为解决了rtklib.h文件找不到的问题以后还有其他问题,就不从其他博客往这里搬运了)
https://blog.csdn.net/weixin_44126610/article/details/105009973.
还要增加ENA_GAL和ENA_CMP两个预编译头,在属性->C+±>预处理器->预处理器定义

配置使用命令

学习rtklib_第1张图片
右键上图msc的属性->配置属性->调试,设置工作目录为数据所在的目录。命令参数为
类似下面这样的
学习rtklib_第2张图片
-k 配置文件 -o 输出文件 -p 处理模式 观测值.o 广播星历.n 精密星历 .sp3 精密钟差.clk
具体参数的解释在rnx2rtkp.c中都有,
学习rtklib_第3张图片
-k后面是一个configuration file,里面有一些电离层、对流层、天线、潮汐等参数以及对应的参数文件
这些文件都可以参考这个博客的下载方式去下载
https://blog.csdn.net/rstaotao/article/details/96274662.
其中电离层的也可以到http://ftp.aiub.unibe.ch/CODE/2015/下载
codg0750.15i意思是15年第75天的电离层

DCB (Differential code bias, DCB )差分码偏差,主要有两种,即相同频率伪距信号C1与P1之间存在的偏差(C1-P1),以及不同频率P1与P2之间存在的偏差(P1-P2)。系统性偏差的存在使得采用不同对应观测进行参数解算时,得到的参数不具有一致性。为了使得解算得到的参数具有一致性,需要进行系统性偏差的估计或者补偿。具体意义看: http://blog.sciencenet.cn/blog-858128-1081047.html

geoid model是大地水准面模型,在rtklib中可以选择以下几种:
GEOID_EMBEDDED : embedded model(1x1deg)
GEOID_EGM96_M150 : EGM96 15x15"
GEOID_EGM2008_M25: EGM2008 2.5x2.5"
GEOID_EGM2008_M10: EGM2008 1.0x1.0"
GEOID_GSI2000_M15: GSI geoid 2000 1.0x1.5"
其中EGM96模型是美国推出的一种适用于全球范围,并综合利用现有全球大量重力数据所计算出来的高精度大地水准面模型。采用该模型可以解算全球任何一点的大地版水准面差距,其精度在美国本土50km的范围内权达厘米级。

海潮的模型简介见http://holt.oso.chalmers.se/loading/tidemodels.html
http://holt.oso.chalmers.se/loading/tidemodels.html
FES2004.BLQ海潮文件下载到
http://ftp.aiub.unibe.ch/BSWUSER52/STA/

用于解析IGS的erp文件,算极移,时差(or岁差?)等数据

EXTSTEC这个宏定义是做什么的?好像和电离层电子数有关
slant total electron content(STEC):斜电子含量
total electron content(TEC):总电子含量

PPP做模糊度固定需要星间差,做周跳探测做历元差,原因是构造检验量

代码细节

单点定位代码详解: https://www.cnblogs.com/taqikema/p/8819798.html.

像settspan(ts,te);这个函数没有实现的是怎么回事?

ppp.c中的pppos函数是精密单点定位的程序

RINEX文件类型

O文件是观测文件,N文件是星历文件,M文件是气象数据,G是GLONASS星历,H是同步卫星GPS载荷的导航电文,C是钟文件

使用u-center记录ubloxF9P的原始数据

打开u-center,在左上角Receiver中选择串口和波特率,我这里设置的是38400。然后在左上角的View,选择Configuration View,里面选择MSG,然后选择02-15是观测值,02-13是星历,打开UART1
学习rtklib_第4张图片
开始记录以后,得到一个.ubx文件,然后打开rtklib中的rtkconv文件,选择format为u-blox,然后选择观测值和星历输出即可
学习rtklib_第5张图片

代码运行无法使用伽利略和北斗数据的bug调试

https://github.com/tomojitakasu/RTKLIB/blob/rtklib_2.4.3/src/rtklib.h#L177
发现这两个宏我没有定义,所以代码解不出北斗和伽利略的数据。所以增加预定义器处理即可.
学习rtklib_第6张图片
另外,北斗的C1~C5以及C18的星是GEO卫星,精密轨道不太准,一般ppp不使用这几颗卫星。

同样代码无法输出.trace文件也是因为没有定义宏TRACE

使用rtkpost软件进行ppp和spp定位

rtkpost使用方法见下面这个博客。
https://blog.csdn.net/weixin_44986362/article/details/107715558.

ppp代码解读

ppp的代码流程主要函数有:
rnx2rtkp.c文件中的main函数,调用
postpos(后处理,在postpos.c中)->
execses_b(execute processing session for each base station 为每个基站执行处理会话)->
execses_r(为每个流动站执行处理会话)->
execses(这个函数里有/open debug trace/)->
procpos(ep_debug在这个函数中)->corr_phase_bias_fcb; corr_phase_bias_ssr(fcb模式和ssr模式有什么区别?);rtkpos-> (rtkpos是输入观测数据和导航信息,通过精确定位计算流动站位置)
pntpos(单点定位);
pppos(精密单点定位)->
udstate_ppp(ekf状态的时间更新):(udpos_ppp, udclk_ppp, udtrop_ppp, udiono_ppp, uddcb_ppp, udbias_ppp)
satposs(卫星位置和时钟)
tidedisp(地球自转改正)
ppp_res(prefit先验残差,这个函数比较关键)

使用ucenter进行RTK处理

首先电脑上安装ucenter
https://www.u-blox.com/en/product/u-center.
安装时一定要把驱动安装上,然后插上ublox,并且查看端口是对应哪个,下图就是COM6学习rtklib_第7张图片
在ucenter最上面的Receiver中选择对应的COM,比如这里是COM6。
选择之后在Receiver选择NTRIP Client,输入千寻的ip,端口以及账号,上面输入完要点一下Update source table。
学习rtklib_第8张图片
最后可以View->Text console看到输出的解的结果。也可以另外选择保存的手段把解保存下来。

你可能感兴趣的:(学习rtklib)