rtklib学习——DCB改正

  GNSS差分码偏差(DCB,Differential Code Bias),有时也称IFB(Inter-Frequency Bias),是由不同类型的GNSS信号在卫星和接收机不同通道产生的时间延迟(硬件延迟/码偏差)差异,按照频率相同或者不同又可以细分为频内偏差(Intra-Frequency Bias)和频间偏差(Inter-Frequency Bias)。

我们以L1频点为例,把L1的卫星钟差为基准,L2的卫星钟差为:
δ 2 s a t = δ 1 s a t + ( b 2 s a t − b 1 s a t ) = δ f 1 s a t + D C B 12 s a t \delta _2^{sat} = \delta _1^{sat} + (b_2^{sat} - b_1^{sat}) = \delta _{f1}^{sat} + DCB_{12}^{sat} δ2sat=δ1sat+(b2satb1sat)=δf1sat+DCB12sat
其中 δ \delta δ 为卫星钟差,b为该卫星的硬件延迟,该表示为L1L2频点的DCB。

我们对无电离层组合的钟差考虑
δ I F s a t = f 1 2 δ 1 s a t − f 2 2 δ 2 s a t f 1 2 − f 2 2 = f 1 2 δ 1 s a t − f 2 2 ( δ 1 s a t − D C B 12 s a t ) f 1 2 − f 2 2 = δ 1 s a t − f 2 2 D C B 12 s a t f 1 2 − f 2 2 \delta _{IF}^{sat} = {{f_1^2\delta _1^{sat} - f_2^2\delta _2^{sat}} \over {f_1^2 - f_2^2}} = {{f_1^2\delta _1^{sat} - f_2^2(\delta _1^{sat} - DCB_{12}^{sat})} \over {f_1^2 - f_2^2}} = \delta _1^{sat} - {{f_2^2DCB_{12}^{sat}} \over {f_1^2 - f_2^2}} δIFsat=f12f22f12δ1satf22δ2sat=f12f22f12δ1satf22(δ1satDCB12sat)=δ1satf12f22f22DCB12sat
对于个别系统来说,习惯性把 f 2 2 D C B 12 s a t f 1 2 − f 2 2 {{f_2^2DCB_{12}^{sat}} \over {f_1^2 - f_2^2}} f12f22f22DCB12sat看作TGD。
GPS广播星历中的钟差都是基于无电离层组合的钟差,故钟差关系为
δ 1 s a t = δ I F s a t − T G D = δ I F s a t + f 2 2 D C B 12 s a t f 1 2 − f 2 2 \delta _1^{sat} = \delta _{IF}^{sat} - TGD = \delta _{IF}^{sat} + {{f_2^2DCB_{12}^{sat}} \over {f_1^2 - f_2^2}} δ1sat=δIFsatTGD=δIFsat+f12f22f22DCB12sat δ 2 s a t = δ I F s a t − ( f 1 f 2 ) 2 T G D = δ I F s a t + f 1 2 f 1 2 − f 2 2 D C B 12 s a t \delta _2^{sat} = \delta _{IF}^{sat} - {\left( {{{{f_1}} \over {{f_2}}}} \right)^2}TGD = \delta _{IF}^{sat} + {{f_1^2} \over {f_1^2 - f_2^2}}DCB_{12}^{sat} δ2sat=δIFsat(f2f1)2TGD=δIFsat+f12f22f12DCB12sat
**需要注意的:**在DCB改正的时候都是基于什么频点,改正过程中频点的基准要确定。

上述讨论的时频率之间的DCB,在系统中还与不同的码(通道)有关,例如C1和P1码之间 D C B P 1 C 1 DCB_{P1C1} DCBP1C1

几种常用的频点转换公式
在这里插入图片描述
rtklib提供的DCB读取并未涉及到对标准格式(2016年后)的读取,通过格式说明编写了以下的DCB读取,格式中实际上提供了DSB、OSB、ISB三种偏差改正信息,只读取了DSB。

    while (fgets(buff,sizeof(buff),fp)) {
        
        if (strstr(buff, "-BIAS/SOLUTION ")) break;
        setstr(Dsbias, buff + 24, 10);
        if      (strstr(Dsbias,"C1C  C1W") || strstr(Dsbias, "C1X  C5X")) type=1;
        else if (strstr(Dsbias,"C2C  C2W") || strstr(Dsbias, "C1P  C5P")) type=2;
        else if (strstr(Dsbias,"C2W  C2S") || strstr(Dsbias, "C1D  C5D")) type=3;
        else if (strstr(Dsbias, "C2W  C2L") || strstr(Dsbias, "C1X  C6I")) type = 4;
        else if (strstr(Dsbias, "C2W  C2X") || strstr(Dsbias, "C1P  C6I")) type = 5;
        else if (strstr(Dsbias, "C1C  C2W") || strstr(Dsbias, "C1D  C6I")) type = 6;
        else if (strstr(Dsbias, "C1C  C5Q") || strstr(Dsbias, "C2I  C6I")) type = 7;
        else if (strstr(Dsbias, "C1C  C5X") || strstr(Dsbias, "C1X  C7Z")) type = 8;
        else if (strstr(Dsbias, "C1W  C2W") || strstr(Dsbias, "C1X  C8X")) type = 9;
        if (!type) continue;
        setstr(str1, buff + 11, 3);  setstr(str2, buff + 15, 4);
        if ((cbias=str2num(buff,82,9))==0.0) continue;
        
        if (sta&&(!strcmp(str1,"G")||!strcmp(str1,"R") || !strcmp(str1, "E") || !strcmp(str1, "C") || !strcmp(str1, "J"))) { /* receiver DCB */
            for (i=0;i<MAXRCV;i++) {
                if (!strcmp(sta[i].name,str2)) break;
            }
            if (i<MAXRCV) {
                p=strchr(syscodesbias, str1[0]);
                j=(int)(p-syscodesbias);
                nav->rbias[i][j][type-1]=cbias*1E-9*CLIGHT; /* ns -> m */
            }
        }
        else if ((sat=satid2no(str1))) { /* satellite dcb */
            nav->cbias[sat-1][type-1]=cbias*1E-9*CLIGHT; /* ns -> m */
        }
    }

DCB格式代码下载:https://download.csdn.net/download/weixin_44994338/19022518

  • 9
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值