学习rtklib

数据下载

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

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

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

2021年10月25日更新:单GPS精密星历文件要在这里下载:
https://cddis.nasa.gov/archive/gnss/products/2087/.
多系统精密星历文件要在这里下载:
https://cddis.nasa.gov/archive/gnss/products/2218/.
https://cddis.nasa.gov/archive/gnss/products/mgex/2109/.
精密星历格式sp3a:
https://blog.csdn.net/liuci3234/article/details/21971241.
精密星历格式sp3c:
http://www.epncb.oma.be/ftp/data/format/sp3c.txt.

多系统广播星历下载

2021年10月24日更新:p文件要在这里下载:
https://cddis.nasa.gov/archive/gnss/data/campaign/mgex/daily/rinex3/2021/281/21p/.
上一个p文件是短名字类型的,并不是每天都有,如果没有的话就去下面这个网站找长名字的:
https://cddis.nasa.gov/archive/gnss/data/daily/2021/221/21p/.

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

电离层下载

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

天线文件下载

http://www.epncb.oma.be/ftp/station/general/old_calibrations/.
ftp://ftp.igs.org/pub/station/general/pcv_archive/.
http://ftp.aiub.unibe.ch/awg/.

DCB下载

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

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+±>预处理器->预处理器定义

配置使用命令

在这里插入图片描述
右键上图msc的属性->配置属性->调试,设置工作目录为数据所在的目录。命令参数为
类似下面这样的
在这里插入图片描述

-k 配置文件 -o 输出文件 -p 处理模式 观测值.o 广播星历.n 精密星历 .sp3 精密钟差.clk
具体参数的解释在rnx2rtkp.c中都有,
rnx2rtkp.c的参数意义
-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
在这里插入图片描述
开始记录以后,得到一个.ubx文件,然后打开rtklib中的rtkconv文件,选择format为u-blox,然后选择观测值和星历输出即可
在这里插入图片描述

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

https://github.com/tomojitakasu/RTKLIB/blob/rtklib_2.4.3/src/rtklib.h#L177
发现这两个宏我没有定义,所以代码解不出北斗和伽利略的数据。所以增加预定义器处理即可.
在这里插入图片描述
另外,北斗的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) udbias_ppp
satposs(卫星位置和时钟)
tidedisp(地球自转改正)
ppp_res(prefit先验残差,这个函数比较关键)

使用ucenter进行RTK处理

首先电脑上安装ucenter
https://www.u-blox.com/en/product/u-center.
安装时一定要把驱动安装上,然后插上ublox,并且查看端口是对应哪个,下图就是COM6
在这里插入图片描述

在ucenter最上面的Receiver中选择对应的COM,比如这里是COM6。
选择之后在Receiver选择NTRIP Client,输入千寻的ip,端口以及账号,上面输入完要点一下Update source table。
在这里插入图片描述

最后可以View->Text console看到输出的解的结果。也可以另外选择保存的手段把解保存下来。

RTKLIB输出大地水准面高程的时候,必须是以llh而不能以xyz形式输出,以xyz形式输出就不会改大地水准面和地球椭球面的差异了

用rtklib进行实时PPP

在windows下使用rtknavi进行实时PPP

首先需要在u-center下配置ublox-m8,把原始观测以及星历都播发出来。
具体操作是,View->Message View,在UBX下面把NAV->ORB,NAV->PVT,NAV->SAT,以及RXM下面的RXM->RAWX都打开。再打开rtknavi.exe,在右上角的Input
在这里插入图片描述
设置如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意选择ssr的时候要看是APC(天线相位中心)还是CoM(质心)

在Linux下使用rtkrcv进行实时PPP

下载最新版本(2.4.3)rtklib,进入到app->consappp->rtkrcv下面后,把rtkrcv.c中的#define ISTOPT对应语句改成:
#define ISTOPT “0:off,1:serial,2:file,3:tcpsvr,4:tcpcli,6:ntripcli,7:ftp,8:http”
在这里插入图片描述
否则会报下面的错误(也就是用ftp去连改正数服务器了):
在这里插入图片描述
然后进入gcc进行make,再输入一个正确的conf文件即可。

在ros下使用rtkrcv_ros进行实时PPP

看到一个开源的库,在rtkrcv2.4.2版本上进行ros接口的编写
https://gitee.com/smilejx001/rtkrcv_ros
但是目前运行如下
在这里插入图片描述
在预编译头这里,出现add_compile_definitions这个需要3.12以后的cmake才能支持的情况,但是ubuntu16.04的ros kinetic只能支持3.5的,即使我升级系统的cmake,但是ros编译的就是3.5cmake,所以catkin_make的时候仍旧说还只有3.5的cmake。于是只能用老版本的cmake指令,按照下面这样替换。
在这里插入图片描述

  • 12
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
RTKLib是一种基于GNSS(全球导航卫星系统)的实时运动定位库。它提供了一系列的工具和算法,用于处理GNSS观测数据,进行精确的实时或者后处理定位。下面是一个关于RTKLib学习笔记的概述: 1. RTKLib简介: - RTKLib是由Tomoji Takasu开发的开源软件库,用于实时运动定位和后处理。 - 它支持多种GNSS系统,包括GPS、GLONASS、Galileo、BeiDou等。 - RTKLib提供了一系列的功能模块,包括数据处理、定位算法和可视化工具等。 2. RTKLib的安装: - RTKLib可以从官方网站(http://www.rtklib.com)下载最新的源代码。 - 根据操作系统选择合适的编译工具(如GCC、MinGW等)进行编译。 - 编译完成后,可以得到可执行文件和相关的库文件。 3. RTKLib的数据处理: - RTKLib支持多种数据格式,包括RINEX、SP3、Nav等。 - 使用RTKConv工具可以将原始观测数据转换为RTKLib可识别的格式。 - 使用RTKPLOT工具可以对观测数据进行可视化分析。 4. RTKLib的定位算法: - RTKLib提供了多种定位算法,包括单点定位、差分定位和RTK(实时动态定位)等。 - 单点定位方法适用于无差分数据,可以得到相对较低的定位精度。 - 差分定位方法通过使用基站观测数据进行差分运算,提高了定位精度。 - RTK定位方法使用基站和移动站的观测数据,实现了高精度的实时定位。 5. RTKLib的应用: - RTKLib广泛应用于航空、测绘、农业、机器人等领域,用于精确的定位和导航。 - 它可以用于无人机、自动驾驶、精准农业等应用场景。 - RTKLib还支持多种操作系统,包括Windows、Linux和Android等。 以上是关于RTKLib学习笔记的基本概述。希望对你的学习有所帮助!如果你有更具体的问题,可以继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值