RTKLIB专题学习(七)---精密单点定位实现初识(一)

本文深入剖析RTKLIB中精密单点定位的核心函数pppos,该函数采用卡尔曼滤波进行参数估计。介绍了udstate_ppp函数,包括位置、钟差参数的时间更新,以及在不同定位模式下的处理。动态和静态模式下的状态更新各有侧重,钟差部分的更新则是必不可少的。通过对状态矩阵和协方差矩阵的更新,确保了定位精度的提升。

RTKLIB专题学习(七)

前几篇我们主要针对RTKLIB中的单点定位流程、函数调用和具体实现以及定位效果进行了详细介绍和分析,那么接下来的几篇博文,将带大家走进RTKLIB中的精密单点定位的部分,这一块需要好好理解,好好吸收,是重中之重

1.类似于estpos在单点定位中的作用,精密单点定位中的pppos可以说是这部分的核心函数了,直接引用了卡尔曼滤波进行参数估计

/* precise point positioning -------------------------------------------------*/
extern void pppos(rtk_t *rtk, const obsd_t *obs, int n, const nav_t *nav)
{
   
   
    const prcopt_t *opt=&rtk->opt;
    double *rs,*dts,*var,*v,*H,*R,*azel,*xp,*Pp,dr[3]={
   
   0},std[3];
    char str[32];
    int i,j,nv,num,info,svh[MAXOBS],exc[MAXOBS]={
   
   0},stat=SOLQ_SINGLE;
    
    time2str(obs[0].time,str,2);
    trace(3,"pppos   : time=%s nx=%d n=%d\n",str,rtk->nx,n);
    
    rs=mat(6,n); dts=mat(2,n); var=mat(1,n); azel=zeros(2,n);
    
    for (i=0;i<MAXSAT;i++) for (j=0;j<opt->nf;j++) rtk->ssat[i].fix[j]=0;
    
    /* temporal update of ekf states */
    udstate_ppp(rtk,obs,n,nav);
    
    /* satellite positions and clocks */
    satposs(obs[0].time,obs,n,nav,rtk->opt.sateph,rs,dts,var,svh);
    
    /* exclude measurements of eclipsing satellite (block IIA) */
    if (rtk->opt.posopt[3]) {
   
   
        testeclipse(obs,n,nav,rs);
    }
    /* earth tides correction */
    if (opt->tidecorr) {
   
   
        tidedisp(gpst2utc(obs[0].time),rtk->x,opt->tidecorr==1?1:7,&nav->erp,
                 opt->odisp[0],dr);
    }
    nv=n*rtk->opt.nf*2+MAXSAT+3;
    num = nv;
    xp=mat(rtk->nx,1); Pp=zeros(rtk->nx,rtk->nx);
    v=mat(nv,1
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十八与她

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值