udstate()函数-->/* temporal update of states */
udstate()函数功能是状态更新,可以看出待估参数X中的各元素
/* temporal update of states --------------------------------------------------*/ static void udstate(rtk_t *rtk, const obsd_t *obs, const int *sat, const int *iu, const int *ir, int ns, const nav_t *nav) { double tt=rtk->tt,bl,dr[3]; trace(3,"udstate : ns=%d ",ns); /* temporal update of position/velocity/acceleration */ udpos(rtk,tt); /* temporal update of ionospheric parameters */ if (rtk->opt.ionoopt>=IONOOPT_EST) { bl=baseline(rtk->x,rtk->rb,dr); udion(rtk,tt,bl,sat,ns); } /* temporal update of tropospheric parameters */ if (rtk->opt.tropopt>=TROPOPT_EST) { udtrop(rtk,tt,bl); } /* temporal update of receiver h/w bias */ if (rtk->opt.glomodear==2&&(rtk->opt.navsys&SYS_GLO)) { udrcvbias(rtk,tt); } /* temporal update of phase-bias */ if (rtk->opt.mode>PMODE_DGPS) { udbias(rtk,tt,obs,sat,iu,ir,ns,nav); } }
在函数udbias()中我们可以看到一段代码
cp=sdobs(obs,iu[i],ir[i],f); /* cycle */ pr=sdobs(obs,iu[i],ir[i],f+NFREQ); lami=nav->lam[sat[i]-1][f]; if (cp==0.0||pr==0.0||lami<=0.0) continue; bias[i]=cp-pr/lami;
其中sdobs()函数的意思是rover与base观测值作差
所以可以发现,估计的是单插模糊度
RTKLIB使用手册中提提到了这点,这样做可以避免考虑参考星换星问题,如果换了参考星,相当于基本所有的双差模糊度都需要重新估计