【GNSS原理】【LAMBDA】Chapter.12 GNSS定位算法——模糊度固定LAMBDA算法[2025年7月]

Chapter.12 GNSS定位算法——模糊度固定LAMBDA算法

作者:齊花Guyc(CAUC)


文章目錄

  • Chapter.12 GNSS定位算法——模糊度固定LAMBDA算法
    • 一.整周模糊度理論
      • 1.LAMBDA算法干了一件什么事情?
      • 2.LAMBDA算法步驟
        • (1)去相關(Z變換)
        • (2)尋找整數解(整數估計)
        • (3)驗證結果(比率驗證)

一.整周模糊度理論

整周模糊度是全球導航衛星系統高精度定位中的核心概念,指的是載波相位觀測值中未知的整周周期數。GNSS載波相位測量以波長為單位,但由于初始相位未知,觀測值包含一個整數倍的波長和一個小數相位。準確解算整周模糊度并將其固定為整數是實現厘米級定位精度的關鍵。
在LAMBDA算法中,整周模糊度的解算基于雙差載波相位數據,通過最小二乘方法和整數約束來求解。

1.LAMBDA算法干了一件什么事情?

高精度定位需要用到GNSS的載波相位數據,但這些數據里有個未知數——整周模糊度。這個模糊度是載波信號的整周周期數,類似于信號跑了幾圈才到你這里,但它一開始是未知的。
LAMBDA算法就像一個“解謎大師”,專門用來破解這個模糊度,讓它從一個模糊的“小數”(浮點解)變成一個確定的“整數”(整數解)。一旦模糊度被正確固定,定位精度就能從幾米提升到厘米級。

2.LAMBDA算法步驟

LAMBDA算法主要分三個步驟:

  1. 去相關
  2. 尋找整數解
  3. 驗證結果
(1)去相關(Z變換)

GNSS的模糊度數據(浮點解)就像一堆纏在一起的毛線,彼此高度相關,很難直接處理。Z變換把這些毛線解開,變成一堆獨立的線(去相關后的模糊度)。這就像把一個復雜的迷宮變成規則的方格,搜索起來更省力。

setp1:獲取原始數據
假設浮點解為 [1.23,4.56,?2.78]T[1.23, 4.56, -2.78]^T[1.23,4.56,?2.78]T,協方差矩陣為
Qa^a^=[1.00.80.30.81.50.40.30.41.2]Q_{\hat{a}\hat{a}} = \begin{bmatrix} 1.0 & 0.8 & 0.3 \\ 0.8 & 1.5 & 0.4 \\ 0.3 & 0.4 & 1.2 \end{bmatrix}Qa^a^?=?1.00.80.3?0.81.50.4?0.30.41.2??
此時手上拿到一堆纏在一起的毛線和一張說明書,說明每根毛線有多粗(誤差大小)和怎么纏在一起(相關性)。

setp2:分析誤差表格
為了造出Z矩陣,先要通過 LTDLL^T D LLTDL 分解把誤差表格拆開,弄清楚模糊度之間的纏法。
Qa^a^=LTDLQ_{\hat{a}\hat{a}} = L^T D LQa^a^?=LTDL
比如分解后為:

D=[0.50000.70000.6],L=[100l2110l31l321]D = \begin{bmatrix} 0.5 & 0 & 0 \\ 0 & 0.7 & 0 \\ 0 & 0 & 0.6 \end{bmatrix}, \quad L = \begin{bmatrix} 1 & 0 & 0 \\ l_{21} & 1 & 0 \\ l_{31} & l_{32} & 1 \end{bmatrix}D=?0.500?00.70?000.6??,L=?1l21?l31??01l32??001??
此時相當于把毛線團拆開,記錄下每根線的長度(D)和怎么交叉纏繞(L),為打造整理機(Z矩陣)做準備。

