APP下载

RTKLIB 软件结构及调用方法

2020-08-25陶庭叶陶征广

导航定位学报 2020年4期
关键词:单点调用接收机

丁 鑫,陶庭叶,陶征广,何 蓉

(合肥工业大学 土木与水利工程学院,合肥 230009)

0 引言

近年 20 年来,全球卫星导航系统(global navigation satellite system, GNSS)发展迅速,其应用也越来越广泛。要想实现高精度导航定位功能,高精度导航定位软件是不可或缺的一部分。然而,现有的高精度导航定位软件分为科研型和商业型2 种,后者代码不开源,不利于学习、交流和使用,为了解决这一问题,RTKLIB 软件开始进行开源发布并不断更新,它是 1 个使用 GNSS 进行标准和精密定位的开源程序包,由1 个可移植的程序库和使用该库的命令用户界面(command user interface,CUI)和图形用户界面(graphical user interface, GUI)应用程序组成[1]。对于从事 GNSS 研究的人员来说,RTKLIB 是重要的学习资料,然而对于初学者来说,面临的问题是入门难度较大。为了帮助初学者理解、学习和使用该软件,本文首先介绍了RTKLIB 软件各版本的关键信息以及与RTKLIB 有关的研究现状,然后以RTKLIB 2.4.2 的RTKPOST为例,阐述了软件结构和调用方法,同时也将调用软件的标准单点定位解算结果与 RTKLIB 软件和gLAB(GNSS-Lab tool suite)软件的标准单点定位解算结果进行对比分析。

1 软件结构

1.1 软件版本及研究现状

RTKLIB 在开源之前有4 个版本,其中V.0.0.0(2006 年 4 月)为第 1 个版本的实时动态差分(real-time kinematic, RTK)程序,使用C 语言编写;V.1.0.0(2007 年1 月)是1 个简单的后处理应用程序;V.1.1.0(2007 年 3 月),添加了 Windows 图形用户界面应用程序;V.2.1.0(2008 年7 月),添加了一些应用程序,支持中程距离的 RTK 解算。RTKLIB 在开源发布以后,也已经有了多个版本的更新,其中 V.2.2.0(2009 年 1 月),添加了实时应用程序,支持通过互联网进行国际海运事业无线电技术委员会(Radio Technical Commission for Maritime Services, RTCM) 网络传输的协议(networked transport of RTCM via internet protocol,NTRIP);V.2.2.1(2009 年 5 月),RTCM 及网络 RTK(network RTK, NRTK);V.2.2.2(2009 年 9 月),修复了多个程序缺陷(bug),提供英文手册;V.2.3.0(2009 年12 月),支持格洛纳斯卫星导航系统(global navigation satellite system, GLONASS)数据;V.2.4.0(2010 年8 月),对于实时和后处理,都增加了精密单点定位动态(precise point positioning kinematic,PPP-Kinematic)模式和 PPP 静态(PPP-Static)模式,自动通过FTP 下载精确的星历表以支持长基线RTK;V.2.4.1 (2011 年6 月),支持日本准天顶卫星系统(quasi-zenith satellite system, QZSS)的数据;V.2.4.2 (2013 年 4 月),支持伽利略卫星导航系统(Galileo navigation satellite system, Galileo)和北斗卫星导航系统(BeiDou navigation satellite system,BDS)的数据、PPP 整周模糊度解,但是Windows应用程序的构建环境从 Turbo C++更改为 C++Builder XE2 或XE3,不再支持Turbo C++。最新版本的RTKLIB 需要从GitHub 上下载,其中ver.2.4.2 pXX 是稳定版本,ver.2.4.3 bXX 是开发或beta 版本。

目前,国内外的研究者对于RTKLIB 的研究主要集中在以下3 个方面:

1)分析评估[2-5]。通过与同类软件的实验分析对比,评估RTKLIB 的定位性能,如文献[2]选取了在全球范围内分布的76 个国际GNSS 服务组织(International GNSS Service, IGS)观测站的数据,采用RTKLIB、gLAB 和G-Nut 这3 款开源精密单点定位软件进行静态模拟动态 PPP 解算,将不同软件解算的对流层延迟和坐标与 IGS 提供的参考值进行比较,评估其对流层解算精度、收敛时间以及收敛后的坐标解算精度的差异;文献[4]利用RTKLIB 进行静态精密单点定位数据处理,采用事后、快速、超快速3 种星历及钟差产品对某IGS 站单天观测值进行解算,并将处理结果和准确值进行对比;文献[5]对比分析了RTKLIB 在不同星历产品、不同滤波方式、不同观测时间条件下的静态单点定位精度优劣,提出事后精密星历结合组合滤波方法,并给出 RTKLIB 静态精密单点定位的更优解算策略。

