平方根 Kalman 滤波:矩阵推导及 GNSS 参数估计应用

本文主线:标准 Kalman → 协方差平方根 → QR 时间更新 → QR 量测更新 → 数值优势 → GNSS 参数估计


1. 核心结论

平方根 Kalman 滤波的英文是:

Square-Root Kalman Filter,SRKF

它不是:

  • 对状态向量开平方;
  • 计算状态误差的均方根;
  • 一种新的统计估计准则。

它是:

不直接递推误差协方差矩阵 P\mathbf PP,而是递推其矩阵平方根因子 S\mathbf SS

本文统一采用下三角形式:

P=SST\boxed{ \mathbf P=\mathbf S\mathbf S^{\mathrm T} }P=SST

其中:

  • P\mathbf PP:状态估计误差协方差矩阵;
  • S\mathbf SSP\mathbf PP 的下三角平方根因子;
  • (⋅)T(\cdot)^{\mathrm T}()T:矩阵转置。

标准 Kalman 与 SRKF 使用相同的状态模型、观测模型和统计目标。

标准Kalman
→ 直接更新协方差P

SRKF
→ 更新协方差因子S

在精确算术下,两者结果等价;在有限精度计算中,SRKF 通常更可靠。


2. “平方根”三个字怎样理解

标量 p>0p>0p>0 的平方根满足:

p=(p)2p=(\sqrt p)^2p=(p)2

对正定协方差矩阵 P\mathbf PP,需要区分两个相关概念。

2.1 对称主平方根

对称主平方根记为:

P1/2\mathbf P^{1/2}P1/2

它满足:

P1/2P1/2=P\mathbf P^{1/2}\mathbf P^{1/2} = \mathbf PP1/2P1/2=P

并且 P1/2\mathbf P^{1/2}P1/2 本身是对称正定矩阵。

2.2 协方差平方根因子

平方根 Kalman 滤波通常保存一个因子 S\mathbf SS

P=SST\boxed{ \mathbf P=\mathbf S\mathbf S^{\mathrm T} }P=SST

S\mathbf SS 常取 Cholesky 三角因子。它一般不对称,而且通常:

S2≠P\mathbf S^2\ne\mathbf PS2=P

因此,SRKF 中的“平方根”更准确地理解为:

能与自身转置相乘并恢复协方差的矩阵因子。

例如:

P=[4225]\mathbf P = \begin{bmatrix} 4 & 2\\ 2 & 5 \end{bmatrix}P=[4225]

其下三角 Cholesky 因子为:

S=[2012]\mathbf S = \begin{bmatrix} 2 & 0\\ 1 & 2 \end{bmatrix}S=[2102]

因为:

SST=[2012][2102]=[4225]=P\begin{aligned} \mathbf S\mathbf S^{\mathrm T} &= \begin{bmatrix} 2 & 0\\ 1 & 2 \end{bmatrix} \begin{bmatrix} 2 & 1\\ 0 & 2 \end{bmatrix}\\ &= \begin{bmatrix} 4 & 2\\ 2 & 5 \end{bmatrix}\\ &=\mathbf P \end{aligned}SST=[2102][2012]=[4225]=P

它不是对 P\mathbf PP 的元素逐个开平方,也不等同于对称主平方根 P1/2\mathbf P^{1/2}P1/2


3. 平方根因子是否唯一

满足:

P=SST\mathbf P=\mathbf S\mathbf S^{\mathrm T}P=SST

的普通因子一般不唯一。

U\mathbf UU 为正交矩阵:

UUT=I\mathbf U\mathbf U^{\mathrm T}=\mathbf IUUT=I

则:

P=(SU)(SU)T\mathbf P = \left(\mathbf S\mathbf U\right) \left(\mathbf S\mathbf U\right)^{\mathrm T}P=(SU)(SU)T

也是同一个协方差的因子分解。

为了使算法和软件接口统一,工程中通常规定:

  • 使用下三角 Cholesky 因子,或使用上三角因子;
  • 三角因子的对角线取正值;
  • 全部 QR 阵列和转置方向遵循同一约定。

对正定矩阵,正对角线的 Cholesky 三角因子唯一。


4. 协方差矩阵为什么可以分解

理论协方差矩阵满足:

P=PT\mathbf P=\mathbf P^{\mathrm T}P=PT

以及:

aTPa≥0\mathbf a^{\mathrm T}\mathbf P\mathbf a\ge 0aTPa0

其中:

  • a\mathbf aa:任意向量;
  • 第二式表示 P\mathbf PP 为半正定矩阵。

P\mathbf PP 正定,则可以进行普通 Cholesky 分解。

