RTKLIB中模糊度固定之——instantaneous、continuous和fix-and-hold三種固定模式的異同


 針對當前歷元狀態量對上一歷元估計出的模糊度繼承程度不同可分為三種模式:instantaneous、continuous和fix-and-hold

 

1. 先說instantaneous和 continuous、fix-and-hold兩個之間的區別

 Instantaneous = Integer Ambiguity Resolution

    instantaneous不繼承上一個歷元估計的模糊度的結果,每個歷元單獨初始化模糊度

    具體可以參考狀態更新中的代碼,部分代碼如下:

        /* reset phase-bias if instantaneous AR or expire obs outage counter */
        for (i=1;i<=MAXSAT;i++) {
            
            reset=++rtk->ssat[i-1].outc[k]>(uint32_t)rtk->opt.maxout;
            
            if (rtk->opt.modear==ARMODE_INST&&rtk->x[IB(i,k,&rtk->opt)]!=0.0) {
                initx(rtk,0.0,0.0,IB(i,k,&rtk->opt));
            }
            else if (reset&&rtk->x[IB(i,k,&rtk->opt)]!=0.0) {
                initx(rtk,0.0,0.0,IB(i,k,&rtk->opt));
                trace(3,"udbias : obs outage counter overflow (sat=%3d L%d n=%d)\n",
                      i,k+1,rtk->ssat[i-1].outc[k]);
                rtk->ssat[i-1].outc[k]=0;
            }
            if (rtk->opt.modear!=ARMODE_INST&&reset) {
                rtk->ssat[i-1].lock[k]=-rtk->opt.minlock;
            }
        }
        /* reset phase-bias if detecting cycle slip */
        for (i=0;i<ns;i++) {
            j=IB(sat[i],k,&rtk->opt);
            rtk->P[j+j*rtk->nx]+=rtk->opt.prn[0]*rtk->opt.prn[0]*fabs(tt);
            slip=rtk->ssat[sat[i]-1].slip[k];
            if (rtk->opt.ionoopt==IONOOPT_IFLC) slip|=rtk->ssat[sat[i]-1].slip[1];
            if (rtk->opt.modear==ARMODE_INST||!(slip&1)) continue;
            rtk->x[j]=0.0;
            rtk->ssat[sat[i]-1].lock[k]=-rtk->opt.minlock;
        }

2. 再說一下continuous和fix-and-hold的區別

    模糊度的浮點解儲存在數組 rtk->x 中,固定解儲存在數組 rtk->xa 中 

    continuous模式是讓當前歷元估計出的模糊度浮點解(rtk->x )當做下一個歷元狀態量中的模糊度(或稱為下一個歷元模糊度的初值)

    fix-and-hold模式用結算出的固定解( rtk->xa)當量測對估計出的模糊度浮點解(rtk->x )進行了約束(或叫更新、融合),然后將約束后的

    模糊度浮點解(rtk->x )當做下一個歷元狀態量中的模糊度(或稱為下一個歷元模糊度的初值)

    具體代碼可看函數 holdamb()

    /* resolve integer ambiguity by LAMBDA */
     if (stat!=SOLQ_NONE&&resamb_LAMBDA(rtk,bias,xa)>1) {
        
        if (zdres(0,obs,nu,rs,dts,var,svh,nav,xa,opt,0,y,e,azel,freq)) {
            
            /* post-fit reisiduals for fixed solution */
            nv=ddres(rtk,nav,dt,xa,NULL,sat,y,e,azel,freq,iu,ir,ns,v,NULL,R,
                     vflg);
            
            /* validation of fixed solution */
            if (valpos(rtk,v,R,vflg,nv,4.0)) {

                /* hold integer ambiguity */
                if (++rtk->nfix>=rtk->opt.minfix&&
                    rtk->opt.modear==ARMODE_FIXHOLD) {
                    holdamb(rtk,xa);
                }
                stat=SOLQ_FIX;
            }
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM