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紧耦合,就需要考虑这个群延迟,把他当做待估参数,去估计它。

  • 相关阅读:
    js之面向对象
    常用功能
    html圆环(该代码非原创,具体出处已不详)
    关于jsonp的一篇文章(传播好的东西)
    当切换select时,获取select选中的值;获取选中的单选按钮的val,判断复选框是否选中
    js类型判断(数字、0、""、undefined、null)
    js获取窗口可视范围的高度、获取窗口滚动条高度、文档内容实际高度
    66
    55
    44
  • 原文地址:https://www.cnblogs.com/y-z-h/p/15370590.html
Copyright © 2011-2022 走看看