P\mathbf PP 仅半正定或秩亏,普通无主元 Cholesky 可能失败或出现零对角线,需要根据问题采用:

  • 矩形平方根;
  • 主元 Cholesky;
  • 秩揭示 QR;
  • 特征值分解;
  • 奇异值分解 SVD。

这类方法允许因子列数小于状态维数,从而显式表示零方差方向或严格约束方向。


5. 标准 Kalman 滤波模型

Kalman 滤波用于根据动态模型和含噪观测,递推估计随时间变化的状态。

状态方程:

xk=Fk−1xk−1+Bk−1uk−1+wk−1\mathbf x_k = \mathbf F_{k-1}\mathbf x_{k-1} + \mathbf B_{k-1}\mathbf u_{k-1} + \mathbf w_{k-1}xk=Fk1xk1+Bk1uk1+wk1

观测方程:

zk=Hkxk+vk\mathbf z_k = \mathbf H_k\mathbf x_k + \mathbf v_kzk=Hkxk+vk

其中:

  • xk∈Rn\mathbf x_k\in\mathbb R^nxkRn:第 kkk 个历元状态;
  • Fk−1\mathbf F_{k-1}Fk1:状态转移矩阵;
  • uk−1\mathbf u_{k-1}uk1:已知控制输入;
  • Bk−1\mathbf B_{k-1}Bk1:控制输入矩阵;
  • wk−1\mathbf w_{k-1}wk1:过程噪声;
  • zk∈Rm\mathbf z_k\in\mathbb R^mzkRm:观测向量;
  • Hk\mathbf H_kHk:观测矩阵;
  • vk\mathbf v_kvk:观测噪声。

噪声协方差为:

Cov⁡(wk−1)=Qk−1\operatorname{Cov}(\mathbf w_{k-1})=\mathbf Q_{k-1}Cov(wk1)=Qk1

Cov⁡(vk)=Rk\operatorname{Cov}(\mathbf v_k)=\mathbf R_kCov(vk)=Rk

标准公式通常假设过程噪声、观测噪声与相应的先验估计误差不相关。


6. 标准 Kalman 预测与更新

状态预测:

x^k−=Fk−1x^k−1++Bk−1uk−1\hat{\mathbf x}_k^{-} = \mathbf F_{k-1}\hat{\mathbf x}_{k-1}^{+} + \mathbf B_{k-1}\mathbf u_{k-1}x^k=Fk1x^k1++Bk1uk1

协方差预测:

Pk−=Fk−1Pk−1+Fk−1T+Qk−1\mathbf P_k^{-} = \mathbf F_{k-1} \mathbf P_{k-1}^{+} \mathbf F_{k-1}^{\mathrm T} + \mathbf Q_{k-1}Pk=Fk1Pk1+Fk1T+Qk1

新息:

νk=zk−Hkx^k−\boldsymbol\nu_k = \mathbf z_k-\mathbf H_k\hat{\mathbf x}_k^{-}νk=zkHkx^k

新息协方差:

Cν,k=HkPk−HkT+Rk\mathbf C_{\nu,k} = \mathbf H_k\mathbf P_k^{-}\mathbf H_k^{\mathrm T} + \mathbf R_kCν,k=HkPkHkT+Rk

Kalman 增益:

Kk=Pk−HkTCν,k−1\mathbf K_k = \mathbf P_k^{-}\mathbf H_k^{\mathrm T} \mathbf C_{\nu,k}^{-1}Kk=PkHkTCν,k1

状态更新:

x^k+=x^k−+Kkνk\hat{\mathbf x}_k^{+} = \hat{\mathbf x}_k^{-} + \mathbf K_k\boldsymbol\nu_kx^k+=x^k+Kkνk

其中:

  • 上标 −-:当前历元观测更新前的先验量;
  • 上标 +++:观测更新后的后验量;
  • νk\boldsymbol\nu_kνk:观测值与预测观测值之差。

7. 标准协方差更新的数值风险

简化的协方差更新为:

Pk+=(I−KkHk)Pk−\mathbf P_k^{+} = \left( \mathbf I-\mathbf K_k\mathbf H_k \right) \mathbf P_k^{-}Pk+=(IKkHk)Pk

有限精度计算可能导致:

  • Pk+\mathbf P_k^{+}Pk+ 不再严格对称;
  • 很小的正特征值变成负数;
  • 协方差失去半正定性;
  • 长时间递推后误差逐渐累积。

Joseph 形式为:

