基於RTKLIB 2.4.3.b34版本L1-L5雙頻定位解算


之前版本在配置文件中L1+L5的選項,但是並沒有實現L1+L5雙頻結算功能,在2.4.3.b34版本中直接去掉L1+L5選項。

若想實現L1+L5雙頻解算可對2.4.3.b34版本進行略微改動(2.4.3.b34版本對數據讀取部分進行了優化,實現L1+L5更方便)

實現L1+L5雙頻解算一般兩種策略:

(1)在數據讀取時,將L2與L5數值調換儲存位置

(2)在數據處理時,在處理L2頻率時,讓其跳過

我選用的是第一種方法:在數據讀取時,將L2與L5數值調換儲存位置,(個人認為:方法(1)優點:不管什么定位模式,數據解算部分無需改動,都可以直接正常處理)

2.4.3.b34版本對設置信號索引函數 set_index() 進行了優化,使策略(1)實現L1+L5雙頻解算更加方便

/* set signal index ----------------------------------------------------------*/
static void set_index(double ver, int sys, const char *opt, char tobs[MAXOBSTYPE][4], sigind_t *ind)

只需改動兩個地方,我為了方便直接設置了一個宏定義判斷,在頭文件中宏定義 ‘L5_TO_L2’ 即可處理L1+L5雙頻,不定義即可處理L1+L2雙頻

兩處改動均在 rtkcmn.c文件中

改動1: 交換L2與L5儲存位置索引

/* GPS obs code to frequency -------------------------------------------------
 *  改動前 */
static int code2freq_GPS(uint8_t code, double *freq)
{
    char *obs=code2obs(code);
    
    switch (obs[0]) {
        case '1': *freq=FREQ1; return 0; /* L1 */
        case '2': *freq=FREQ2; return 1; /* L2 */
        case '5': *freq=FREQ5; return 2; /* L5 */

    }
    return -1;
}
/* GPS obs code to frequency -------------------------------------------------
 * 改動后 */
static int code2freq_GPS(uint8_t code, double *freq)
{
    char *obs=code2obs(code);
    
    switch (obs[0]) {
        case '1': *freq=FREQ1; return 0; /* L1 */
#ifdef L5_TO_L2      /* 實現l1+l5 @Zhehua Yang */
        case '5': *freq=FREQ5; return 1; /* L5 */
        case '2': *freq=FREQ2; return 2; /* L2 */
#else
        case '2': *freq=FREQ2; return 1; /* L2 */
        case '5': *freq=FREQ5; return 2; /* L5 */
#endif
    }
    return -1;
}

改動2:交換L2與L5優先級索引

/** 改動前 */
static char codepris[7][MAXFREQ][16]={  /* code priority for each freq-index */
    /*    0         1          2          3         4         5     */
    {"CPYWMNSL","PYWCMNDLSX","IQX"     ,""       ,""       ,""      ,""}, /* GPS */
    {"CPABX"   ,"PCABX"     ,"IQX"     ,""       ,""       ,""      ,""}, /* GLO */
    {"CABXZ"   ,"IQX"       ,"IQX"     ,"ABCXZ"  ,"IQX"    ,""      ,""}, /* GAL */
    {"CLSXZ"   ,"LSX"       ,"IQXDPZ"  ,"LSXEZ"  ,""       ,""      ,""}, /* QZS */
    {"C"       ,"IQX"       ,""        ,""       ,""       ,""      ,""}, /* SBS */
    {"IQXDPAN" ,"IQXDPZ"    ,"DPX"     ,"IQXA"   ,"DPX"    ,""      ,""}, /* BDS */
    {"ABCX"    ,"ABCX"      ,""        ,""       ,""       ,""      ,""}  /* IRN */
};
/** 改動后 */
#ifdef L5_TO_L2
    static char codepris[7][MAXFREQ][16]={  /* code priority for each freq-index */
        /*    0         1          2          3         4         5     */
        {"CPYWMNSL","IQX"     ,"PYWCMNDLSX",""       ,""       ,""      ,""}, /* GPS */
        {"CPABX"   ,"IQX"     ,"PCABX"     ,""       ,""       ,""      ,""}, /* GLO */
        {"CABXZ"   ,"IQX"     ,"IQX"       ,"ABCXZ"  ,"IQX"    ,""      ,""}, /* GAL */
        {"CLSXZ"   ,"IQXDPZ"  ,"LSX"       ,"LSXEZ"  ,""       ,""      ,""}, /* QZS */
        {"C"       ,""        ,"IQX"       ,""       ,""       ,""      ,""}, /* SBS */
        {"IQXDPAN" ,"DPX"     ,"IQXDPZ"    ,"IQXA"   ,"DPX"    ,""      ,""}, /* BDS */
        {"ABCX"    ,""        ,"ABCX"      ,""       ,""       ,""      ,""}  /* IRN */
    };
#else
    static char codepris[7][MAXFREQ][16]={  /* code priority for each freq-index */
        /*    0         1          2          3         4         5     */
        {"CPYWMNSL","PYWCMNDLSX","IQX"     ,""       ,""       ,""      ,""}, /* GPS */
        {"CPABX"   ,"PCABX"     ,"IQX"     ,""       ,""       ,""      ,""}, /* GLO */
        {"CABXZ"   ,"IQX"       ,"IQX"     ,"ABCXZ"  ,"IQX"    ,""      ,""}, /* GAL */
        {"CLSXZ"   ,"LSX"       ,"IQXDPZ"  ,"LSXEZ"  ,""       ,""      ,""}, /* QZS */
        {"C"       ,"IQX"       ,""        ,""       ,""       ,""      ,""}, /* SBS */
        {"IQXDPAN" ,"IQXDPZ"    ,"DPX"     ,"IQXA"   ,"DPX"    ,""      ,""}, /* BDS */
        {"ABCX"    ,"ABCX"      ,""        ,""       ,""       ,""      ,""}  /* IRN */
    };
#endif

 

2.4.3.b34版本頻率是用 code2freq_GPS() 這些函數得到的,因為在改動1中已經進行了改動,所以L5頻點的頻率與與觀測值是對應關系無需進行其他改動。

 


免責聲明!

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



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