Contents

LAMBDA算法

LAMBDA算法的大概原理和RTKLIB中的代码

LAMBDA算法

理论基础

整体的过程是:z变换到新空间以去相关 $\rightarrow$ 在新空间搜索最佳整数模糊度组合(更高效)$\rightarrow$ 变换回原空间

载波相位测量

image-20240218151642681

理想情况下,卫星在 $t$ 时刻发送其当前的相位信息,至 $t+\delta t$ 时刻接收机测到,接收机有一个和卫星同步的波,测量即可得到此时卫星上的相位,那么,两者之差 (fraction)乘以波长,加上未知的整数部分 (Ambiguity)即可得到距离

但是由于卫星是运动的,运动过程中距离又在变化,所以还有一个 cycle 部分,接收机对卫星进行信号跟踪一段时间,通过积分可以求出这个cycle $$ Cycle(t+\delta t) = Int[\int_{t}^{t + \delta t} \delta f ~\mathrm{dt} + F(t)] $$ 但是如果有短时间遮挡等原因导致时区最终,这里算出来的值就会有误差,就是周跳,周跳有周跳的检测方法(挖坑)

测量相位只能得到周内的小数部分 (fraction),所以整数部分是未知的,也是无法测量的

瞬时的测量能够得到小数部分,如果保持追踪,载波相位应该是连续变化的

注:我们把位置信息叫做解,把载波相位未知的整数部分叫做整周模糊度,把EKF中所有带估计量整体向量叫做状态量

通过EKF(或者最小二乘法)已经有了浮点模糊度 $\hat{a}$,它们很遗憾不是整数,所以针对多个测量中的模糊度,要找一套整数组合 $\check{a}$ ,这就是模糊度固定(一般把整数叫做fix)

变换到新空间以降相关

最优的整数组合 $\breve{a}$ 应当满足目标函数最小的原则,目标函数还是残差平方和,设协方差矩阵为 $Q_{{\hat{a}}}$ $$ \breve a = argmin | (\hat{a} - \breve{a})^{T} Q_{\hat{a}}^{-1} (\hat{a} - \breve{a}) $$ 这个公式可参考最小二乘法,其实就是残差平方和的矩阵形式

相关性就是协方差矩阵体现,应尽可能使得近似对角矩阵,这样相关性才低。通过Z变换来实现: $$ \hat{z} = Z \hat{a} \ Q_{\hat{z}} = Z Q_{\hat a} Z^T \ $$ 那如何找这个 $Z$:

要进行Choleskey分解:$Q_{\hat{a}} = L D_{\hat{a}} L^T \quad Q_{\hat{z}} = \bar L D_{\hat{z}} \bar L^T$,其中 $L$ 是下三角矩阵且对角线上元素均为1,$D$ 是对角矩阵

LAMBDA算法要求:(为什么要这样也不清楚)

  • $\bar L$ 尽可能对角化(非对角元素小于0.5)
  • $Q_{\bar{a}}$​ 尽可能按序排列

所以后面会有降低和排序的操作

参考:

img

模糊度搜索

在新空间里面采取搜索算法(DFS等)找到最合适的解

img

较之原空间,搜索效率大大提高

检验

就是比的残差平方和,次优解与最优解之比越大说明最优解这个最低值越突出,也说明越可靠

RTKLIB源码

Reference