Pk+=(I−KkHk)Pk−(I−KkHk)T+KkRkKkT\begin{aligned} \mathbf P_k^{+} &= \left( \mathbf I-\mathbf K_k\mathbf H_k \right) \mathbf P_k^{-} \left( \mathbf I-\mathbf K_k\mathbf H_k \right)^{\mathrm T}\\ &\quad+ \mathbf K_k\mathbf R_k\mathbf K_k^{\mathrm T} \end{aligned}Pk+=(IKkHk)Pk(IKkHk)T+KkRkKkT

Joseph 形式数值上更稳健,但仍然直接保存和更新 P\mathbf PP

SRKF 则直接维护 S\mathbf SS


8. SRKF 针对什么问题

SRKF 主要针对:

有限精度计算造成的协方差数值不稳定

它重点改善:

  • 协方差的对称性;
  • 正定或半正定性质;
  • 病态矩阵计算;
  • 长时间递推可靠性;
  • 不同状态尺度造成的数值风险;
  • 单精度或有限字长实现。

它不直接解决:

  • 状态模型错误;
  • Q\mathbf QQR\mathbf RR 设置错误;
  • 粗差、多路径和周跳;
  • 非高斯噪声;
  • 系统不可观或弱可观问题。

SRKF 可以改善弱可观方向上的数值计算,但不能增加系统本身的可观性。


9. SRKF 的基本流程

上一历元
x加 S加

状态预测

QR时间更新
得到S减

计算新息

QR量测更新
得到S新息 G S加

三角回代

更新状态x加

SRKF 对状态均值的预测与标准 Kalman 相同。

变化主要发生在:

  • 协方差时间更新;
  • 新息协方差计算;
  • 后验协方差更新。

10. QR 分解为什么适合平方根滤波

设:

AT=QT\mathbf A^{\mathrm T} = \mathbf Q\mathbf TAT=QT

其中:

  • QTQ=I\mathbf Q^{\mathrm T}\mathbf Q=\mathbf IQTQ=I
  • T\mathbf TT 为上三角矩阵。

则:

AAT=TTQTQT=TTT\begin{aligned} \mathbf A\mathbf A^{\mathrm T} &= \mathbf T^{\mathrm T} \mathbf Q^{\mathrm T} \mathbf Q \mathbf T\\ &= \mathbf T^{\mathrm T}\mathbf T \end{aligned}AAT=TTQTQT=TTT

所以 TT\mathbf T^{\mathrm T}TTAAT\mathbf A\mathbf A^{\mathrm T}AAT 的下三角平方根因子。

QR 分解使用正交变换,并且不需要显式形成 Gram 矩阵或法方程。与“先形成法方程、再分解”相比,它通常具有更好的舍入误差性质。


11. SRKF 时间更新推导

设上一历元后验协方差因子为:

Pk−1+=Sk−1+Sk−1+T\mathbf P_{k-1}^{+} = \mathbf S_{k-1}^{+} \mathbf S_{k-1}^{+\mathrm T}Pk1+=Sk1+Sk1+T

过程噪声协方差因子为:

Qk−1=SQ,k−1SQ,k−1T\mathbf Q_{k-1} = \mathbf S_{Q,k-1} \mathbf S_{Q,k-1}^{\mathrm T}Qk1=SQ,k1SQ,k1T

代入协方差预测:

Pk−=Fk−1Sk−1+Sk−1+TFk−1T+SQ,k−1SQ,k−1T\begin{aligned} \mathbf P_k^{-} &= \mathbf F_{k-1} \mathbf S_{k-1}^{+} \mathbf S_{k-1}^{+\mathrm T} \mathbf F_{k-1}^{\mathrm T}\\ &\quad+ \mathbf S_{Q,k-1} \mathbf S_{Q,k-1}^{\mathrm T} \end{aligned}Pk=Fk1Sk1+Sk1+TFk1T+SQ,k1SQ,k1T

构造水平拼接矩阵:

Ak=[Fk−1Sk−1+SQ,k−1]\mathbf A_k = \begin{bmatrix} \mathbf F_{k-1}\mathbf S_{k-1}^{+} & \mathbf S_{Q,k-1} \end{bmatrix}Ak=[Fk1Sk1+SQ,k1]

于是:

Pk−=AkAkT\mathbf P_k^{-} = \mathbf A_k\mathbf A_k^{\mathrm T}Pk=AkAkT

AkT\mathbf A_k^{\mathrm T}AkT 做薄 QR 分解:

AkT=Qk(t)Tk\mathbf A_k^{\mathrm T} = \mathbf Q_k^{(t)}\mathbf T_kAkT=Qk(t)Tk

其中:

  • Qk(t)\mathbf Q_k^{(t)}Qk(t):列正交矩阵;
  • Tk\mathbf T_kTk:上三角矩阵。

因此:

Pk−=TkTTk\mathbf P_k^{-} = \mathbf T_k^{\mathrm T}\mathbf T_kPk=TkTTk

