小白如何学习GNSS(三)- 如何阅读rtklib源码

总览

和前两篇一样,都是画重点,而不会去解读代码,只会告诉你哪些代码需要阅读,而哪些可以稍后阅读,哪些基本不需要关注。

首先给一个总览,即 输入->处理->输出。

小白如何学习GNSS(三)- 如何阅读rtklib源码_第1张图片

输入的观测文件(o文件)和星历文件(p文件)都是rinex格式,建议初步了解该格式,网上也有一些介绍的博客,自行搜索。

更建议阅读rinex英文格式文档,因为经常用到,尤其是观测文件。

其他的配置文件以及rtklib的结果输出文件也建议了解,除了使用rtkplot画图分析外,也可以自定义输出格式,使用python或者matlab进行结果分析。

如果是动态的,则只能写相应的程序进行对比分析。

我在git上其实也上传了动态对比的一套简单的python对比工具,需要请后台回复 git,切换到mulfreq-spp分支,并拉取最新代码,工具在python文件夹下。

关于其他的,比如在rtkpos()函数之前的一些,观测数据读取,星历读取,以及一些为了支持多文件处理的缺省字段匹配的逻辑,个人不建议去阅读。

建议直接从rtkpos()函数开始进行阅读和调试,之前的在有需求之后再去阅读。

如果有精力,还是建议了解以下日志的打印和输出,因为需要用到这些信息进行算法迭代和调试。


下面是算法程序逻辑部分。

从rtkpos()或者relpos()函数开始,来阅读rtk算法相关代码。

首先我们肯定要知道要处理的观测值数据是如何存储的,另外关于如何使用星历和观测值计算得到卫星的位置和钟差,rtklib已经给计算好了,个人建议没有必要去阅读。

但是卫星位置和卫星钟的存储,需要明白是如何存储的。

需要使用时,知道去哪里获取,中间过程不需要关注。当你感觉rtklib计算出错时,再去了解中间过程。

除了卫星的轨道钟差信息,关于卫星的中间处理信息,rtklib大部分存储在rtk_t->stat数据结构中。

上个图中的.stat文件基本是该结构体的输出,可以用于问题排查和定位。个人建议可以对.stat文件进行可视化,即画成图,可以更加直观的了解每个卫星或者整个历元的处理状态。

另外就是kalman滤波的状态和协方差阵的存储。计算过程中的各种矩阵的计算与存储,需要搞明白。

小白如何学习GNSS(三)- 如何阅读rtklib源码_第2张图片

算法流程基本就是从上到下,一些简单的中间过程不需要关注,需要关注satpos的输入和输出。

不光是satpos,看其他函数时,也要关注这个函数的输入和输出是什么。

遗憾的是,除了一些主流程有详细的输入输出介绍,算法流程中的函数就需要自己去熟悉。

基本就是整个RTK的定位流程,数据预处理->计算残差->滤波->模糊度固定。

只是RTKLIB的数据预处理藏在了一些函数里,除了周跳探测比较系统外,其他的一些预处理,比如观测值高度角过滤,信噪比过滤,都在一些角落的函数里。

公众号

有时会将代码 或者资源放在个人公众号上,有问题,在公众号后台回复,也回答的比较快一些,欢迎关注 GNSS和自动驾驶

其他相关文章链接汇总

小白如何学习GNSS(一)_梧桐Fighting的博客-CSDN博客

小白如何学习GNSS(二)_梧桐Fighting的博客-CSDN博客

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