周跳探测——GF

前言

GF组合,又称为几何无关组合,使用双频载波数据进行计算,RTKLIB中在PPP算法和RTK算法中用不同方式实现。


一、ppp算法中gf原理

公式推导如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

PPP中gf代码

代码如下(示例):


/* detect cycle slip by geometry free phase jump -----------------------------*/
static void detslp_gf(rtk_t *rtk, const obsd_t *obs, int n, const nav_t *nav)
{
    double g0,g1;
    int i,j;
    
    trace(4,"detslp_gf: n=%d\n",n);
    
    for (i=0;i<n&&i<MAXOBS;i++) {
        
        if ((g1=gfmeas(obs+i,nav))==0.0) continue;//----当前历元的值g1(t)=lam1*L1(t)-lam2*L2(t)
        
        g0=rtk->ssat[obs[i].sat-1].gf[0];//----前一历元的值g1(t-1)=lam1*L1(t-1)-lam2*L2(t-1)
        rtk->ssat[obs[i].sat-1].gf[0]=g1;//----当前历元进行存储
        
        trace(4,"detslip_gf: sat=%2d gf0=%8.3f gf1=%8.3f\n",obs[i].sat,g0,g1);
        //---g1(t)与g1(t-1)进行对比判断
    //---rtk->opt.thresslip这个阈值设置可以参考gamp设置,跟高度角和前后历元间隔时间关联起来
        if (g0!=0.0&&fabs(g1-g0)>rtk->opt.thresslip) 
		{
            trace(3,"detslip_gf: slip detected sat=%2d gf=%8.3f->%8.3f\n",
                  obs[i].sat,g0,g1);     
            for (j=0;j<rtk->opt.nf;j++) rtk->ssat[obs[i].sat-1].slip[j]|=1;
        }
    }
}

有时电离层比较活跃,电离层一次差残余误差大,故在实际gnss数据处理中,会再历元间做二次差,再次消弱电离层误差。
在这里插入图片描述

二、rtkpos算法中gf原理

公式推导如下:
在这里插入图片描述在这里插入图片描述

rktpos中代码如下:

/* detect cycle slip by geometry free phase jump -----------------------------*/
static void detslp_gf(rtk_t *rtk, const obsd_t *obs, int i, int j,
                           const nav_t *nav)
{
    int k,sat=obs[i].sat;
    double gf0,gf1;
    
    trace(4,"detslp_gf: i=%d j=%d\n",i,j);

    /* skip check if slip already detected */
	//-----如果slip的bit0位为1,说明有周跳,返回-------------------
    for (k=0;k<rtk->opt.nf;k++)
        if (rtk->ssat[sat-1].slip[k]&1) return;
    
	
    for (k=1;k<rtk->opt.nf;k++) {
        /* calc SD geomotry free LC of phase between freq0 and freqk */
		// gf1(t)= {L1(t)频点的(流动站载波L)-(基站的载波L)}-  {L2(t)频点的(流动站载波L)-(基站的载波L)}
		//------一次性可以探测基站和流动站的周跳------------------------------
        if ((gf1=gfobs(obs,i,j,k,nav))==0.0) continue;

		//------t-1时候的gf-------------------
        gf0=rtk->ssat[sat-1].gf[k-1];    /* retrieve previous gf */
        rtk->ssat[sat-1].gf[k-1]=gf1;    /* save current gf for next epoch */

        if (gf0!=0.0&&fabs(gf1-gf0)>rtk->opt.thresslip) {//----------这个阈值设定可以跟高度角和时间关联起来
            rtk->ssat[sat-1].slip[0]|=1;
            rtk->ssat[sat-1].slip[k]|=1;
            errmsg(rtk,"slip detected GF jump (sat=%2d L1-L%d dGF=%.3f)\n",
                sat,k+1,gf0-gf1);
        }
    }
}

三、总结

在ppp定位算法中,只有流动站的数据,故只能用单站GF探测;在rtkpos中,有基站和流动站的数据,用双站GF探测更加省时。
注:基站数据一般情况下环境都是开阔环境下的,数据质量都比较好;流动站数据环境复杂些;因此,在周跳探测的时候最好分开进行周跳探测。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值