可取:

Sk−=TkT\boxed{ \mathbf S_k^{-} = \mathbf T_k^{\mathrm T} }Sk=TkT


12. 时间更新的维数检查

设:

  • 状态维数为 nnn
  • 过程噪声因子的列数为 qqq

则:

Fk−1Sk−1+∈Rn×n\mathbf F_{k-1}\mathbf S_{k-1}^{+} \in\mathbb R^{n\times n}Fk1Sk1+Rn×n

SQ,k−1∈Rn×q\mathbf S_{Q,k-1} \in\mathbb R^{n\times q}SQ,k1Rn×q

所以:

Ak∈Rn×(n+q)\mathbf A_k \in\mathbb R^{n\times(n+q)}AkRn×(n+q)

AkT∈R(n+q)×n\mathbf A_k^{\mathrm T} \in\mathbb R^{(n+q)\times n}AkTR(n+q)×n

薄 QR 分解得到:

Tk∈Rn×n\mathbf T_k\in\mathbb R^{n\times n}TkRn×n

因此 Sk−\mathbf S_k^{-}Skn×nn\times nn×n 下三角矩阵。


13. SRKF 量测更新预阵

设观测噪声协方差分解为:

Rk=SR,kSR,kT\mathbf R_k = \mathbf S_{R,k}\mathbf S_{R,k}^{\mathrm T}Rk=SR,kSR,kT

构造块矩阵:

Mk=[SR,kHkSk−0Sk−]\boxed{ \mathbf M_k = \begin{bmatrix} \mathbf S_{R,k} & \mathbf H_k\mathbf S_k^{-}\\ \mathbf 0 & \mathbf S_k^{-} \end{bmatrix} }Mk=[SR,k0HkSkSk]

其 Gram 矩阵为:

MkMkT=[Cν,kHkPk−Pk−HkTPk−]\mathbf M_k\mathbf M_k^{\mathrm T} = \begin{bmatrix} \mathbf C_{\nu,k} & \mathbf H_k\mathbf P_k^{-}\\ \mathbf P_k^{-}\mathbf H_k^{\mathrm T} & \mathbf P_k^{-} \end{bmatrix}MkMkT=[Cν,kPkHkTHkPkPk]

其中:

Cν,k=HkPk−HkT+Rk\mathbf C_{\nu,k} = \mathbf H_k\mathbf P_k^{-}\mathbf H_k^{\mathrm T} + \mathbf R_kCν,k=HkPkHkT+Rk

若状态维数为 nnn、观测维数为 mmm,则:

  • SR,k∈Rm×m\mathbf S_{R,k}\in\mathbb R^{m\times m}SR,kRm×m
  • HkSk−∈Rm×n\mathbf H_k\mathbf S_k^{-}\in\mathbb R^{m\times n}HkSkRm×n
  • Mk∈R(m+n)×(m+n)\mathbf M_k\in\mathbb R^{(m+n)\times(m+n)}MkR(m+n)×(m+n)

这里默认 Rk\mathbf R_kRk 正定。若观测噪声协方差半正定或存在严格约束,需要使用矩形因子或约束型平方根更新。


14. SRKF 量测更新推导

MkT\mathbf M_k^{\mathrm T}MkT 做 QR 分解,等价于寻找正交矩阵 Uk\mathbf U_kUk,使:

MkUk=[Sν,k0GkSk+]\boxed{ \mathbf M_k\mathbf U_k = \begin{bmatrix} \mathbf S_{\nu,k} & \mathbf 0\\ \mathbf G_k & \mathbf S_k^{+} \end{bmatrix} }MkUk=[Sν,kGk0Sk+]

其中:

  • Sν,k\mathbf S_{\nu,k}Sν,k:新息协方差的下三角因子;
  • Gk\mathbf G_kGk:状态与新息的交叉因子;
  • Sk+\mathbf S_k^{+}Sk+:后验协方差的下三角因子;
  • Uk\mathbf U_kUk:正交矩阵。

由于右乘正交矩阵不改变 Gram 矩阵,比较分块可得:

Sν,kSν,kT=Cν,k\boxed{ \mathbf S_{\nu,k} \mathbf S_{\nu,k}^{\mathrm T} = \mathbf C_{\nu,k} }Sν,kSν,kT=Cν,k

GkSν,kT=Pk−HkT\boxed{ \mathbf G_k \mathbf S_{\nu,k}^{\mathrm T} = \mathbf P_k^{-}\mathbf H_k^{\mathrm T} }GkSν,kT=PkHkT