2)功能改进[6-7]。在RTKLIB 源代码的基础上,进行2 次开发,改进现有功能,以便满足具体的科学研究和工程应用,如文献[6]开发了 1 款新的GNSS 分析软件(GNSS analysis software for multiconstellation and multi-frequency precise positioning,GAMP),它虽然是基于RTKLIB 的 2 次开发,但是具有许多改进,比如周跳探测、接收机时钟跳变修复和 GLONASS 伪距频率间偏差处理等,可以基于非差、非组合观测值实现多 GNSS 的精密单点定位;文献[7]提出利用对流层延迟模型 UNB3替代 RTKLIB 软件中现有的 Saastamoinen 模型,以提高对流层延迟的计算精度。

3)扩展应用。利用RTKLIB 的数据解算功能,将 RTKLIB 应用到相关的科学研究和工程实践中去[8-12],如文献[8]根据 GNSS 数据预处理软件(translation, editing and quality checking, TEQC)和RTKLIB 软件在全球定位系统(global positioning system, GPS)观测数据质量检核方面的功能各有优势和不足的特点,将 TEQC 与 RTKLIB 软件 2 者结合起来应用,对 GPS 观测数据进行全面、直观的分析;文献[12]将RTKLIB 应用到开发低成本接收机的工作中去,并获得较好的定位性能。

1.2 软件结构

本文将以 RTKLIB 2.4.2 中的后处理程序RTKPOST 为例来叙述其软件结构。RTKPOST 目前支持 9 种定位模式[13],分别是 Single、DGPS/DGNSS、Kinematic、Static、Moving-Base、Fixed、PPP Kinematic、PPP Static、PPP Fixed,不同的定位模式适用的范围也不相同,如表1 所示,表1 中的SBAS 表示星基增强系统。

表1 RTKPOST 定位模式

在 RTKPOST 中,postpos 函数的功能是进行后处理定位,图1~图3 展示了postpos 函数中的函数调用关系。

图1 postpos 函数调用关系

图1 表示 postpos 函数主要分为3 个部分:第1 部分是打开处理测段,包括读取卫星天线参数、读取接收机天线参数、读取不同类型码观测量硬件延迟偏差(differential code bias,DCB)参数、读取电离层数据文件、打开大地水准面数据、读取地球自转参数(Earth rotation parameter,ERP)数据;第2 部分是基准站处理,包括读取精密星历等、流动站处理(a)、释放精密星历等;第3 部分是关闭处理测段,包括关闭大地水准面数据、关闭解状态文件。

流动站处理(a)过程如图 2 所示,包括调用execses 函数,执行处理测段,具体包括读取观测值和导航数据、设置天线参数、读取海洋潮汐荷载参数、获取流动站/参考站的固定位置、打开解状态文件、写文件头到输出文件、打开输出文件追加内容,处理定位(b)(或者处理定位(b),打开输出文件追加内容,组合前向/后向解)、释放观测值和导航数据等函数。

图2 流动站处理过程

处理定位(b)过程如图3 所示,包括初始化RTK结构体、输入观测值数据、精密定位、输出解到输出文件、释放RTK 结构体。

图3 处理定位过程

在处理定位中,首先要输入 1 个历元的观测值,然后调用rtkpos 函数进行精密定位。该函数主要包括标准单点定位 pntpos (c)、精密单点定位pppos (d)、相对定位relpos (e),其中:pntpos 函数计算接收机的位置、速度、钟偏差;pppos 函数利用1 台接收机获取高精度的定位结果;relpos 函数将2 台接收机的同步观测值进行组合处理,获取1 台接收机相对于另1 台接收机的坐标和速度。

标准单点定位pntpos 函数(c),如图4 所示,适用于Single 定位模式。

图4 单点定位pntpos

图4 中:satposs 计算卫星位置、速度、钟偏差;estpos 使用伪距观测值估计接收机位置;estvel 使用多普勒频移观测值估计接收机速度。

精密单点定位 pppos 函数(d),如图 5 所示,适用于 PPP Kinematic、PPP Static、PPP Fixed 3 种定位模式。其中:satposs 计算卫星的位置和钟偏差;res_ppp 计算相位和码残差;filter 利用卡尔曼滤波进行状态更新;pppamb 用于解算整周模糊度。

