Skip to content

1.1 简介

RTKLIB是一个用于全球导航卫星系统(GNSS)标准定位和精密定位的开源项目,由日本东京海洋大学的高须知二(Tomoji Takasu)开发。它由一个核心程序库和多个命令行程序与界面程序组成。

1.1.1 RTKLIB组成

RTKLIB 界面程序包括以下内容,可以直接使用编译好的程序,也可以用作者提供的 Qt 和 C++ builder 两套界面程序的源码自己编译。

图1.1-1 RTKLAUNCH 主界面与应用程序图标

  • rtklaunch:界面程序启动器,界面如上,用来启动 RTKLIB 的主要 GUI 应用程序;
  • rtkget:下载 GNSS 数据,包括 OBS、EPH、ATX、CLK、DCB 等多种文件,可同时下载起止时间内多个机构、多个测站的数据,不过下载速度可能较慢;
  • rtkcov:GNSS 数据格式转换,把采集的接收机原始数据转成 RINEX;
  • rtkplot:原始数据绘图与解算结果绘图,可以用来进行原始数据质量分析、结果精度分析、结果轨迹绘图;
  • rtkpost:后处理定位解算,传入原始观测文件、星历文件和其它改正信息文件,设置好解算选项进行后处理操作;
  • rtknavi:实时定位解算,接通导航数据流,实时定位解算绘图;
  • strsvr:数据流的连接、转换与播发;
  • srctblbrows:NTRIP 资源列表浏览器。

命令行程序的功能和界面程序功能基本对应。界面程序便于使用,命令行程序代码则便于学习与二次开发;可以通过界面程序学软件的用法,理解程序运行逻辑。然后再通过阅读命令行程序的源码,来更深入地理解。命令行程序还有一个优点就是便于通过脚本进行批处理。

  • rnx2rtkp:后处理定位解算,功能类似 rtkpos。
  • rtkrcv:实时定位解算,功能类似 rtknavi。
  • str2str:数据流的连接、转换与播发,功能类似 strsvr。
  • convbin:数据格式转换,功能类似 rtkcov。
  • pos2kml:定位结果转谷歌地图数据格式。

1.1.2 支持的星座

RTKLIB支持GPS[1][2][3]、GLONASS[4]、Galileo[5]、QZSS[6]、北斗[7]和SBAS[8]等卫星导航系统。

1.1.3 定位模式

RTKLIB支持多种GNSS实时和后处理定位模式:

定位类别模式类型特点
伪距定位Single - 伪距单点定位单接收机定位,精度较低。
DGPS/DGNSS - 伪距差分参考站修正伪距,提高精度。
载波相位定位Kinematic - 载波动态相对定位(动态RTK)流动站动态定位,适合车载,需实时解模糊度。
Static - 载波静态相对定位(静态RTK)两站静止,高精度静态测量。
Static-Start - 静态固定后切换为动态(demo5自定义)先在静态状态下固定模糊度,而后动态定位,缩短首次固定时间。
Moving-Baseline - 双站均移动(双天线模式)双站移动,解算相对位置和姿态,适合定姿。
Fixed - 固定坐标定位已知坐标,解算模糊度、对流层等参数,非定位用途。
精密单点定位(PPP)PPP-Kinematic - 动态精密单点定位单站动态定位,使用精密轨道和钟差,适合移动场景。
PPP-Static - 静态精密单点定位单站静态定位,使用精密轨道和钟差,高精度静止测量。
PPP-Fixed - 固定坐标精密定位已知坐标,解算模糊度、对流层等参数,非定位用途。

1.1.4 应用方向

RTKLIB 可以初步实现以下功能,与商业软件相比,可靠性没那么高,但对于部分科研已经能够满足:

功能说明
静态短基线解算相对定位,例如将一个测站安装在比较稳定的地区,而将另一测站安装在目标区域进行变形监测。
动态后处理差分 PPK例如无人机遥感、倾斜摄影测量等,需要高精度的位置和姿态解算精度。
实时动态差分 RTK例如车载导航定位和室外机器人定位等。
精密单点定位 PPP可以用来解算基准站坐标,可以进行精密定轨、电离层对流层建模、时间传递。
实时精密单点定位 RT-PPP例如接收实时的精密卫星改正数,通过接收机数据进行实时单点定位。用途比较广泛,例如在海洋上,海啸的监测预警、海平面变化的监测、船只定位、海上石油平台作业等。

1.1.5 支持的格式与标准

RTKLIB支持多种GNSS标准格式和协议(详细信息参考附录D.1和D.2):

  • RINEX: RINEX 2.10 [9], 2.11 [10], 2.12 [11] OBS/NAV/GNAV/HNAV/LNAV/QNAV, RINEX 3.00 [12], 3.01 [13], 3.02 [14] OBS/NAV, RINEX 3.02 CLK [15]
  • RTCM: RTCM ver.2.3 [16], RTCM ver.3.1(修订1-5)[17],RTCM ver.3.2 [18]
  • 其他标准: BINEX [19], NTRIP 1.0 [20], NMEA 0183 [21], SP3-c [22], ANTEX 1.4 [23], IONEX 1.0 [24], NGS PCV[25]和EMS 2.0[26]

1.1.6 支持的私有格式

RTKLIB支持以下几种GNSS接收机的专有消息格式(详细信息参考附录D.2):

品牌支持型号
NovAtel [27]OEM4/V/6, OEM3, OEMStar, Superstar II
Hemisphere [28]Eclipse, Crescent
u-blox [29]LEA-4T/5T/6T
SkyTraq [30]S1315F
JAVAD [31]GRIL/GREIS
Furuno [32]GW-10-II/III
NVS [33]NV08C BINR

注意:上述表格仅列出了原始官方RTKLIB支持的部分品牌和型号,具体支持情况会因版本差异而有所不同,例如最新的demo5代码已经开始支持和芯星通Unicore的专有格式。

1.1.7 支持的通信方式

支持多种通信方式,用于接收机数据传输、差分定位、实时PPP以及数据记录和调试:

  • 串口: 接收机通过串口直接连接电脑,传输观测数据和星历数据。
  • TCP/IP: 通过网络接口实现数据传输。
  • NTRIP: 用于获取差分定位的基准站数据和实时PPP的SSR(状态空间表示)数据。
  • 本地日志文件:
    • 支持记录原始数据流到日志文件。
    • 支持日志文件回放,用于模拟实时数据流进行调试。
    • 可将日志文件转换为RINEX格式,从而进行后处理操作。
  • FTP/HTTP: 支持自动下载数据。

1.1.8 核心库函数

RTKLIB提供了许多库函数和API(应用程序接口):

  • 基础工具: 卫星和导航系统函数、矩阵运算函数、时间与字符串函数、坐标转换、平台相关函数、选项配置
  • 数学模型: 标准定位、精密定位、整周模糊度固定、星历与时钟函数、大气模型、天线模型、潮汐模型、大地水准面模型、大地基准转换、SBAS
  • 数据处理: 输入和输出函数、接收机原始数据处理、解函数(定位结果处理)、KML转换器
  • 协议支持: RINEX、RTCM、NMEA
  • 数据传输: 数据流服务器、数据下载
  • 程序调试: 调试与跟踪