GkGkT+Sk+Sk+T=Pk−\boxed{ \mathbf G_k\mathbf G_k^{\mathrm T} + \mathbf S_k^{+}\mathbf S_k^{+\mathrm T} = \mathbf P_k^{-} }GkGkT+Sk+Sk+T=Pk


15. 从平方根阵列得到状态更新

标准 Kalman 增益为:

Kk=Pk−HkTCν,k−1\mathbf K_k = \mathbf P_k^{-}\mathbf H_k^{\mathrm T} \mathbf C_{\nu,k}^{-1}Kk=PkHkTCν,k1

由:

Pk−HkT=GkSν,kT\mathbf P_k^{-}\mathbf H_k^{\mathrm T} = \mathbf G_k\mathbf S_{\nu,k}^{\mathrm T}PkHkT=GkSν,kT

以及:

Cν,k=Sν,kSν,kT\mathbf C_{\nu,k} = \mathbf S_{\nu,k}\mathbf S_{\nu,k}^{\mathrm T}Cν,k=Sν,kSν,kT

可得:

Kk=GkSν,k−1\boxed{ \mathbf K_k = \mathbf G_k\mathbf S_{\nu,k}^{-1} }Kk=GkSν,k1

实际计算不显式求逆。

先解三角方程:

Sν,kαk=νk\boxed{ \mathbf S_{\nu,k}\boldsymbol\alpha_k = \boldsymbol\nu_k }Sν,kαk=νk

再更新状态:

x^k+=x^k−+Gkαk\boxed{ \hat{\mathbf x}_k^{+} = \hat{\mathbf x}_k^{-} + \mathbf G_k\boldsymbol\alpha_k }x^k+=x^k+Gkαk

其中:

  • αk=Sν,k−1νk\boldsymbol\alpha_k=\mathbf S_{\nu,k}^{-1}\boldsymbol\nu_kαk=Sν,k1νk
  • 在模型一致时,αk\boldsymbol\alpha_kαk 的协方差为单位矩阵,因此可理解为白化新息。

16. 后验协方差因子为什么正确

由量测阵列:

Pk−=GkGkT+Sk+Sk+T\mathbf P_k^{-} = \mathbf G_k\mathbf G_k^{\mathrm T} + \mathbf S_k^{+}\mathbf S_k^{+\mathrm T}Pk=GkGkT+Sk+Sk+T

又因为:

KkCν,kKkT=GkGkT\mathbf K_k \mathbf C_{\nu,k} \mathbf K_k^{\mathrm T} = \mathbf G_k\mathbf G_k^{\mathrm T}KkCν,kKkT=GkGkT

所以:

Pk+=Pk−−KkCν,kKkT=Sk+Sk+T\begin{aligned} \mathbf P_k^{+} &= \mathbf P_k^{-} - \mathbf K_k \mathbf C_{\nu,k} \mathbf K_k^{\mathrm T}\\ &= \mathbf S_k^{+}\mathbf S_k^{+\mathrm T} \end{aligned}Pk+=PkKkCν,kKkT=Sk+Sk+T

因此,阵列中得到的 Sk+\mathbf S_k^{+}Sk+ 确实是后验协方差平方根。


17. 标准 Kalman 与 SRKF 的区别

对比项标准 KalmanSRKF
不确定度表示P\mathbf PPS\mathbf SS
基本关系直接递推协方差P=SST\mathbf P=\mathbf S\mathbf S^{\mathrm T}P=SST
主要运算协方差乘加QR、Cholesky、三角回代
精确算术结果基准与标准 Kalman 等价
数值稳定性依赖实现通常更好
协方差半正定性可能受舍入误差影响更容易维护
实现难度较低较高
计算量通常较小可能较大
天然抗粗差

18. SRKF 优化的是什么

SRKF 不改变 Kalman 滤波的统计目标。

它优化的是:

协方差及其更新过程的数值表示

主要体现在:

  1. 避免直接对相近的协方差矩阵做减法;
  2. 避免显式形成普通矩阵逆;
  3. 使用正交变换处理敏感矩阵运算;
  4. 更容易保持对称性;
  5. 更容易保持正定或半正定性质;
  6. 降低状态尺度差异带来的数值风险。

因此:

SRKF 的主要优势是数值可靠性,而不是理论精度模型发生变化。


19. 条件数怎样理解

P\mathbf PP 正定,且:

P=SST\mathbf P=\mathbf S\mathbf S^{\mathrm T}P=SST

则二范数条件数满足:

κ2(P)=κ22(S)\boxed{ \kappa_2(\mathbf P) = \kappa_2^2(\mathbf S) }κ2(P)=κ22(S)

因此:

κ2(S)=κ2(P)\kappa_2(\mathbf S) = \sqrt{\kappa_2(\mathbf P)}κ2(S)=κ2(P)