setp3:構造Z矩陣
使用整數高斯變換構造Z矩陣,通過一系列整數運算,逐步構造Z矩陣,目標是讓 Qz^z^Q_{\hat{z}\hat{z}}Qz^z^? 的非對角元素盡量小。
Z變換把高相關的模糊度變成低相關的,搜索空間從細長橢圓變成接近圓形。

在這里插入圖片描述


整數高斯變換步驟

  1. 初始化Z矩陣
    一開始,Z矩陣設為單位矩陣。Z=[100010001]Z = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}Z=?100?010?001??
  2. 逐對降低相關性
    檢查矩陣Qa^a^Q_{\hat{a}\hat{a}}Qa^a^?的非對角元素,找到相關性最大的元素(Qa^a^(1,2)=0.8Q_{\hat{a}\hat{a}}(1,2) = 0.8Qa^a^?(1,2)=0.8)。用整數高斯變換調整Z矩陣,減少這對模糊度的相關性。方法是構造一個整數變換矩陣,比如:
    T=[1?k0010001]T = \begin{bmatrix} 1 & -k & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}T=?100??k10?001??
    其中 kkk 是整數(可以通過四舍五入 Qa^a^(1,2)/Qa^a^(2,2)Q_{\hat{a}\hat{a}}(1,2)/Q_{\hat{a}\hat{a}}(2,2)Qa^a^?(1,2)/Qa^a^?(2,2) 得到)。
    更新Z矩陣:Z=Z?TZ = Z \cdot TZ=Z?T,同時更新逆矩陣:Z?1=T?1?Z?1Z^{-1} = T^{-1} \cdot Z^{-1}Z?1=T?1?Z?1
  3. 迭代優化
    重復檢查非對角元素,找下一個相關性最大的元素,繼續重復步驟2。
    每次調整后,計算新的協方差矩陣。
    Qz^z^=Z?1Qa^a^Z?TQ_{\hat{z}\hat{z}} = Z^{-1} Q_{\hat{a}\hat{a}} Z^{-T}Qz^z^?=Z?1Qa^a^?Z?T
    直到非對角元素足夠小(接近對角矩陣)為止。

setp4:變換數據
用Z矩陣變換模糊度和協方差矩陣
用Z矩陣的逆把原始模糊度變成新模糊度:z^=Z?1a^\hat{z} = Z^{-1} \hat{a}z^=Z?1a^
用Z矩陣把原始協方差變成新協方差:Qz^z^=Z?1Qa^a^Z?TQ_{\hat{z}\hat{z}} = Z^{-1} Q_{\hat{a}\hat{a}} Z^{-T}Qz^z^?=Z?1Qa^a^?Z?T
Qz^z^=[0.50.10.050.10.70.030.050.030.6]Q_{\hat{z}\hat{z}} = \begin{bmatrix} 0.5 & 0.1 & 0.05 \\ 0.1 & 0.7 & 0.03 \\ 0.05 & 0.03 & 0.6 \end{bmatrix}Qz^z^?=?0.50.10.05?0.10.70.03?0.050.030.6??
非對角元素的值變小,說明相關性降低。

(2)尋找整數解(整數估計)

在變換后的模糊度中,尋找最優整數解,用Z反變換回到原始模糊度的整數解。

整數估計的方法有三種:

  1. 四舍五入
  2. 整數自舉法
  3. 整數最小二乘(ILS)

四舍五入
沒考慮模糊度間的關系,成功率低;隨便猜,簡單但容易錯。

整數自舉法
從最精確的模糊度開始取整,根據相關性調整其他模糊度,再取整;考慮部分相關性,成功率比四舍五入高。跟著線索一步步找,比瞎猜好,但可能不是最佳位置。

