zoukankan      html  css  js  c++  java
  • RTKLIB中relpos()函数之——ddres()函数

    ddres()函数--> /* double-differenced residuals and partial derivatives */

    功能:求出卡尔曼滤波中的新息v,量测方程的系数矩阵H和量测噪声R

    函数代码过长,只做一个简单介绍

    static int ddres(rtk_t *rtk, const nav_t *nav, double dt, const double *x,
                     const double *P, const int *sat, double *y, double *e,
                     double *azel, const int *iu, const int *ir, int ns, double *v,
                     double *H, double *R, int *vflg)
    
    
    const double *x, const double *P
    这两个变量是函数udstate()求出来的预测状态量X及其协方差
    
    
    double *v, double *H, double *R
    这三个变量用来存放求出的新息v,量测方程的系数矩阵H和量测噪声R

    介绍一下多系统RTK的问题

     

    由图中代码可以看出,RTKLIB中多系统RTK的策略是每个系统单独选一个参考星,与同系统的其他卫星作差,也就是松耦合。

    图中代码可以写成

        for (m=0;m<5;m++) /* m=0:gps/sbs,1:glo,2:gal,3:bds,4:qzs */
        {
            for (f=opt->mode>PMODE_DGPS?0:nf;f<nf*2;f++) 
            {
                /* search reference satellite with highest elevation */
                for (i=-1,j=0;j<ns;j++) 
                {
                    sysi=rtk->ssat[sat[j]-1].sys;
                    if (!test_sys(sysi,m)) continue;
                    if (!validobs(iu[j],ir[j],f,nf,y)) continue;
                    if (i<0||azel[1+iu[j]*2]>=azel[1+iu[i]*2]) i=j;
                }
                if (i<0) continue;
                ......
            }
         }   

    RTKLIB的使用手册中也提到了这一点

     接收机接受不同系统的信号时,即使信号频率相同,群延迟也不同。

    如果想做多系统RTK紧耦合,就需要考虑这个群延迟,把他当做待估参数,去估计它。

  • 相关阅读:
    背景透明,文字不透明
    判断数组类型
    前端工作流程自动化——Grunt/Gulp 自动化
    tools安装
    总结
    CSS Hack
    getBoundingClientRect()兼容性处理
    Math.random获得随机数
    spring RestTemplate 工程导入
    系统架构演变
  • 原文地址:https://www.cnblogs.com/y-z-h/p/15370590.html
Copyright © 2011-2022 走看看