其中:

  • κ2(P)\kappa_2(\mathbf P)κ2(P):协方差矩阵的二范数条件数;
  • κ2(S)\kappa_2(\mathbf S)κ2(S):平方根因子的二范数条件数。

该关系说明平方根因子的条件数通常更温和。

但它不表示:

  • 状态误差会按平方根比例降低;
  • Kalman 增益一定提高同样比例的精度;
  • 错误模型会被平方根分解自动修复。

20. SRKF 的完整流程

输入上一历元
x加 S加

状态预测x减

构造时间更新预阵

QR得到S减

计算新息nu

构造量测更新预阵

正交三角化

得到S新息 G S加

三角回代

状态更新x加


21. 平方根算法、SRIF 与 UD 分解

平方根 Kalman 滤波有多种实现,例如:

  • Potter 平方根滤波;
  • Carlson 平方根滤波;
  • QR 阵列平方根滤波;
  • 平方根 EKF;
  • 平方根 UKF。

平方根信息滤波 SRIF 保存:

P−1=RxTRx\mathbf P^{-1} = \mathbf R_x^{\mathrm T}\mathbf R_xP1=RxTRx

其中:

  • Rx\mathbf R_xRx:上三角平方根信息矩阵。

SRIF 更接近白化最小二乘,适合信息累积、观测分块和参数消元。

UD 分解滤波保存:

P=UDUT\mathbf P = \mathbf U\mathbf D\mathbf U^{\mathrm T}P=UDUT

其中:

  • U\mathbf UU:单位上三角矩阵;
  • D\mathbf DD:非负对角矩阵。

UD 分解属于协方差因子化滤波。虽然可以进一步写成:

P=(UD1/2)(UD1/2)T\mathbf P = \left( \mathbf U\mathbf D^{1/2} \right) \left( \mathbf U\mathbf D^{1/2} \right)^{\mathrm T}P=(UD1/2)(UD1/2)T

但经典 UD 算法直接递推的是 U\mathbf UUD\mathbf DD,通常与直接递推 Cholesky 平方根因子的 SRKF 分开讨论。


22. SRKF 的主要优势

22.1 数值稳定性更好

正交变换通常能减少舍入误差对协方差结构的破坏。

22.2 更容易保持协方差性质

只要因子有效:

P=SST\mathbf P=\mathbf S\mathbf S^{\mathrm T}P=SST

恢复出的 P\mathbf PP 天然对称半正定。

22.3 适合长期递推

数值误差会随时间累积,平方根形式通常更适合长时间连续运行。

22.4 适合状态尺度差异大的系统

例如坐标、钟差、对流层和模糊度具有不同量纲和先验方差。

22.5 适合有限精度硬件

例如:

  • 单精度浮点;
  • 固定字长;
  • 嵌入式处理器;
  • 高可靠导航计算机。

23. SRKF 的局限

  • 实现复杂度较高;
  • 不同文献的上、下三角约定不同;
  • QR 分解可能增加计算量;
  • 状态动态增删需要专门的因子更新;
  • 半正定或秩亏矩阵不能盲目使用普通 Cholesky;
  • 不会自动调好 Q\mathbf QQR\mathbf RR
  • 不天然抵抗粗差、多路径和周跳;
  • 非线性系统仍需平方根 EKF、UKF 等扩展。
数值稳定
≠
模型正确
≠
观测没有异常

24. 在 GNSS 参数估计中是否适用

SRKF 很适合以下 GNSS 参数估计问题:

  • 长时间连续递推;
  • 状态维数较大;
  • 状态尺度差异明显;
  • 卫星几何较弱;
  • 单精度或有限字长计算;
  • 对协方差数值可靠性要求较高。

可估状态包括:

  • 接收机坐标、速度和加速度;
  • 接收机钟差和钟漂;
  • 对流层延迟;
  • 电离层延迟;
  • 整周模糊度;
  • 卫星钟差;
  • 轨道参数;
  • GNSS/INS 误差状态。

25. PPP 状态中的数值尺度问题

以简化的双频非组合 PPP 为例,状态可写为:

x=[rTc δtrTzwdITbϕT]T\mathbf x = \begin{bmatrix} \mathbf r^{\mathrm T} & c\,\delta t_r & T_{\mathrm{zwd}} & \mathbf I^{\mathrm T} & \mathbf b_{\phi}^{\mathrm T} \end{bmatrix}^{\mathrm T}x=[rTcδtrTzwdITbϕT]T