整數最小二乘(ILS)
尋找讓誤差最小的整數解,數學上:
a^=arg?min?a∈Zn(a^?a)TQa^a^?1(a^?a)\hat{a} = \arg \min_{a \in \mathbb{Z}^n} (\hat{a} - a)^T Q_{\hat{a}\hat{a}}^{-1} (\hat{a} - a)a^=argaZnmin?(a^?a)TQa^a^?1?(a^?a)
a^\hat{a}a^ 是原始模糊度(浮點解);aaa 是可能的整數解;Qa^a^Q_{\hat{a}\hat{a}}Qa^a^? 是協方差矩陣,記錄模糊度的可靠性和相關性。(a^?a)TQa^a^?1(a^?a)(\hat{a} - a)^T Q_{\hat{a}\hat{a}}^{-1} (\hat{a} - a)(a^?a)TQa^a^?1?(a^?a):衡量整數解離浮點解有多遠,考慮了數據的可靠性和相關性。

步驟:

  1. 定義搜索空間
    在去相關空間中,找到誤差最小的整數解,目標函數是:
    F(z)=(z^?z)TQz^z^?1(z^?z)≤χ2F(z) = (\hat{z} - z)^T Q_{\hat{z}\hat{z}}^{-1} (\hat{z} - z) \leq \chi^2F(z)=(z^?z)TQz^z^?1?(z^?z)χ2
    定義了一個超橢球(搜索空間),包含所有足夠接近 z^\hat{z}z^ 的整數點 zzzχ2\chi^2χ2 是閾值,控制橢球大小。
  2. 搜索整數解
    在超橢球內,找到讓 F(z)F(z)F(z) 最小的整數解(最優解),并記錄次優解。
    有兩種搜索方式:枚舉搜索和收縮搜索
    枚舉搜索檢查橢球內所有整數點,計算每個點的 F(z)F(z)F(z),找出最小和次小值。全面不會漏解,但耗時長。
    收縮搜索動態縮小橢球,優先檢查最可能的整數點。
    初始化搜索空間后,分解Qz^z^Q_{\hat{z}\hat{z}}Qz^z^?,用Cholesky分解將其分解為Qz^z^=LLTQ_{\hat{z}\hat{z}} = L L^TQz^z^?=LLT,令y=L?1(z^?z)y = L^{-1} (\hat{z} - z)y=L?1(z^?z),則變換目標函數為F(z)=(z^?z)TQz^z^?1(z^?z)=yTy=∑i=1nyi2F(z) = (\hat{z} - z)^T Q_{\hat{z}\hat{z}}^{-1} (\hat{z} - z) = y^T y = \sum_{i=1}^n y_i^2F(z)=(z^?z)TQz^z^?1?(z^?z)=yTy=i=1n?yi2?
    橢球變成:∑i=1nyi2≤χ2\sum_{i=1}^n y_i^2 \leq \chi^2i=1n?yi2?χ2 更簡單的球形約束。
    假設前 i?1i-1i?1 個整數 z1,z2,…,zi?1z_1, z_2, \dots, z_{i-1}z1?,z2?,,zi?1? 已確定,計算第 iii 個整數 ziz_izi? 的條件范圍:
    zi∈[?z^i∣i?1?χ2?∑j=1i?1yj2lii?,?z^i∣i?1+χ2?∑j=1i?1yj2lii?]z_i \in \left[ \left\lfloor \hat{z}_{i|i-1} - \frac{\sqrt{\chi^2 - \sum_{j=1}^{i-1} y_j^2}}{l_{ii}} \right\rceil, \left\lceil \hat{z}_{i|i-1} + \frac{\sqrt{\chi^2 - \sum_{j=1}^{i-1} y_j^2}}{l_{ii}} \right\rceil \right]zi???z^ii?1??lii?χ2?j=1i?1?yj2????,?z^ii?1?+lii?χ2?j=1i?1?yj2?????
    z^i∣i?1\hat{z}_{i|i-1}z^ii?1?:基于前 i?1i-1i?1 個整數的條件估計;liil_{ii}lii?LLL 的對角元素。
    從初始橢球開始,逐維度搜索整數點,找到更小誤差的解,更新 χ2\chi^2χ2,縮小橢球。

