RTKLIB开发文档.docx
- 文档编号:27901916
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:22
- 大小:367.60KB
RTKLIB开发文档.docx
《RTKLIB开发文档.docx》由会员分享,可在线阅读,更多相关《RTKLIB开发文档.docx(22页珍藏版)》请在冰豆网上搜索。
RTKLIB开发文档
软件开发文档
软件名称
RTKPOST
项目组成员
王会、刘琦
起止日期
2017年6月20日至2017年8月15日
1.项目论证
目标任务
根据比赛要求,经过小组讨论,我们选择了RTKLIB进行二次开发。
RKTLIB是全球导航卫星系统GNSS的标准&精密定位开源程序包,RKTLIB由日本东京海洋大学的高须知二开发。
RTKLIB主要功能有:
(1)支持多个GNSS系统的标准和精密定位算法,包括GPS,GLONASS,Beidou,Galileo,QZSS和SBAS。
(2)支持多种GNSS实时和后处理定位模式:
单点定位、DGPS/DGNSS,动态RTK、静态RTK、移动基站、PPP。
(3)支持多种GNSS标准格式和协议:
RINEX2.10、RINEX2.11、RINEX2.12、RINEX3.00、RINEX3.01、RINEX3.02、RTCM2.3、RTCM3.1、RTCM3.2、BINEX、NTRIP、NMEA0183、SP3、ANTEX1.4、IONEX1.0、NGSPCV、EMS2.0。
(4)支持多种GNSS接收机专有数据协议格式:
NovAtel:
OEM4/V/6,OEM3,OEMStar、SuperstarII、Hemisphere、Crescent、u‐blox:
LEA-4T/5T/6T、SkyTraq、JAVAD、GW10-II/III和NVS。
(5)支持外部通信:
Serial、TCP/IP、NTRIP、本地日志文件(记录和播发)和FTP/HTTP。
(6)提供许多函数库和API(applicationprograminterfaces):
卫星和导航系统函数、矩阵和向量函数,时间和字符串函数、坐标的转换,输入和输出函数、调试跟踪函数、平台依赖函数、定位模型、大气模型、天线模型、地球潮汐模型、大地水准面模型、基准转换、RINEX函数、星历和时钟函数、精密星历和时钟、接收机原始数据函数、RTCM函数,解算函数、流数据输入和输出函数、整周模糊度解算、标准定位、精密定位、后处理定位(解算)。
RTKLIB同样也有一些缺陷,RTKLIB在数据预处理(粗差探测),周跳探测方面的算法有些问题,RTKLIB的源代码并不支持北斗系统的解算。
同时,RTKLIB的框架过于过时,它的GUI是用的早期BorlandC++设计,无法满足跨平台需求,基于这些问题,我们小组经过讨论,决定对这些问题进行修复,改进单频解算算法,同时基于Qt5对GUI层进行重新设计。
项目背景及必要性
中国北斗卫星导航系统是中国自行研制的全球卫星导航系统。
是继美国GPS、俄罗斯GLONASS之后的第三个成熟的卫星导航系统。
目前北斗系统已具备覆盖亚太地区的定位、导航和授时以及短报文通信服务能力,预计2020年建成覆盖全球的北斗导航系统。
目前多数接收机并不存在单纯的使用GPS进行卫星定位,而是在支持GPS的基础上还加入了GLONASS以及北斗系统。
接收机在定位时可以同时使用这两大卫星定位系统,这样就可以在某个卫星定位发生问题时,使用另外一个系统进行定位。
或者在使用GPS进行定位的同时,再使用GLONASS或者北斗来进行辅助,以此来增强定位的速度及准确率。
另外,众多的个人或行业应用中,定位都成为一种必不可少的基础功能,个人用户的社交信息、行程足迹;行业中的车辆管理、物流监控等无不需要卫星定位功能。
RTK定位是北斗导航系统应用的一个重要方面,基于GPS的RTK算法已经十分成熟,
各种商业软件的推出也推动了GPSRTK算法的完善和发展。
此外由于北斗导航系统现在
已经有十几颗可用卫星,基于北斗系统的应用和研究也已经在全国乃至世界范围内展开,
所以在研究RTK的算法时,有必要考虑将BDS加入算法中去,基于BDS/GPS的RTK定
位算法研究及软件编制显得十分必要。
计划进展
表1.1计划进展
日期
说明
6月15日
明确任务以及了解整个比赛进度安排
6月16日至30日
在RTKLIB上加入DCB改正
7月01日至20日
在RTKLIB上加入单频周跳探测
7月21日至8月01日
在RTKLIB上加入数据预处理,修正周跳探测、添加载波平滑伪据、粗差探测
7月02日至8月05日
在RTKLIB上加入北斗系统,修正RTKLIB一些现存问题
8月06日至10日
对RTKLIB的GUI进行重写,并在Windows和Ubuntu上进行测试
8月11日至15日
数据测试,编写数据精度报告
2.需求分析
软件描述
表2.1软件模块
序号
功能名称
功能需求标识
简要描述
01
RTK解算
rtkpost
单频rtk解算
02
RTK成图
rtkplot
对解算结果成图
03
RTK查看
rtkview
查看解算结果
04
RTK平滑
rtksmooth
对基准站进行平滑
运行环境及外部接口需求
(1)硬件要求
程序硬件要求:
1)具有InterI3处理器且满足以下要求的计算机:
2)最低512MB内存、最小1GB硬盘、鼠标、键盘
(2)软件要求
操作系统:
Windows7Windows8Windows10Ubuntu16.04
(3)用户接口
1)采用Qt通用图形界面,用户友好。
2)界面具有一致性,界面规范遵循软件界面的规范。
3)提供错误信息。
4)遵循国家关于计算机方面词汇的标准,用词正确、准确、无歧义。
5)本系统的用户一般需要通过中断进行操作,进行主界面后点击相应的窗口,分别进入相对应的界面(如,输入界面、输出界面)。
3.软件设计
软件体系结构
图3.1软件体系结构
软件解算流程
图3.2结算流程图
软件设计模块
软件主要包括四个模块:
读取文件、伪距单点定位、数据预处理、RTK定位解算、结果输出。
(1)读取文件
其中RINEX观测文件RTKLIB已经有现成模块,但是RTKLIB2.3.4源码无法读取北斗观测文件,我们在RTKLIB基础上通过修改频率优先级增加了读取北斗观测文件功能。
同时,基于比赛广播星历数据,我们特地针对北斗星历增加了读取北斗广播星历函数。
(2)伪据单点定位
先进行伪据单点定位,求取平均值作为基站近似坐标,同时得到卫星坐标以及钟差信息,以便组成双差观测方程。
(3)数据预处理
数据预处理阶段,我们着重做了一下三个工作:
粗差探测、周跳探测、载波平滑伪距。
经过我们测试,RTKLIB中的周跳探测并不完善,因此我们在解算前再加入一次周跳探测。
首先由
、
相位观测方程可得到GF组合(消去了与频率无关的几何距离和钟差等),由于相邻历元电离层变化很小,因此可忽略相邻历元差后的电离层残差。
同时,在组成MW组合,对MW组合观测值做历元差分,以3倍中误差为限,与GF组合联合,通过求解方程组得到精确周跳。
RTKLIB中并没有单频周跳探测功能,于是我们增加了基于流动站的单频周跳探测功能。
对每个历元k,卫星s,进行探测:
若数据缺失超过阈值,标记周跳。
若没有超过,则逐个计算伪距与载波之差:
若
则标记周跳。
在修复完周跳后,我们进行了粗差探测以及载波平滑伪据。
在GPS定位时,利用码观测值得到的结果精度较低,可以利用载波相位的变化来平滑伪据,从而取出伪距粗差,提高伪据观测定位精度。
(4)RTK定位解算
在解算过程中,我们基于RTKLIB添加了DCB改正。
GPS广播星历中卫星钟差参数是由L1P(Y)和L2P(Y)消电离层组合计算得到的,该参数中含有L1P(Y)和L2P(Y)在卫星端的硬件延迟影响。
为扣除这一偏差对导航用户的影响,GPS引入了TGD参数扣除。
GPS卫星在发射前都会在地面对卫星TGD参数进行提前标定。
1999年4月后,GPS开始播发由JPL基于IGS基准站数据处理得到的TGD参数,且每四个月左右更新一次。
2005年起发射的GPSBlockIIR-M卫星在L2频率上增加了L2C民用信号,2010年起发射的GPSBlockIIF卫星新增了L5频率以及L5I5、L5Q5两种民用信号。
与之对应,GPS在L1C/A、L2C、L5I5及L5Q5民用信号上相对于L1P(Y)分别定义了一个ISC参数,即ISCC/A、ISCL2C、ISCL5I及ISCL5Q。
ISC参数本质上也是DCB参数,其中ISCC/A是L1P(Y)与L1C/A信号间的频内偏差参数,ISCL2C、ISCL5I及ISCL5Q分别是L1P(Y)与L2C、L5I5、L5Q5信号间的频间偏差参数。
TGD也可以看作是L2P(Y)信号上的ISC参数,不过要乘一个与频率有关的常数进行转换。
考虑到广播的TGD及ISC参数与DCB参数之间的转换关系,GPS单双频用户也可以
利用后处理的DCB参数改正硬件延迟误差后进行定位。
(5)结果输出
基于RTKLIB增加了卫星系统输出,以及参考框架。
最终输出还包括时间,状态,三维坐标,精度指标等内容。
软件功能描述
表3.1POST模块
功能项
解算
标识
POST
功能描述
对输入的观测文件进行解算
使用角色
用户
主要事件流程
用户操作
系统响应事件
单击Option按钮
设置解算参数
单击View按钮
查看解算结果
单击Plot按钮
绘制波动图或定轨图
单击Exec按钮
开始解算
单击Exit按钮
退出
前置条件
用户需要设置Option参数,以及选择相应文件
后置条件
生成解算文件(*.pos)
接口说明
输入
输出
调用关系
调用模块
rtkpos.cpprinex.cppSatPass.cppDCPass.cpp
被调用模块
rtkwork.cpp
表3.2View模块
功能项
查看
标识
View
功能描述
对输入的观测文件进行查看
使用角色
用户
主要事件流程
用户操作
系统响应事件
单击Refresh按钮
重新加载解算文件
单击Read按钮
重新选择解算文件
单击Exit按钮
退出
前置条件
后置条件
接口说明
输入
输出
调用关系
调用模块
plotwindow.cpp
被调用模块
post
表3.3Plot模块
功能项
绘图
标识
Plot
功能描述
对输入的观测文件进行成图
使用角色
用户
主要事件流程
用户操作
系统响应事件
单击Open按钮
选择解算结果文件
单击Refresh按钮
重新绘制
单击Position按钮
绘制波动图
单击GndTrk按钮
绘制轨迹图
单击Save按钮
保存
单击Exit按钮
退出
前置条件
用户需要选择解算结果,并选择绘图类型
后置条件
接口说明
输入
输出
调用关系
调用模块
qcustomplot.cpp
被调用模块
rtkwork.cpp
表3.4Option模块
功能项
选项
标识
Option
功能描述
设置解算策略
使用角色
用户
主要事件流程
用户操作
系统响应事件
单击OK按钮
设置并保存解算参数
单击Cancel按钮
退出
前置条件
用户需要设置Option参数,以及选择相应文件
后置条件
生成解算文件(*.pos)
接口说明
输入
输出
调用关系
调用模块
optiondlg.cppcontrolplus.cpp
被调用模块
post
表3.5Smooth模块
功能项
平滑
标识
Smooth
功能描述
数据预处理
使用角色
用户
主要事件流程
用户操作
系统响应事件
前置条件
-infile
后置条件
生成平滑后的观测文件(*.*o)
接口说明
输入
输出
调用关系
调用模块
smoothe.cpp
被调用模块
post
全局数据结构说明
除了RTKLIB原有文件外,我们新增加了5个头文件:
表3.6新增文件
序号
头文件
实现文件
功能
01
MathBase.h
常用排序函数,以及统计函数
02
SatPass.h
SatPass.cpp
将观测数据按照卫星编号分类存储,可用于载波平滑伪据
03
Segment.h
存储了SatPass中卫星历元连续信息,用于探测周跳
04
DCPass.h
DCPass.cpp
M-W探测周跳,修复周跳
05
Stats.h
常用数学函数,最大值,最小值,方差等
软件中全局数据结构如下表所示:
表3.7全局宏定义
序号
宏定义
所属文件
说明
01
PI
rtklib.h
圆周率
02
CLIGHT
rtklib.h
光在真空中的速度
03
OMGE
rtklib.h
地球自转角速度
04
FEQ1
rtklib.h
GPSL1频率
05
FEQ2
rtklib.h
GPSL2频率
06
FEQ1_CMP
rtklib.h
北斗B1频率
07
FEQ2_CMP
rtklib.h
北斗B2频率
08
FEQ3_CMP
rtklib.h
北斗B3频率
09
D2R
rtklib.h
度转弧度
10
R2D
rtklib.h
弧度转度
11
WLNWINDOWS*
DCPass.cpp
WL周跳探测滑动窗口宽度
12
MAXWINDOWSIZE*
rtkpos.cpp
单频周跳探测最大滑动窗口宽度
4.
软件操作说明
4.1界面介绍
图4.1为软件主界面图,其中从上到下分别是流动站文件,参考站文件,广播星历文件,精密星历文件,精密种差等IGS文件,DCB文件以及解算结果文件。
其中参考站文件,基准站文件和广播星历文件为必选,其余的为可选项。
针对这次的比赛数据,我们特地为北斗广播文件增设了一个选择框,并且在源码中进行了识别。
图4.1RTKPOST软件主界面图
主要功能按钮介绍:
:
执行解算
:
设置解算参数
:
查看解算结果
:
绘图
4.2软件安装
默认我们在bin文件夹下已经生成了windows下的exe可执行程序,可直接使用,若在Linux下则需要使用qmake对gui文件夹下的gui.pro重新编译。
4.3软件操作
以单频RTK比赛数据文件中的20160909-2下的数据为例:
图4.2演示用例
1)首先点击Options按钮,如图4.3所示,Settiing1选项卡中,Interval为采样率,设置为1s,ElevatonMask为截止高度角(单位为度)这里设置为10,IonosphereCorrection与TroposphereCorrection为电离层与对流层模式,由于只是演示,这里分别选择Broadcast和Saastamoinen,卫星系统选择GPS和北斗。
Setting2选项卡中,Freqiquencies为频率选择,虽然流动站为单频,但是基准站为双频,所以还是选择L1+2,在解算过程中会程序会自动识别。
IntegerAmbiguityRes为模糊度固定方式,由于是连续观测,这里选择FixandHold,MinRatiotoFixAmbiguity为ratio值,默认为3,Smooth为是否平滑以及粗差探测,这里选择ON。
对于基准站坐标,这里选择AverageofSinglePosition,即单点定位平均值,若已知基准站坐标,则可以选择X/Y/Z-ECEF(m)模式,从而输入基准站坐标。
Output中主要设置了输出选项。
这里SolutionFormat输出坐标格式,选择E/N/U-Baseline,TimeFormat为时间格式,选择hh:
mm:
ssGPST,Latitude/LongitudeFormat为基准站坐标格式,这里选择ddd.dddddd,其余的保持默认即可。
图4.3参数设置
2)按照如图4.4所示选择解算文件。
图4.4解算文件选择
3)上述步骤操作完成后,点击Execute,进行解算,解算完成后,点击View可以查看解算结果。
图4.5查看解算结果
4)在主界面点击Plot,可以查看绘图结果,如图4.6所示,右下角显示的是固定率。
图4.5波动图
5.
软件测试
测试计划
表5.1测试计划
测试
测试类型
负责人
时间
1
算法测试
小组所有成员
08月11日
2
界面测试
小组所有成员
08月13日
3
验收
小组所有成员
08月14日
测试方法及工具
测试方法:
在VisualStudio中编译改进后RTKLIB源码,测试所有数据,同时在Qt中测试界面逻辑。
工具:
VisualStudio2013,QtCreator4.3+Qt5.9
测试用例
图5.1比赛数据
测试结果
测试用例
20160908-2
测试日期
2017-08-11
序号
测试项
备注
卫星系统
电离层、对流层
星历
01
GPS
双估
广播星历
由于比赛数据中北斗星历存在问题,所以只测试了GPS系统。
精密星历默认即增加DCB改正,所有的测试中平滑选项保持开启。
02
GPS
双估
精密星历
03
GPS
不估
广播星历
04
GPS
不估
精密星历
序号
测试项
输出结果
结果
01
未选择文件点击Execute按钮
提示:
errornoobsdata
正常
02
没有解算点击Plot,View按钮
只显示空坐标系
正常
03
Option是否能记忆用户上一次选项
可以
正常
04
删去post.ini,点击Options
显示默认设置,并重新创建post.ini
正常
05
点击Execute,在点击Abort
程序正常终止
正常
06
在Abort后再次点击Execute
程序正常执行
正常
参考文献
[1]BrianTolman,R.BenjaminHarris,TomGaussiran,DavidMunton,JonLittle,RichardMach,ScotNelsen,BrentRenfro,ARL:
UT;DavidSchlossberg,UniversityofCaliforniaBerkeley."TheGPSToolkit--OpenSourceGPSSoftware."Proceedingsofthe17thInternationalTechnicalMeetingoftheSatelliteDivisionoftheInstituteofNavigation(IONGNSS2004).LongBeach,California.September2004.
[2]Blewitt,G.,1990.AnautomaticeditingAlgorithmsforGPSdata.GeophysicalResearchLetters.17(3),pp.199-202.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RTKLIB 开发 文档