其中:

  • r\mathbf rr:接收机三维坐标,常用单位为米;
  • ccc:真空光速;
  • δtr\delta t_rδtr:接收机钟差,c δtrc\,\delta t_rcδtr 的单位为米;
  • TzwdT_{\mathrm{zwd}}Tzwd:天顶湿延迟,单位通常为米;
  • I\mathbf II:各卫星电离层延迟状态,其符号和单位由观测模型规定;
  • bϕ\mathbf b_{\phi}bϕ:各卫星的载波相位模糊度相关状态。

这里使用 bϕ\mathbf b_{\phi}bϕ 而不是直接写整数 N\mathbf NN,是因为 PPP 浮点状态可能同时吸收:

  • 整周模糊度;
  • 接收机和卫星相位偏差;
  • 初始相位常数;
  • 参数化中的波长因子。

只有在偏差产品、参考基准和单位全部一致后,才讨论可恢复的整数模糊度。

多系统 PPP 还可能增加:

  • 系统间偏差 ISB;
  • 频间偏差;
  • 接收机码偏差或其他基准参数。

这些状态具有不同的单位、先验方差、过程噪声和连续性。SRKF 能改善数值递推,但不能替代合理的参数化、基准约束和状态缩放。


26. PPP 与 PPP-AR 中的应用边界

SRKF 可用于:

  • 坐标、钟差和对流层递推;
  • 电离层状态估计;
  • 模糊度浮点估计;
  • 长时间静态或动态 PPP;
  • 观测中断期间的状态传播;
  • 模糊度状态的扩展和删除。

但以下功能仍需独立实现:

  • 周跳检测;
  • 模糊度整数固定;
  • 固定约束注入;
  • 错误固定释放;
  • 粗差探测;
  • 多路径处理;
  • 随机模型调整。

26.1 固定约束的数值边界

将模糊度完全固定为精确常数,理论上会使对应方向的后验方差变为零,协方差可能从正定变为半正定。

此时不能盲目使用要求正定的普通 Cholesky 更新。常见处理包括:

  • 使用约束型平方根滤波;
  • 在 QR 阵列中加入精确约束方程并消元;
  • 使用秩揭示分解;
  • 使用足够小但非零的约束方差,并评估其数值影响。

SRKF 不会提高卫星几何本身,也不会自动提高模糊度固定成功率。


27. GNSS/INS 组合导航中的应用

GNSS/INS 误差状态可能包括:

  • 位置误差;
  • 速度误差;
  • 姿态误差;
  • 陀螺零偏;
  • 加速度计零偏;
  • 比例因子;
  • 杆臂参数;
  • 时间同步误差。

长时间递推、弱可观状态和嵌入式有限精度计算,容易放大协方差数值问题。

平方根 EKF 或 SRKF 可以:

  • 提高长期递推的数值可靠性;
  • 更稳定地维护协方差因子;
  • 支持单精度实现;
  • 减少弱可观方向的数值退化。

但它不能改变系统的真实可观性。


28. 定轨、钟差和 GNSS 网络解算

高维 GNSS 估计可能包含:

  • 多颗卫星的轨道参数;
  • 卫星钟差;
  • 多测站接收机钟差;
  • 对流层参数;
  • 模糊度;
  • 地球定向和动力学参数。

常见选择包括:

  • SRKF:协方差平方根递推;
  • SRIF:平方根信息形式和参数消元;
  • 稀疏 QR 或因子图:大型稀疏系统。

SRIF 已用于卫星定轨、定位和钟差估计等 GNSS 参数估计问题。


29. 卫星升降与状态增删

GNSS 滤波器经常需要:

  • 增加新卫星模糊度;
  • 删除落下卫星状态;
  • 周跳后重置模糊度;
  • 增加或删除电离层状态。

SRKF 必须同步更新平方根因子,常用方法包括:

  • 块 Cholesky 扩展;
  • QR 更新;
  • Cholesky update/downdate;
  • Givens 旋转;
  • 重新三角化。

一般不能直接删除 S\mathbf SS 的任意一行和一列,因为结果通常不再对应正确的边缘协方差。

一个例外是:待删除状态已经通过置换移动到因子末端,并且因子具有相应块三角结构。实际工程通常先做状态置换,再使用 Givens 旋转、QR 或重新 Cholesky 三角化。


30. SRKF 是否有独有使用场景

严格来说,没有一种状态估计问题只能由 SRKF 解决。

在精确算术下,标准 Kalman 可以得到相同理论结果。

SRKF 最具代表性的应用场景是:

估计模型仍属于 Kalman 框架,但直接协方差递推受到有限精度、病态性或长期误差累积的威胁。

特别适合:

  • 高可靠导航;
  • 长时间连续运行;
  • 单精度或固定字长硬件;
  • 弱几何或弱可观条件下容易出现数值退化的系统;
  • 大状态维数;
  • 状态尺度差异明显;
  • 对协方差正定性要求严格。