復習一下卡方分布χ2\chi^2χ2的概念:
想象在玩投飛鏢游戲,每次投的飛鏢偏離靶心的距離是一個正態分布(隨機但圍繞中心)。如果你投了很多次,把每次偏離距離的平方加起來,這個總和的表現規律就是卡方分布。告訴你,誤差平方的總和大概會落在什么范圍內。
如果有 kkk 個獨立的標準正態分布變量(均值為0,方差為1),記為 Z1,Z2,…,ZkZ_1, Z_2, \dots, Z_kZ1?,Z2?,,Zk?,那么它們的平方和:
X=Z12+Z22+?+Zk2X = Z_1^2 + Z_2^2 + \dots + Z_k^2X=Z12?+Z22?+?+Zk2?
服從卡方分布,自由度為 kkk,記為 X~χ2(k)X \sim \chi^2(k)Xχ2(k),自由度 kkk 表示有多少個獨立變量,決定了卡方分布的形狀。

在這里插入圖片描述
在此參考:張鎮虎的博客

在這里插入圖片描述
自由度 kkk:表示獨立正態變量的個數;顯著性水平 α\alphaα:表示誤差平方和超過 χ2\chi^2χ2 的概率,置信水平 1?α1-\alpha1?α 表示包含在 χ2\chi^2χ2 內的概率。
例子:自由度 k=3k = 3k=3,置信水平95%(α=0.05\alpha = 0.05α=0.05),查表得 χ2=7.815\chi^2 = 7.815χ2=7.815,表示95%的概率誤差平方和小于7.815。


(3)驗證結果(比率驗證)

用比率檢驗來檢查ILS找到的整數模糊度解是否可靠,確保最佳整數解是正確的,避免選錯導致定位誤差。ILS會輸出一個最優解和一個次優解,比率檢驗通過比較這兩者的誤差大小,判斷最佳解是否明顯優于其他解,從而決定是否接受。