图5 精密单点定位pppos

相对定位 relpos 函数(e),如图 6 所示,适用于 DGPS/DGNSS、Kinematic、Static、Moving-Base、Fixed 5 种模式。

图6 相对定位relpos

图6 中:satposs 计算卫星位置和钟偏差;zdres计算流动站或基准站的非差残差项;udstate 实时更新状态;ddres 计算双差残差项;filter 利用卡尔曼滤波进行状态更新;resamb_LAMBDA 估计整周模糊度解。若定位模式是Moving-Base,则除了使用标准单点定位估计流动站的位置/速度外,还需要使用标准单点定位估计基准站的位置/速度。

2 软件调用及结果分析

2.1 调用方法

本文将按照图7 所示的方法步骤调用、优化并修改 RTKLIB 源代码,实现 Single 模式下的标准单点定位功能,最终形成1 款软件(以下简称“调用软件”)。

图7 函数调用方法

具体地说:首先调用 RTKLIB 源代码,在VS2013 环境下重新编译RTKLIB,并调用postpos函数;然后优化参数,包括重新设置文件选项、处理选项和解选项,以达到较好的解算效果,其中,文件选项包括卫星/接收机天线相位中心变化文件、卫星位置文件、大地水准面数据文件、电离层文件、地球定向参数文件、不同类型码观测量硬件延迟偏差文件、海洋潮汐荷载系数文件等,处理选项包括定位模式、使用的载波频率数、解类型(滤波器类型)、接收机动力学模型、地球潮汐改正、使用的导航卫星系统、截止高度角、卫星星历/钟差、模糊度解模式、GLONASS 模糊度解模式、最小固定计数、最小锁定计数、电离层选项、对流层选项、定位选项、滤波器迭代次数、插入参考站观测值、星基增强系统(satellite-based augmentation system,SBAS)卫星选择、码/相位误差比值、测量值误差因子、过程噪声标准差、卫星钟稳定度、模糊度解验证阈值、几何精度衰减因子(geometric dilution of precision,GDOP)拒绝阈值、基线长度约束、与接收机无关的交换格式 (receiver independent exchange format,RINEX)选项等,解选项包括解格式、时间系统、时间格式、小数点后时间数字的位数、纬度/经度格式、输出文件头、输出处理选项、参考基准面、高程、大地水准面模型、静态解模式、解统计级别、调试跟踪级别等;最后修改源代码,包括修改estpos 函数,使其能够根据伪距残差的大小变化适当增加或减少迭代次数,而不是执行最大迭代次数,新增ScreenSolution 和InsertSolution 函数,其中ScreenSolution 函数主要根据有效卫星数量ns、位置方差-协方差阵的6 个元素qr[0]~qr[5]和龄差 age 的数值,并利用动态确定的阈值来筛选有效解,而 InsertSolution 函数将满足筛选条件的解算结果输入到SQL Server 数据库中,便于后续的计算、处理和分析工作。

图8 调用软件界面

调用软件实现单点定位的界面如图8 所示。其中主菜单栏有 3 项内容,分别为文件、功能和帮助,如图9 所示。

图9 主菜单栏介绍

2.2 结果分析

目前,广泛使用的开源软件有RTKLIB、G-Nut和gLAB,且已有相关文献对其定位性能进行了初步分析[2-5,14-15],其中 gLAB 由西班牙加泰罗尼亚科技大学天文与测量研究组联合开发,界面友好、解算结果稳定可靠,并且可以方便地在Linux 和Windows 操作系统上运行。为了验证调用软件的定位性能,本文还使用了 RTKLIB 软件和 gLAB 软件进行标准单点定位解算,并将 3 种软件的解算结果进行对比分析。随机地选取全球范围内2019 年9 月 1 日(年积日第 244 天)BJFS、HKSL、INVK等16 个IGS 跟踪站的观测数据进行解算,以IGS站周解坐标为参考,分别将调用软件、RTKLIB 软件和gLAB 软件解算的坐标与其求差,得到坐标分量(X、Y、Z)方向的误差,进一步地定量分析定位结果,统计不同IGS 站坐标分量(X、Y、Z)方向的误差序列的均方根(root mean square,RMS)值,如表2 所示。

表2 不同IGS 站坐标分量(X,Y,Z)方向的误差序列RMS 值

