rtklib中rtk源码解析及优化建议

为了解决公司某型号芯片是否满足千寻RTK要求,测试单频RTK在不同卫星系统下模糊度固定率。因此,熟悉RTK算法原理和调试rtklib后处理程序是必要的。
一、测试数据获取
使用rtknavi采集数据,具体步骤可以参考manual,此处不再赘述。选择rtknavi有以下三个方面的考虑:
(1)可以实时看到模糊度固定情况;
(2)能保证基准站和流动站的数据流观测时段一致性,基准站使用TCP方式采集数据,rtcm3格式;流动站使用端口采集数据,ubx格式。
(3)第(2)步采集的数据可以使用rtkconv转换后,再rtkpost进行后处理。

二、manual中rtk算法解析
实现精密相对定位采用rtk算法,rtk算法定义此处不再赘述,推荐谢刚的《GPS原理与接收机设计》。manual中的rtk算法也有介绍,但是对于向量和矩阵大小,manual并没有给出具体的例子。为了便于理解,给出单频单系统下向量和矩阵大小设置的示例。
假设共视卫星有m颗,针对单频单系统数据,y=h(x)+v,向量和矩阵的大小如下所示:
1、 状态向量 x (3+3+m)*1
2、 DD测量向量y及其测量模型的向量大小均是 2(m-1)1,其中,假设DD的参考星为sat 1
3、 E表示m颗卫星的LOS三维向量 m
3
4、 D 单差SD转换矩阵 (m-1)*m,则DE (m-1)*3
5、 测量误差R 2(m-1)*2(m-1)
其中,m表示单差相位偏差个数。
问:单频双系统、双频双系统、多频多系统大小又是多少呢?很有意思

三、rtklib后处理平台debug步骤
rtklib后处理平台的搭建在《RTKLIB Ver2.4.3在VS版本配置过程中出现的问题及其解决步骤》中已经对出现的问题做出了具体的解决,建议在调试的时候,先将trace宏打开,在配置中将level调为5,这时候跑数据可以看到所有的debug过程,对了解rtk算法的框架大有裨益。
精密相对定位relpos函数,主要由扩展卡尔曼滤波算法(时间更新udstate函数、量测更新filter函数)和模糊度固定算法(LAMBDA)组成。
根据trace得出源码relpos函数的流程大致如下:
1)先求出基站的非差残差zdres(打印中的y表示基站每颗卫星的非差残差);
2)再选取基站和流动站的共视星,然后进行时间更新
3)这时候trace 4 x(0)= 1 2 3(分界线)
4)对流动站求非差残余zdres(打印中的y表示流动站每颗卫星的非差残差),求双差残差和偏导数ddres(双差残差v、雅各比矩阵H、DD测量误差协方差阵R),然后进行量测更新filter
5)这时候trace 4 x(1)=1 2 3(分界线),
6)针对验后浮点解,再进行行流动站zdres、ddres、valpos操作,注意这时候ddres中的H=NULL,即表示H不打印,R矩阵不变,是打印的
7)然后再进行LAMBDA模糊度固定求解(打印单差SD转换矩阵D),如果通过的话,再进行第5步一样的操作

四、rtklib中观测误差的协方差矩阵R设置问题
在debug过程中,发现rtklib中随机模型使用高度角定权(有且仅有),rtk验前验后使用的都是这个模型,双差残差的协方差矩阵R是使用单差来计算的,就会导致双差残差大或者小都是一样的Ri值,可以使用Herment方差分量估计法,Herment方差分量估计可以根据验后估计调整权比。

具体代码实现和测试结果留待后补

参考文献:

[1]刘天骏,王坚,韩厚增,宁一鹏,余航.GPS/BDS分类组合定位的指数加权Helmert方差分量估计法[J].大地测量与地球动力学,2018,38(07):684-688+694.
[2]刘金海,涂锐,张睿,张鹏飞,卢晓春.Helmert方差分量估计在GPS/GLONASS/BDS组合定位权比确定中的应用[J].大地测量与地球动力学,2018,38(06):568-570+576.
[3]王位文,李建康.Helmert方差分量估计在测量平差中的算法研究[J].价值工程,2014,33(26):217-218.
[4]http://www.rtklib.com/prog/manual_2.4.2.pdf

你可能感兴趣的:(GNSS)