RTKLIB源码阅读笔记(一)     DATE: 2020-03-15 11:16

“读一份好源码,就是和许多智慧的人谈话“。
本文记录了几位笔者学习 RTKLIB 开源软件,与同学交流探讨,获得的一些初步经验和心得。如果你对卫星导航定位有兴趣,需要用到相关技术,这篇文章正好就是你的菜。
全文约6900字,含9副图和2个表格,阅读时间大约20分钟。

RTKLIB简单介绍

RTKLIB是日本东京海洋科技大学(Tokyo University of Marine Science and Technology)高须知二(Tomoji Takasu)采用C/C++语言开发的,开源用户端高精度GNSS数据处理软件。提供从标准单点定位、精密单点定位、伪距差分定位到高精度双差相对定位,丰富的数据处理功能。支持实时和事后处理模式。支持GPS、GLONASS、GALILEO、BEIDOU、QZSS、IRNSS等导航卫星系统和常用的 RINEX 2、3 等文件格式。在定位程序之外,还提供了用于观测值和星历下载的rtkget,对观测数据和解算结果进行绘图显示的rtkplot程序等。
RTKLIB源码 高精度定位算法RTKLIB
软件代码同时托管在 RTKLIB 官网和GitHub上,当前正式版为2013年4月发布的v2.4.2,最近一次发布p13补丁的时间为2018年1月。当前最新开发版为v2.4.3 beta 32,更新时间为2019年5月。
RTKLIB 功能强大而且完善,提供了从数据读写、观测值预处理、误差改正,到定位解算、结果分析的一整套GNSS精密定位领域主流和常用的算法实现。算法稳健可靠,代码风格统一、可读性高、模块化强、容易扩展。除了提供所有源代码、Windows平台编译生成的可执行文件外,还附带一份详细的180页的英文说明手册,对程序功能、如何使用,及算法基本原理都做了详细的介绍。
正因为如此,从一推出开始,RTKLIB就受到了国内外学生和研究人员的广泛关注。多年前笔者刚读研时,博士师兄 YXW 介绍了该软件给我。直到现在,当有师弟师妹求推荐PPP,或是相对定位方向的开源代码时,周围不少老师、师兄(还有我)首先推荐的就是RTKLIB。
RTKLIB源码 RTKlib高精度定位算法
在公开可获取的资料中,笔者已知有以下的网站、服务、软件、论文参考或致谢了RTKLIB:
【网站】
http://rtkexplorer.com/ (Exploring high precision GPS/GNSS with low-cost hardware and software solutions)
【软件】
[1] GAMP 软件,基于RTKLIB二次开发;
[2] PRIDE-PPPAR软件,使用了rnx2rtkp可执行程序计算测站初值坐标;
[3] pppwizard软件 (http://www.ppp-wizard.net/package.html);
[4] ignav (integrated navigation for ins and gnss, https://github.com/Erensu/ignav)
【学位论文】
[1] 范姜士彥 (2016) 使用開源軟體RTKLIB探討GPS連續站地球科學應用案例[D]. 國立中正大學,台湾,嘉义;
[2] 李盼 (2016) GNSS精密单点定位模糊度快速固定技术和方法研究[D]. 武汉大学,湖北,武汉;
[3] 刘帅 (2017) 模糊度固定解PPP+INS紧组合理论与方法[D]. 解放军信息工程大学,河南,郑州;
[4] Paulo Sérgio de Oliveira Junior (2017) Definition and implementation of a new service for precise GNSS positioning [D]. Universidade Estadual Paulista, France;
此外,据笔者了解,有不少同学站在巨人的肩膀上,对 RTKLIB 做了深度的私人订制,实现了:大气延迟(对流层/电离层)的提取、建模;GNSS+INS组合;事后LSQ模式PPP;PPP模糊度固定;精密卫星钟差估计;DCB、UPD等BIAS产品的估计等等。
RTKLIB源码 RTKlib高精度定位算法
另外值得一提的是,RTKLIB并非是高须知二唯一的开源软件。2006-2009年期间,高须同时开源了基于MATLAB开发的GPS/GNSS精密分析软件包GpsTools (GT) 和RTKLIB。GT支持用户端单站PPP,也支持多基站网解,更主要面向服务端数据处理,支持GPS精密定轨和钟差估计!!并达到了较高的精度。源码里附带的一些c文件和函数和RTKLIB的较为接近。不过有geograv_e.c, satorbit.c, satorbit_e.c, satorbit_s.c, shadowfunc.c, shadowfunc_e.c 这6个文件未开源,仅提供二进制文件。2009年,GT发布了最后一个版本0.6.4后,作者开源的重点便转向了RTKLIB,去掉了服务端数据处理功能,专门针对用户端的PPP/RTK数据处理。

《待续》