rtklib代碼詳解——rtkpos.c


主函數:rtkpos

         1 設置基站位置

         2 統計基站和流動站的衛星數量

         3 單點定位解算   

  

         4 若定位模式為單點定位,直接返回

         5 精密單點定位

        

         6 動基線,利用單點定位計算基站的位置:

         

         7 差分定位

         

差分定位函數:relpos

1 計算流動站和參考站時間差

   

2 計算衛星位置

  

3 參考站非差殘差

4 基站信息插值,后處理,通過配置項進行設置

5 選擇基站和參考站之間的公共衛星:

6 狀態時間更新

7 初始變量內存申請以及賦初值

8  設置迭代次數(設置值為1, 動基線,增加2次迭代次數

 

9 開始迭代量測更新

        

         9.1 計算流動站衛星的非差殘差結果

        

         9.2 雙差殘差以及量測矩陣等更新

       

         9.3 KF量測更新實現

        

10 量測更新完成,檢測是否完成,並利用更新以后的結果計算殘差

 

         10.1 利用浮點結果計算雙差殘差以及量測噪聲

    

         10.2 通過方差和量測進行校驗,檢測結果是否有效

    

         10.3 存儲浮點結果

    

         10.4存儲模糊度相關的信息,統計有效衛星數目

    

         10.5 檢測衛星數量是否有效

   

11  整周模糊度解算(WL-NL  TCAR 兩種方式未實現,在rtklib中實現了LAMBDA) 

模糊度解算模式定義:

 

         11.1模糊度解算成功,根據固定結果計算雙差殘差和協方差,並進行校驗

    

         11.2 固定解驗證有效,若配置為hold模式,需要存儲模糊度信息(具體哪些信息?怎么銜接?

     

 

 

12 存儲rtk結果,位置和速度以及方差信息(若狀態為固定解,存儲固定解結果

 

13 存儲當前歷元的載波相位信息,供下次使用

 

14 存儲SNR信息

 

15 更新衛星的fix信息以及周跳信息(具體怎么使用?

 

16 釋放局部變量,返回定位狀態

 

雙差函數計算以及量測陣計算函數:ddres

1 計算基線長度

      

2 基站和流動站位置轉化

      

3 變量內存申請和變量初始化

4 計算各個衛星電離層和對流層延時因子(配置為 電離層對流層估計模式

       

5 遍歷不同系統和頻點,計算雙差殘差,其中,若為差分偽距模式,需要限制遍歷次數

    注: 所有模式分為四類,每一類分別挑選參考衛星,再計算雙差的結果,考慮到系統時差的影響

 

    注:    遍歷次數設置: 載波相位在0-nf,nf至2nf為偽距,因此偽距差分定位從nf開始

         5.1 選取參考衛星,根據高度角,若選取失敗,則返回

                   其中,m代表不同的頻點和系統,分為四類,每一類選取一次參考衛星

                  

         5.2 雙差開始,遍歷各個衛星

         

                   5.2.1 初始檢測頻點和觀測量是否有效

                    

                   5.2.2 獲取波長信息,並檢測波長的有效性

                   

                   5.2.3 獲取對應觀測量的H陣的位置,並進行賦初值

                   

                   5.2.4 雙差殘差

                    

                   5.2.5 更新H陣

                   

                   5.2.6 雙差電離層延遲項,若配置為 電離層延時估計模式,包括殘差計算 ,並扣除該部分,和對應H陣更新

                    

                   5.2.7雙差對流層延遲項,若配置為 對流層延時估計模式,包括殘差計算,並扣除該部分, 和對應H陣更新

                    

                   5.2.8雙差整周模糊度項(只對載波相位有效

                    注:區分無電離層組合,和狀態更新中整周模糊度賦初值對應

       

                   5.2.9 GLONASS硬件偏差雙差 (區分不同模式進行處理,具體估計方式?????

                  

 

         

                   5.2.10 分別保存偽距和載波殘差信息

       

                   5.2.11 新息檢查(門限值默認設置為1m

                   若超過門限,則直接返回,不進行保存

         

                   5.2.11 單差觀測量噪聲計算(計算方式??????

         

                   5.2.11 相關標志位置位(衛星有效標志位,記錄參考衛星和流動衛星號,nb:每種類型,每個頻點下雙差有效的衛星觀測量數量

         

 

5 動基線,進行基線長度約束(基線相關的H陣更新,新息以及量測噪聲計算

6 H陣打印

7 計算雙差量測噪聲R   (具體計算方式??????)

 

8 釋放局部變量內存,並返回有效的觀測量數目nv

 

狀態時間更新:udstate

    1 更新位置速度以及加速度

           

         2 更新電離層參數(配置為:電離層估計

             

         3 更新對流層參數(配置為:對流層估計

               

         4 更新接收機硬件延遲

                 

         5 更新載波相位狀態(定位模式時載波相位定位才會進行

         

電離層參數時間更新函數: udion

         在這之前,先會進行電離層配置模式檢測,決定是否估計,然后計算基線的長度,然后傳進去

1 初始檢測所有衛星電離層狀態量是否正常

       

2 更行當前歷元各個衛星的電離層狀態量及對應P陣(驅動噪聲和基線長度、高度角等信息有關

 

 

對流層參數時間更新函數: udtrop

         在這之前,先進行對流層參數配置模式的檢測判斷

1 更新對流層參數,狀態量數量和估計模型相關,和衛星數量無關

更新接收機硬件偏差函數: udrcvbias

         首先判斷是不是glonass系統整周模糊度的配置的估計方式

        

         若模糊度固定次數大於門限值且模糊度解算比例因子大於門限值,則q陣不會變。 

更新相位偏差函數:udbias

         首先會檢測,當前配置定位模式,是否是載波相位定位

 

1 循環檢測各個衛星觀測量相位周跳情況

       

         1.1 檢測周跳通過LLI(失鎖標志等)初始標志為清除

                  

         1.2 檢測周跳通過geometry-free phase jump

                 

         1.3 檢測周跳通過多普勒和載波相位差分

                

         1.4 更新半周跳有效標志位

                 

2 根據整周模糊度的解算方式、 周跳檢測標志、碼相位等信息更新整周狀態量等

 遍歷不同頻點

         2.1 如果是單歷元模式或者超過中斷計數器過期等,重置相位模糊度

                

         2.2 如果檢測到周跳(無電離層組合,標志位獲取不一樣,需注意)或者單歷元模式,重置相位模糊度

               

         2.3 通過碼相位信息,估計相位偏差初值(整周模糊度初值

           若為無電離層組合,則需要按組合方式計算初始值

               

         2.4 修正相位偏差確保碼相位和載波一致性(??????????)

         

         2.5 設置相位偏差初始狀態信息

          

檢測周跳通過LLI函數:detslp_ll

         首先,遍歷各個頻點

               

         1 檢測載波相位是否有效,以及前一歷元的時間差是否滿足條件:

               

         2 獲取前一時刻的失鎖標志位

                 

         3 通過失鎖標志位檢測周跳(前向和后向算法此時有區別 ????????????

                 

         4 檢測周跳情況根據前后的周跳標志(根據前后變化置位半周跳標志位)

                  

         5 存儲當前的LLI

                

         6 存儲周跳和半周跳的標志位

         

通過geometry-free檢測周跳函數:detslp_gf_L1L2

         1 檢測載波相位的頻點數量以及載波相位值初始值檢測,並計算幾何無關L1 L2頻點線性組合值,初步檢測值得合理性

           

         2 通過前后歷元的差值,判斷周跳情況,門限值初始給的是0.05m

          

通過geometry-free檢測周跳函數:detslp_gf_L1L5

         利用L1 L5頻點組合檢測周跳。

通過多普勒和相位一致性檢測周跳detslp_dop

  因為時鍾跳動的原因,不使能多普勒檢測的方法

位置速度時間更新函數:udpos

1 若為PMODE_FIXED, 配置給定設定的位置和方差

 

2 首次初始化位置信息,用單點定位的結果

    

         注意:這個地方可以配置KF的動態模型:

         

3 若為PMODE_STATIC,則不僅進行更新

       

4 若動態模型為一階模型,則直接重置方差,和位置

   

5 檢查P陣的有效性,無效,則重置

       

6 檢查狀態量中有效的狀態數量,並記錄索引id,檢查衛星數量

      

7 位置速度加速度狀態更新

         首先,更新F陣和狀態量x,以及P陣

         

         其次,進行狀態遞推

         

         最后,考慮驅動噪聲,Q陣(更新方式)分別設置水平和垂直噪聲驅動方差?轉化?

          

選擇公共衛星函數:selsat

  主要有高度角的限制

基站數據插值函數:intpres

1 檢查前一歷元基站衛星數目以及當前時間差是否小於門限,返回並記錄當前歷元信息

        

2 檢查與前一歷元的時間差:大於2倍門限,返回

        

3 計算前一歷元基站觀測量下的衛星位置和鍾差信息:

       

4 計算前一歷元基站觀測量非差殘差信息:

        

5 殘差通過時間推算(????????)

非差殘差函數:zdres

1 基站位置有效性檢測

        

2 地潮修正,影響多大?原理未知?????

 

   其中,配置項有多重模型,如下:

        

3 ecef轉經緯高

        

4 遍歷每個衛星,計算殘差

         4.1 計算幾何距離 俯仰角和方位角

              

         4.2 刪除指定衛星,或模式

                  

         4.3 補償衛星鍾差

              

         4.4 對流層延遲模型校正

                

         4.5 天線相位中心校准

                 

         4.6 非差相位和碼殘差計算(衛星)

           

 

各個衛星非差殘差計算函數: zdres_sat

         1 判斷是否無電離層組合(雙頻觀測量:可配置: 無電離層組合

                  

         2 檢查 波長以及cn0是否有效

                  

         3 無電離層組合

           

  4 各個頻點殘差計算:

         

利用LAMBDA解整周模糊度函數: resamb_LAMBDA

1 整周模糊度ratio賦初值,並檢測是否進行模糊度解算(定位模式,模糊度解算配置項以及模糊度驗證門限值

 

2 單差到雙差的轉移矩陣D求解(轉移方式

 

3 根據轉移矩陣,求解雙差整周模糊度以及協方差陣

 

4 從協方差陣中單獨提取整周的協方差陣 整周和狀態兩種其他項的協方差陣

 

5  lambda/mlambda  整數最小二乘估計(估計結果在b,s中保存了)

 

6  ratio值計算:

 

7  ratio值檢測,大於門限值,求解固定解以及固定解的協方差

8  重新存儲單差的模糊度

 

Fix and hold模式下模糊度保持: holdamb

進入條件: 連續固定次數大於門限值(默認門限值為0,只要固定就進入)

                            以及固定模式配置為fix and hold

輸入xa為固定解(單差模糊度)

 

1 循環遍歷各個衛星,查找滿足條件的衛星,並設置相應標志位

 

2 計算固定解雙差和浮點解雙差 的差值,形成量測信息,並更行H陣

 

3 若觀測量數量有效,設置R陣,並量測更新

 


免責聲明!

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



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