图10~图12 分别表示3 种软件解算坐标分量X、Y、Z方向的误差序列。由图 10~图 12 可知,在X方向上,调用软件和RTKLIB 软件相比,除了NKLG 站外,其他各站的调用软件解算精度均优于RTKLIB 软件或者2 者相差不大,调用软件和gLAB 软件相比,除了ABPO 站外,其他各站的调用软件解算精度均优于gLAB 软件或者2 者相差不大,RTKLIB 软件和 gLAB 软件相比,除了 ABPO 和 ALBH 站外,其他各站的 RTKLIB 软件解算精度优于gLAB 软件或者2 者相差不大;在Y方向上,调用软件和RTKLIB 软件相比,除了HLFX 站外,其他各站的调用软件解算精度均优于RTKLIB 软件或者2 者相差不大,调用软件和gLAB 软件相比,除了ABPO 站外,其他各站的调用软件解算精度均优于gLAB 软件或者2 者相差不大,RTKLIB 软件和gLAB 软件相比,除了 HKSL、ABPO、ALBH 和 CHUR 站外,其他各站的RTKLIB 软件解算精度均优于 gLAB 软件或者 2 者相差不大;在Z方向上,调用软件和RTKLIB 软件相比,所有站的调用软件解算精度都优于RTKLIB 软件,调用软件和gLAB 软件相比,除了PRDS、CHUR 和 SASK 站外,其他各站的调用软件解算精度度都优于RTKLIB 软件或者2 者相差不大,gLAB 软件和 RTKLIB 软件相比,除了 BJFS、ABPO 和 KERG 站外,其他各站的gLAB 软件解算精度都优于RTKLIB 软件或者2 者相差不大。

图10 3 种软件解算坐标分量X 方向的误差序列

图11 3 种软件解算坐标分量Y 方向的误差序列

图12 3 种软件解算坐标分量Z 方向的误差序列

进一步统计出了不同软件解算坐标分量X、Y及Z方向的误差序列RMS 值的最小值、最大值和平均值,如表3 所示。从表3 可以看出:在X和Y方向上,调用软件的标准单点定位精度大约为0.930 1 和1.052 2 m,优于RTKLIB 软件的1.189 0和1.156 9 m,而RTKLIB 软件优于gLAB 软件的1.190 0 和1.338 5 m;在Z方向上,调用软件的标准单点定位精度大约为1.156 9 m,优于gLAB 软件的1.328 8 m,而gLAB 软件优于RTKLIB 软件的1.540 4 m,总体而言,以上3 款软件的标准单点定位解算结果均能达到米级的定位精度,其中调用软件在X、Y及Z方向上定位精度均优于RTKLIB 软件和 gLAB 软件。

表3 不同软件解算坐标分量X、Y 及Z 方向的误差序列RMS 值的统计信息 单位:m

3 结束语

RTKLIB 作为1 款利用C/C++混合编程的优秀免费开源GNSS 数据处理软件,功能强大、可视化程度较高,越来越多的研究人员开始了解、学习并使用RTKLIB。本文首先介绍了RTKLIB 各版本的关键信息以及与 RTKLIB 有关的研究情况,然后以 RTKLIB 2.4.2 的 RTKPOST 为例阐述了软件结构和调用方法,为初学者了解和掌握 RTKLIB 提供参考和借鉴,对于初学者具有重要参考意义。同时,也分析了调用软件的解算结果,选取16 个IGS跟踪站的数据对调用软件、RTKLIB 软件和gLAB软件解算出的坐标进行精度分析,结果表明,在标准单点定位模式下,X和Y方向解算精度,调用软件优是最优的,其次是RTKLIB 软件,最后是gLAB软件;Z方向解算精度,调用软件也是最优的,其次是gLAB 软件,最后是RTKLIB 软件。总体而言,在标准单点定位模式下,经过优化、修改后的调用软件,相对于RTKLIB 软件和gLAB 软件来说更加稳定、可靠,这也可为 RTKLIB 的应用提供参考。

猜你喜欢

单点调用接收机
低成本GNSS接收机监测应用精度分析
功率放大器技术结构及在雷达接收机中的应用
单点渐进无模成型的回弹特性
精密单点定位在网络RTK中的应用研究
GNSS接收机FLASHADC中比较器的设计
番禺油田某FPSO解脱与回接作业
基于频率引导的ESM/ELINT接收机的设计与实现
单点的梦想
基于Android Broadcast的短信安全监听系统的设计和实现
利用RFC技术实现SAP系统接口通信