学习RTKLIB的同学可能都会对RTKLIB中的udbias函数有疑问,下面根据自己的理解解释一下,希望对刚学习的同学有点帮助
首先需要明确:
- 只有 RTK 模式才需要这个函数(DGPS模式不需要)。
- 这个函数最后得到的是站间单差模糊度和方差。
有几个前提,你要清楚:
- 要知道RTK计算过程需要用到EKF,既然这样就需要有状态量即RTK->X和方差RTK->P。
- RTKLIB2.4.3版本里面,根据配置文件,RTK->X中前3个元素保存的位置信息,在udpos里面更新。后面的元素按照卫星号和频率进行分配位置。
然后再展开说说这个udbias函数,其过程如下:
step1:周跳检测
目标:找出“周跳”的卫星。
手段:调用detslp_ll()(失锁标志)、detslp_gf()(几何无关组合)等。
结果:在ssat[sat].slip[f]中标记周跳标志位。
step2:周跳->重置相位偏差
目标:清理“周跳”的卫星。
操作:遍历所有卫星和频率(
MAXSAT × nf)。逻辑:
观测中断计数器
outc++若
outc > maxout(超时)或处于瞬时模式(ARMODE_INST),调用initx()将模糊度强制归零重置锁定计数器
lock = -minlock
step3:过程噪声注入
目标:给单差状态变量加过程噪声。(初次赋值用step7中的initx函数)
操作:针对当前历元可用的卫星。
动作:增加对应模糊度在协方差阵
P中的方差(P[j+j*nx] += prn^2 * tt)。原因:时间越久,未校正的误差越大。
Step4 :周跳响应
目标:剔除有周跳的模糊度。
逻辑:如果
slip标志位为 1(且非瞬时模式),立即将状态向量中的模糊度x[j]清零,并将lock设为负值。
Step5 :站间单差模糊度初始化
注意:这里得到的bias是个负数。
Step6 :公共偏差校正
注意:这里需要状态量中的单差模糊度有值才可以。
Step7 :初始化模糊度状态
目的:如果单差模糊度还没有赋值,则将bias和std[0]分别赋值给rtk->x和rtk->P。