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
- 数据传输: 数据流服务器、数据下载
- 程序调试: 调试与跟踪