它的独特工程价值是:

更可靠地实现同一个Kalman估计问题

31. 方法选择流程

线性

非线性

规模适中 条件良好

长期运行 病态 有限精度

大量观测 参数消元

需要进行动态状态估计

系统是否线性

数值条件

EKF UKF CKF等

标准Kalman

SRKF

SRIF或稀疏QR

是否存在明显数值风险

标准非线性滤波实现

平方根EKF UKF或CKF


32. 常见概念混淆

32.1 SRKF 就是均方根滤波

错误。SRKF 的“平方根”指协方差矩阵因子。

32.2 SRKF 是对状态向量开平方

错误。状态仍保持原物理单位。

32.3 S\mathbf SS 是对 P\mathbf PP 逐元素开平方

错误。它满足 P=SST\mathbf P=\mathbf S\mathbf S^{\mathrm T}P=SST

32.4 Cholesky 因子就是对称主平方根

错误。Cholesky 因子通常是三角矩阵,满足
P=SST\mathbf P=\mathbf S\mathbf S^{\mathrm T}P=SST,但一般不满足
S2=P\mathbf S^2=\mathbf PS2=P

32.5 SRKF 的理论精度一定高于标准 Kalman

错误。精确算术下两者等价。

32.6 SRKF 一定更快

错误。QR 和三角化可能增加计算量。

32.7 SRKF 天然抗粗差和多路径

错误。仍需异常检测和鲁棒估计。

32.8 SRKF 可以提高系统可观性

错误。它只能改善数值实现,不能创造新的观测信息。

32.9 使用 SRKF 就不需要调 Q\mathbf QQR\mathbf RR

错误。平方根实现不能修复错误的随机模型。

32.10 半正定矩阵一定能直接普通 Cholesky 分解

错误。秩亏时需要专门的分解方法。

32.11 UD 分解就是平方根 Kalman

不准确。UD 是相关的协方差因子化方法,但不是严格的平方根形式。


33. 工程实现检查清单

33.1 数学约定

  • 明确使用上三角还是下三角因子;
  • 全文转置方向保持一致;
  • 明确采用 P=SST\mathbf P=\mathbf S\mathbf S^{\mathrm T}P=SST 还是 P=STS\mathbf P=\mathbf S^{\mathrm T}\mathbf SP=STS
  • QR 三角因子的对角线符号是否规范化。

33.2 数值实现

  • 使用三角回代代替显式求逆;
  • 使用稳定的 QR 和 Cholesky 库;
  • 半正定噪声是否使用适当的矩形因子;
  • 精确约束是否采用约束型或秩揭示更新;
  • 状态是否进行合理缩放;
  • 是否避免显式形成病态法方程;
  • 是否监测 NaN、负对角线和秩亏。

33.3 GNSS 状态管理

  • 新升卫星是否正确扩展因子;
  • 落下卫星是否正确降阶;
  • 周跳后是否重置对应状态;
  • 固定模糊度约束是否正确注入且不会破坏因子秩;
  • 状态删除前是否进行了置换和重新三角化;
  • 是否保留新息和残差用于质量控制;
  • Q\mathbf QQR\mathbf RR 是否与实际场景匹配。

34. 总结

可以用下面几句话记住全文:

平方根 Kalman 滤波不直接递推协方差 P\mathbf PP,而是递推满足
P=SST\mathbf P=\mathbf S\mathbf S^{\mathrm T}P=SST 的矩阵因子 S\mathbf SS

“平方根”不是均方根,也不是对状态或矩阵元素逐个开平方;SRKF 通常递推的是 Cholesky 型协方差因子,而不是必须递推对称主平方根。

SRKF 与标准 Kalman 使用相同的统计模型和估计目标;精确算术下结果等价。

SRKF 通过 QR、Cholesky 和三角回代减少舍入误差,更容易维护协方差的对称性和正定性。

SRKF 适合 PPP、PPP-AR、GNSS/INS、精密定轨和实时钟差等长期、高维或数值条件较差的 GNSS 参数估计。

SRKF 的独特工程价值不是产生新的最优解,而是更可靠地实现原有 Kalman 估计。


参考资料

  • R. E. Kalman:A New Approach to Linear Filtering and Prediction Problems
  • C. L. Thornton:Triangular Covariance Factorizations for Kalman Filtering
  • G. J. Bierman:Factorization Methods for Discrete Sequential Estimation
  • K. Tracy:A Square-Root Kalman Filter Using Only QR Decompositions
  • IGS Workshop:Square Root Information Filter Considering Temporal Correlation of GNSS Observations
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱刷碗的苏泓舒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值