比較這兩個整數解離浮點解有多遠。如果最優解明顯比次優解近很多,就放心取;如果兩者差不多近,就需要保持懷疑,可能選擇保留浮點解。
比率=F(a^)F(a^′)≤μ\text{比率} = \frac{F(\hat{a})}{F(\hat{a}')} \leq \mu比率=F(a^)F(a^)?μ
F(a^)=(a^?a^)TQa^a^?1(a^?a^)F(\hat{a}) = (\hat{a} - \hat{a})^T Q_{\hat{a}\hat{a}}^{-1} (\hat{a} - \hat{a})F(a^)=(a^?a^)TQa^a^?1?(a^?a^): 最優解的加權平方誤差;F(a^′)=(a^?a^′)TQa^a^?1(a^?a^′)F(\hat{a}') = (\hat{a} - \hat{a}')^T Q_{\hat{a}\hat{a}}^{-1} (\hat{a} - \hat{a}')F(a^)=(a^?a^)TQa^a^?1?(a^?a^): 次優解的加權平方誤差。
Qa^a^Q_{\hat{a}\hat{a}}Qa^a^?: 原始模糊度的協方差矩陣;
μ\muμ: 閾值,決定接受最佳解的嚴格程度,μ\muμ的取值可以根據設置可接受的失敗率 PfP_fPf?,比如0.001(0.1%)計算,也可以固定閾值(經驗值)。
如果比率 ≤μ\leq \muμ,接受最佳解 a^\hat{a}a^; 否則拒絕,保留浮點解 a^\hat{a}a^

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/91112.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/91112.shtml
英文地址,請注明出處:http://en.pswp.cn/web/91112.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機畢業設計java在線二手系統的設計與實現 基于Java的在線二手交易平臺開發 Java技術驅動的二手物品管理系統

計算機畢業設計java在線二手系統的設計與實現z2n189(配套有源碼 程序 mysql數據庫 論文) 本套源碼可以在文本聯xi,先看具體系統功能演示視頻領取,可分享源碼參考。隨著互聯網技術的飛速發展,二手交易市場也逐漸從傳統的線下模式轉…

如何進行項目復盤?核心要點分析

進行項目復盤需要明確復盤目標、確定復盤參與人員、選擇合適的復盤方法、梳理項目過程與關鍵節點、分析成功與失敗的原因、總結經驗教訓并制定改進計劃。其中,選擇合適的復盤方法尤其關鍵,常見的復盤方法包括魚骨圖分析法、SWOT分析法、PDCA循環法&#…

LeetCode 923.多重三數之和

給定一個整數數組 arr &#xff0c;以及一個整數 target 作為目標值&#xff0c;返回滿足 i < j < k 且 arr[i] arr[j] arr[k] target 的元組 i, j, k 的數量。 由于結果會非常大&#xff0c;請返回 109 7 的模。 示例 1&#xff1a; 輸入&#xff1a;arr [1,1,2,2,…

.Net日志系統Logging-五

日志概念 日志級別 NET (Microsoft.Extensions.Logging) 中定義的 6 個標準日志級別&#xff0c;按嚴重性從低到高排列&#xff1a; 日志級別數值描述典型使用場景Trace0最詳細的信息&#xff0c;包含敏感數據&#xff08;如請求體、密碼哈希等&#xff09;。僅在開發或深度故…

中國貿促會融媒體中心出海活動負責人、出海星球創始人蒞臨綠算技術

近日&#xff0c;中國貿促會融媒體中心出海活動負責人、出海星球創始人王思諾一行蒞臨廣東省綠算技術有限公司&#xff0c;深入考察其核心技術產品與全球化布局。雙方圍繞綠算技術全棧產品體系、創新出海模式及生態共建展開深度對話。綠算技術作為國內智算基礎設施領域的領軍企…

【算法專題訓練】06、數組雙指針

1、數組 數組是由相同類型的元素組成的數據集合&#xff0c;并且占據一塊連續的內存&#xff0c;按照順序存儲數據。 1.1、數組的特性&#xff1a; 數組元素通過下標獲取數據數組對象初始化時&#xff0c;需要先指定數組容量大小&#xff0c;并根據容量大小分配內存。缺點&…

操作系統-lecture2(操作系統結構)

回顧下lecture1 swap區域不可以馬上執行&#xff0c;即虛擬內存的數據和指令不可以被執行&#xff0c;得交換回到內存區域 操作系統的服務 主要提供兩種服務 面向普通用戶&#xff1a;user interface面向程序員&#xff1a;應用級程序代碼 為用戶 為用戶提供了操作包括但不…

內網服務器實現從公網穿透

從6月份tplink的ddns失效之后&#xff0c;對于部分在內網運行的服務器&#xff0c;從公網訪問就收到了部分影響。有好幾個朋友找來&#xff0c;尋求幫助&#xff0c;看看怎么恢復原來的機制&#xff0c;可以從公網互聯網訪問內網服務器。方案一&#xff1a;如果有動態公網的客戶…

vcs-編譯+仿真+dump波形【IMP】

VCS仿真分為兩步式(編譯/compilation仿真/simulation)和三步式(分析/analysis細化/elaborationsimulation/仿真);注2:analysis/分析是三步式flow中仿真design的第一步&#xff0c;在此階段將使用vhdlan或vlogan分析VHDL、Verilog、SystemVerilog和OpenVera文件。下面的部分包括…

程序代碼篇---python向http界面發送數據

在 Python 中向 HTTP 界面發送數據&#xff0c;本質上是模擬用戶在網頁上填寫表單、點擊提交按鈕的過程。這在自動化測試、數據上報、接口調用等場景中非常常用。下面用通俗易懂的方式介紹具體方法、實例代碼和解析。核心原理網頁上的數據發送&#xff08;比如提交表單&#xf…

mybatis-plus由mysql改成達夢數據庫

前置條件: 達夢數據庫設置了大小寫敏感,我比較菜,改不動!先這么湊合著用吧; 因為設置了大小寫敏感,所以所有的sql語句都要加 引號; 這樣是會報錯的: SELECT remark,createDept,createBy,createTime,updateBy,updateTime FROM sys_oss_config這樣才可以 SELECT "create_…

設計模式:外觀模式 Facade

目錄前言問題解決方案結構代碼前言 外觀是一種結構型設計模式&#xff0c;能為程序庫、框架或其他復雜類提供一個簡單的接口。 問題 假設你必須在代碼中使用某個復雜的庫或框架中的眾多對象。正常情況下&#xff0c; 你需要負責所有對象的初始化工作、 管理其依賴關系并按正確…

【數據結構初階】--二叉樹(四)

&#x1f525;個人主頁&#xff1a;草莓熊Lotso &#x1f3ac;作者簡介&#xff1a;C研發方向學習者 &#x1f4d6;個人專欄&#xff1a; 《C語言》 《數據結構與算法》《C語言刷題集》《Leetcode刷題指南》 ??人生格言&#xff1a;生活是默默的堅持&#xff0c;毅力是永久的…

三、平面度檢測-差值法

方法一: dev_get_window (WindowHandle) *讀取3通道彩色融合圖 read_image (Image, ./XYZ彩色融合圖.tiff) *拆分3個通道 decompose3 (Image, x, y, z) *將3個通道圖像轉換為3D模型 xyz_to_object_model_3d (x,y, z, ObjectModel3D) *顯示動態3D模型 threshold (z, Regions,…

什么是數據編排?數據編排的流程、優勢、挑戰及工具有哪些?

目錄 一、數據編排的定義與概念 1.數據編排的基本含義 2.數據編排與相關概念的區別 3.數據編排的重要性 二、數據編排的流程 1.需求分析&#xff1a; 2.數據源識別與連接&#xff1a; 3.數據抽取&#xff1a; 4.數據轉換&#xff1a; 5.數據加載&#xff1a; 6.監控…

【C++算法】82.BFS解決FloodFill算法_被圍繞的區域

文章目錄題目鏈接&#xff1a;題目描述&#xff1a;解法C 算法代碼&#xff1a;題目鏈接&#xff1a; 130. 被圍繞的區域 題目描述&#xff1a; 解法 BFS一層層剝開。 C 算法代碼&#xff1a; class Solution {// 定義四個方向的偏移量&#xff1a;右、左、下、上int dx[4] …

商湯發布具身智能平臺,讓機器人像人一樣和現實世界交互

7月27日&#xff0c;在“大愛無疆模塑未來”WAIC 2025大模型論壇上&#xff0c;商湯科技重磅發布「悟能」具身智能平臺。「悟能」具身智能平臺以商湯具身世界模型為核心引擎&#xff0c;依托商湯大裝置提供端側和云側算力支持&#xff0c;能夠為機器人、智能設備提供強大的感知…

MCP工作原理

在談MCP原理前&#xff0c;我們先談談MCP的技術前身—Function Calling。1.Function Calling技術在FunctionCalling技術出現之前&#xff0c;大語言模型雖然擁有強大的知識儲備和語言理解能力&#xff0c;但是只能提供自身數據庫已有的信息&#xff0c;無法和外界進行信息交互。…

VSCode手動版本更新

技術背景 使用VSCode的的過程中&#xff0c;如果打開了自動更新功能&#xff0c;每隔一段時間就會有更新提示。為了保持版本的穩定性&#xff0c;我們可以在設置中將Update: Mode設置為none&#xff0c;這樣就不會觸發自動更新。但有時又有版本更新的需求&#xff0c;可能是版本…

醫療超聲成像專用AFE模擬前端

醫療超聲成像作為一種廣泛應用于臨床診斷的重要技術&#xff0c;對于提供清晰、準確的醫學圖像起著關鍵作用。在超聲成像系統中&#xff0c;AFE模擬前端扮演著至關重要的角色。它負責對超聲換能器接收到的微弱電信號進行處理和轉換&#xff0c;為后續的數字信號處理提供高質量的…