本文主线:信息矩阵 → 平方根信息方程 → 白化观测 → QR 量测更新 → 增广时间更新 → GNSS 参数估计
1. 结论
平方根信息滤波的英文是:
text
Square-Root Information Filter,SRIF
它是线性 Kalman/LMMSE 估计的一种因子化数值实现。
SRIF 通常不直接递推协方差矩阵:
P\mathbf PP
也不显式形成完整信息矩阵:
Λ=P−1\boldsymbol\Lambda=\mathbf P^{-1}Λ=P−1
而是维护上三角平方根信息因子:
Λ=RxTRx\boxed{ \boldsymbol\Lambda = \mathbf R_x^{\mathrm T}\mathbf R_x }Λ=RxTRx
以及平方根信息向量:
zx=Rxx^\boxed{ \mathbf z_x = \mathbf R_x\hat{\mathbf x} }zx=Rxx^
状态通过上三角方程求得:
Rxx^=zx\boxed{ \mathbf R_x\hat{\mathbf x} = \mathbf z_x }Rxx^=zx
其中:
- P\mathbf PP:状态估计误差协方差;
- Λ\boldsymbol\LambdaΛ:信息矩阵,也称精度矩阵;
- Rx\mathbf R_xRx:上三角平方根信息因子;
- x^\hat{\mathbf x}x^:状态估计;
- zx\mathbf z_xzx:平方根信息向量。
一句话理解:
SRIF 把动态状态估计组织成"白化最小二乘 + QR 正交消元"。
2. "平方根信息"怎样理解
"平方根信息"可以拆成:
text
信息 + 平方根因子
2.1 信息矩阵
当协方差矩阵 P\mathbf PP 正定时,信息矩阵定义为:
Λ=P−1\boxed{ \boldsymbol\Lambda = \mathbf P^{-1} }Λ=P−1
在一维情况下:
Λ=1σ2\Lambda=\frac{1}{\sigma^2}Λ=σ21
其中:
- σ2\sigma^2σ2:方差;
- Λ\LambdaΛ:信息或精度。
因此,在同一参数方向上:
text
方差越小
→ 不确定度越小
→ 信息越大
对矩阵不能简单比较每个元素的大小,应在半正定矩阵偏序意义下比较信息多少。
2.2 平方根信息因子
SRIF 保存:
Λ=RxTRx\boxed{ \boldsymbol\Lambda = \mathbf R_x^{\mathrm T}\mathbf R_x }Λ=RxTRx
这里的"平方根"不是逐元素开平方,也不要求使用对称主平方根。
它表示:
用一个三角因子的转置与其自身相乘,恢复信息矩阵。
2.3 平方根信息向量
普通信息向量为:
η=Λx^\boxed{ \boldsymbol\eta = \boldsymbol\Lambda\hat{\mathbf x} }η=Λx^
平方根信息向量为:
zx=Rxx^\boxed{ \mathbf z_x = \mathbf R_x\hat{\mathbf x} }zx=Rxx^
二者满足:
η=RxTzx\boxed{ \boldsymbol\eta = \mathbf R_x^{\mathrm T}\mathbf z_x }η=RxTzx
3. 信息形式的适用条件
普通信息矩阵:
Λ=P−1\boldsymbol\Lambda=\mathbf P^{-1}Λ=P−1
要求 P\mathbf PP 可逆。
如果存在:
- 严格固定参数;
- 零方差方向;
- 基准未定义;
- 不可观参数;
- 秩亏先验;
则 P\mathbf PP 可能奇异,普通信息矩阵不再存在。
此时需要采用:
- 精确约束方程;
- 矩形平方根信息因子;
- 秩揭示 QR;
- SVD;
- 广义逆;
- 重新参数化;
- 补充基准约束。
以下基础推导先假设协方差正定、平方根信息因子满秩。
4. 一维直观例子
设:
x^=10,P=4\hat x=10, \qquad P=4x^=10,P=4
信息为:
Λ=P−1=14\Lambda=P^{-1}=\frac14Λ=P−1=41
可取平方根信息因子:
Rx=12R_x=\frac12Rx=21
平方根信息向量为:
zx=Rxx^=12×10=5z_x=R_x\hat x = \frac12\times10 = 5zx=Rxx^=21×10=5
状态由:
Rxx^=zxR_x\hat x=z_xRxx^=zx
恢复:
12x^=5⟹x^=10\frac12\hat x=5 \quad\Longrightarrow\quad \hat x=1021x^=5⟹x^=10
5. 从高斯分布理解信息形式
设状态服从高斯分布:
x∼N(x^,P)\mathbf x \sim \mathcal N \left( \hat{\mathbf x}, \mathbf P \right)x∼N(x^,P)
其概率密度中与 x\mathbf xx 有关的指数项为:
−12(x−x^)TP−1(x−x^)-\frac12 \left( \mathbf x-\hat{\mathbf x} \right)^{\mathrm T} \mathbf P^{-1} \left( \mathbf x-\hat{\mathbf x} \right)−21(x−x^)TP−1(x−x^)
定义:
Λ=P−1\boldsymbol\Lambda=\mathbf P^{-1}Λ=P−1
展开二次型:
(x−x^)TΛ(x−x^)=xTΛx−2x^TΛx+x^TΛx^\begin{aligned} &\left( \mathbf x-\hat{\mathbf x} \right)^{\mathrm T} \boldsymbol\Lambda \left( \mathbf x-\hat{\mathbf x} \right)\\ &= \mathbf x^{\mathrm T}\boldsymbol\Lambda\mathbf x - 2\hat{\mathbf x}^{\mathrm T} \boldsymbol\Lambda\mathbf x + \hat{\mathbf x}^{\mathrm T} \boldsymbol\Lambda\hat{\mathbf x} \end{aligned}(x−x^)TΛ(x−x^)=xTΛx−2x^TΛx+x^TΛx^
令:
η=Λx^\boldsymbol\eta = \boldsymbol\Lambda\hat{\mathbf x}η=Λx^
则同一个高斯分布可以表示为:
text
均值 + 协方差
或:
text
信息向量 + 信息矩阵
6. 信息形式与最小二乘
若:
Λ=RxTRx\boldsymbol\Lambda = \mathbf R_x^{\mathrm T}\mathbf R_xΛ=RxTRx
且:
zx=Rxx^\mathbf z_x = \mathbf R_x\hat{\mathbf x}zx=Rxx^
则状态估计等价于:
x^=argminx∥Rxx−zx∥22\boxed{ \hat{\mathbf x} = \arg\min_{\mathbf x} \left\| \mathbf R_x\mathbf x-\mathbf z_x \right\|_2^2 }x^=argxmin∥Rxx−zx∥22
定义目标函数:
J(x)=(Rxx−zx)T(Rxx−zx)J(\mathbf x) = \left( \mathbf R_x\mathbf x-\mathbf z_x \right)^{\mathrm T} \left( \mathbf R_x\mathbf x-\mathbf z_x \right)J(x)=(Rxx−zx)T(Rxx−zx)
对 x\mathbf xx 求梯度:
∇xJ=2RxT(Rxx−zx)\nabla_{\mathbf x}J = 2\mathbf R_x^{\mathrm T} \left( \mathbf R_x\mathbf x-\mathbf z_x \right)∇xJ=2RxT(Rxx−zx)
令梯度为零:
RxTRxx=RxTzx\mathbf R_x^{\mathrm T}\mathbf R_x\mathbf x = \mathbf R_x^{\mathrm T}\mathbf z_xRxTRxx=RxTzx
即:
Λx=η\boldsymbol\Lambda\mathbf x = \boldsymbol\etaΛx=η
若 Rx\mathbf R_xRx 非奇异,可直接解上三角方程:
Rxx^=zx\boxed{ \mathbf R_x\hat{\mathbf x} = \mathbf z_x }Rxx^=zx
无需计算 Λ−1\boldsymbol\Lambda^{-1}Λ−1。
7. 为什么使用 QR 而不是法方程
设白化后的线性模型为:
Ax≈b\mathbf A\mathbf x \approx \mathbf bAx≈b
法方程为:
ATAx=ATb\mathbf A^{\mathrm T}\mathbf A\mathbf x = \mathbf A^{\mathrm T}\mathbf bATAx=ATb
若 A\mathbf AA 满列秩,则二范数条件数满足:
κ2(ATA)=κ22(A)\boxed{ \kappa_2 \left( \mathbf A^{\mathrm T}\mathbf A \right) = \kappa_2^2(\mathbf A) }κ2(ATA)=κ22(A)
因此,显式形成法方程会放大病态性。
SRIF 直接对 A\mathbf AA 进行 QR、Householder 或 Givens 正交变换,不显式形成:
ATA\mathbf A^{\mathrm T}\mathbf AATA
通常具有更好的舍入误差性质。
第一部分:SRIF 量测更新
8. 线性观测模型
设:
y=Hx+v\mathbf y = \mathbf H\mathbf x+\mathbf vy=Hx+v
其中:
- y∈Rm\mathbf y\in\mathbb R^my∈Rm:观测向量;
- H∈Rm×n\mathbf H\in\mathbb R^{m\times n}H∈Rm×n:设计矩阵;
- x∈Rn\mathbf x\in\mathbb R^nx∈Rn:待估状态;
- v\mathbf vv:观测噪声。
假设:
E(v)=0\operatorname E(\mathbf v)=\mathbf0E(v)=0
Cov(v)=Rv\operatorname{Cov}(\mathbf v) = \mathbf R_vCov(v)=Rv
这里用 Rv\mathbf R_vRv 表示观测噪声协方差,避免与平方根信息因子 Rx\mathbf R_xRx 混淆。
9. 观测白化
若 Rv\mathbf R_vRv 正定,可进行 Cholesky 分解:
Rv=LvLvT\mathbf R_v = \mathbf L_v\mathbf L_v^{\mathrm T}Rv=LvLvT
定义白化算子:
Wv=Lv−1\mathbf W_v = \mathbf L_v^{-1}Wv=Lv−1
左乘观测方程:
Wvy=WvHx+Wvv\mathbf W_v\mathbf y = \mathbf W_v\mathbf H\mathbf x + \mathbf W_v\mathbf vWvy=WvHx+Wvv
白化噪声协方差为:
Cov(Wvv)=WvRvWvT=I\begin{aligned} \operatorname{Cov} \left( \mathbf W_v\mathbf v \right) &= \mathbf W_v \mathbf R_v \mathbf W_v^{\mathrm T}\\ &= \mathbf I \end{aligned}Cov(Wvv)=WvRvWvT=I
定义:
y~=Wvy\tilde{\mathbf y} = \mathbf W_v\mathbf yy~=Wvy
H~=WvH\tilde{\mathbf H} = \mathbf W_v\mathbf HH~=WvH
得到单位协方差观测:
y~=H~x+v~\tilde{\mathbf y} = \tilde{\mathbf H}\mathbf x + \tilde{\mathbf v}y~=H~x+v~
实际程序中不显式计算 Lv−1\mathbf L_v^{-1}Lv−1,而是求解:
Lvy~=y\mathbf L_v\tilde{\mathbf y} = \mathbf yLvy~=y
LvH~=H\mathbf L_v\tilde{\mathbf H} = \mathbf HLvH~=H
10. 普通信息滤波的量测更新
先验状态和协方差为:
x^−,P−\hat{\mathbf x}^{-}, \qquad \mathbf P^{-}x^−,P−
先验信息定义为:
Λ−=(P−)−1\boxed{ \boldsymbol\Lambda^{-} = \left( \mathbf P^{-} \right)^{-1} }Λ−=(P−)−1
η−=Λ−x^−\boxed{ \boldsymbol\eta^{-} = \boldsymbol\Lambda^{-} \hat{\mathbf x}^{-} }η−=Λ−x^−
先验与量测的联合目标函数为:
J(x)=(x−x^−)TΛ−(x−x^−)+(y−Hx)TRv−1(y−Hx)\begin{aligned} J(\mathbf x) &= \left( \mathbf x-\hat{\mathbf x}^{-} \right)^{\mathrm T} \boldsymbol\Lambda^{-} \left( \mathbf x-\hat{\mathbf x}^{-} \right)\\ &\quad+ \left( \mathbf y-\mathbf H\mathbf x \right)^{\mathrm T} \mathbf R_v^{-1} \left( \mathbf y-\mathbf H\mathbf x \right) \end{aligned}J(x)=(x−x^−)TΛ−(x−x^−)+(y−Hx)TRv−1(y−Hx)
对 x\mathbf xx 求导并令其为零,得到:
Λ+=Λ−+HTRv−1H\boxed{ \boldsymbol\Lambda^{+} = \boldsymbol\Lambda^{-} + \mathbf H^{\mathrm T} \mathbf R_v^{-1} \mathbf H }Λ+=Λ−+HTRv−1H
η+=η−+HTRv−1y\boxed{ \boldsymbol\eta^{+} = \boldsymbol\eta^{-} + \mathbf H^{\mathrm T} \mathbf R_v^{-1} \mathbf y }η+=η−+HTRv−1y
这里要求:
- 当前量测噪声与先验估计误差不相关;
- 分批加入的观测条件独立,或已经使用完整协方差联合白化。
否则不能简单重复相加信息。
11. SRIF 的增广信息方程
先验平方根信息方程为:
Rx−x≈zx−\mathbf R_x^{-}\mathbf x \approx \mathbf z_x^{-}Rx−x≈zx−
白化观测方程为:
H~x≈y~\tilde{\mathbf H}\mathbf x \approx \tilde{\mathbf y}H~x≈y~
将二者纵向堆叠:
Rx−H\~\]x≈\[zx−y\~\]\\boxed{ \\begin{bmatrix} \\mathbf R_x\^{-}\\\\ \\tilde{\\mathbf H} \\end{bmatrix} \\mathbf x \\approx \\begin{bmatrix} \\mathbf z_x\^{-}\\\\ \\tilde{\\mathbf y} \\end{bmatrix} }\[Rx−H\~\]x≈\[zx−y\~
#mermaid-svg-5nGJ0bkSNmgVUAb0{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .error-icon{fill:#552222;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .marker.cross{stroke:#333333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5nGJ0bkSNmgVUAb0 p{margin:0;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .cluster-label text{fill:#333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .cluster-label span{color:#333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .cluster-label span p{background-color:transparent;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .label text,#mermaid-svg-5nGJ0bkSNmgVUAb0 span{fill:#333;color:#333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .node rect,#mermaid-svg-5nGJ0bkSNmgVUAb0 .node circle,#mermaid-svg-5nGJ0bkSNmgVUAb0 .node ellipse,#mermaid-svg-5nGJ0bkSNmgVUAb0 .node polygon,#mermaid-svg-5nGJ0bkSNmgVUAb0 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .rough-node .label text,#mermaid-svg-5nGJ0bkSNmgVUAb0 .node .label text,#mermaid-svg-5nGJ0bkSNmgVUAb0 .image-shape .label,#mermaid-svg-5nGJ0bkSNmgVUAb0 .icon-shape .label{text-anchor:middle;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .rough-node .label,#mermaid-svg-5nGJ0bkSNmgVUAb0 .node .label,#mermaid-svg-5nGJ0bkSNmgVUAb0 .image-shape .label,#mermaid-svg-5nGJ0bkSNmgVUAb0 .icon-shape .label{text-align:center;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .node.clickable{cursor:pointer;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .arrowheadPath{fill:#333333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-5nGJ0bkSNmgVUAb0 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5nGJ0bkSNmgVUAb0 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-5nGJ0bkSNmgVUAb0 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .cluster text{fill:#333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .cluster span{color:#333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-5nGJ0bkSNmgVUAb0 rect.text{fill:none;stroke-width:0;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .icon-shape,#mermaid-svg-5nGJ0bkSNmgVUAb0 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .icon-shape p,#mermaid-svg-5nGJ0bkSNmgVUAb0 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .icon-shape .label rect,#mermaid-svg-5nGJ0bkSNmgVUAb0 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5nGJ0bkSNmgVUAb0 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-5nGJ0bkSNmgVUAb0 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-5nGJ0bkSNmgVUAb0 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 先验信息方程
纵向堆叠
白化观测方程
QR正交三角化
后验信息因子
上三角回代
12. QR 量测更新推导
定义:
Am=Rx−H\~\mathbf A_m = \begin{bmatrix} \mathbf R_x^{-}\\ \tilde{\mathbf H} \end{bmatrix}Am=Rx−H\~
bm=zx−y\~\mathbf b_m = \begin{bmatrix} \mathbf z_x^{-}\\ \tilde{\mathbf y} \end{bmatrix}bm=zx−y\~
若状态维数为 nnn、观测维数为 mmm,则:
Am∈R(n+m)×n\mathbf A_m \in \mathbb R^{(n+m)\times n}Am∈R(n+m)×n
构造正交矩阵 Qm\mathbf Q_mQm,使:
QmTAm=Rx+0\boxed{ \mathbf Q_m^{\mathrm T}\mathbf A_m = \begin{bmatrix} \mathbf R_x^{+}\\ \mathbf0 \end{bmatrix} }QmTAm=Rx+0
右端同步变换:
QmTbm=zx+e\boxed{ \mathbf Q_m^{\mathrm T}\mathbf b_m = \begin{bmatrix} \mathbf z_x^{+}\\ \mathbf e \end{bmatrix} }QmTbm=zx+e
于是:
∥Amx−bm∥22=∥Rx+x−zx+∥22+∥e∥22\left\| \mathbf A_m\mathbf x-\mathbf b_m \right\|_2^2 = \left\| \mathbf R_x^{+}\mathbf x-\mathbf z_x^{+} \right\|_2^2 + \|\mathbf e\|_2^2∥Amx−bm∥22= Rx+x−zx+ 22+∥e∥22
后验状态由:
Rx+x^+=zx+\boxed{ \mathbf R_x^{+} \hat{\mathbf x}^{+} = \mathbf z_x^{+} }Rx+x^+=zx+
求得。
13. 为什么 QR 更新等价于信息更新
正交变换保持内积,因此:
AmTAm=Rx+TRx+\mathbf A_m^{\mathrm T}\mathbf A_m = \mathbf R_x^{+\mathrm T}\mathbf R_x^{+}AmTAm=Rx+TRx+
展开左侧:
AmTAm=Rx−TRx−+H~TH~=Λ−+HTRv−1H=Λ+\begin{aligned} \mathbf A_m^{\mathrm T}\mathbf A_m &= \mathbf R_x^{-\mathrm T}\mathbf R_x^{-} + \tilde{\mathbf H}^{\mathrm T}\tilde{\mathbf H}\\ &= \boldsymbol\Lambda^{-} + \mathbf H^{\mathrm T}\mathbf R_v^{-1}\mathbf H\\ &= \boldsymbol\Lambda^{+} \end{aligned}AmTAm=Rx−TRx−+H~TH~=Λ−+HTRv−1H=Λ+
所以:
Λ+=Rx+TRx+\boxed{ \boldsymbol\Lambda^{+} = \mathbf R_x^{+\mathrm T}\mathbf R_x^{+} }Λ+=Rx+TRx+
同理:
AmTbm=Rx+Tzx+\mathbf A_m^{\mathrm T}\mathbf b_m = \mathbf R_x^{+\mathrm T}\mathbf z_x^{+}AmTbm=Rx+Tzx+
因此:
η+=Rx+Tzx+\boxed{ \boldsymbol\eta^{+} = \mathbf R_x^{+\mathrm T}\mathbf z_x^{+} }η+=Rx+Tzx+
这说明 SRIF 与普通信息滤波在精确算术下等价。
14. 正交残差与新息统计
标准 Kalman 新息为:
ν=y−Hx^−\boldsymbol\nu = \mathbf y-\mathbf H\hat{\mathbf x}^{-}ν=y−Hx^−
新息协方差为:
Sν=HP−HT+Rv\mathbf S_\nu = \mathbf H\mathbf P^{-}\mathbf H^{\mathrm T} + \mathbf R_vSν=HP−HT+Rv
在先验和量测模型一致、矩阵满秩时,增广最小二乘的最小代价满足:
∥e∥22=νTSν−1ν\boxed{ \|\mathbf e\|2^2 = \boldsymbol\nu^{\mathrm T} \mathbf S\nu^{-1} \boldsymbol\nu }∥e∥22=νTSν−1ν
右侧就是归一化新息平方 NIS。
若噪声服从正确的高斯模型,且观测维数为 mmm,则:
NIS∼χm2\mathrm{NIS} \sim \chi_m^2NIS∼χm2
因此,e\mathbf ee 可以辅助用于:
- 新息一致性检验;
- 粗差检测;
- 方差因子评估;
- 模型比较。
但仍需注意:
- 自由度应按有效秩确定;
- 相关观测必须正确白化;
- 残差小不代表估计无偏;
- 完整似然还包含协方差行列式等归一化项。
第二部分:SRIF 时间更新
15. 状态模型
状态方程为:
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=Fk−1xk−1+Bk−1uk−1+wk−1
其中:
- xk−1\mathbf x_{k-1}xk−1:上一历元状态;
- xk\mathbf x_kxk:当前历元状态;
- Fk−1\mathbf F_{k-1}Fk−1:状态转移矩阵;
- Bk−1uk−1\mathbf B_{k-1}\mathbf u_{k-1}Bk−1uk−1:已知控制项;
- wk−1\mathbf w_{k-1}wk−1:过程噪声。
设:
Cov(wk−1)=Qk−1\operatorname{Cov} \left( \mathbf w_{k-1} \right) = \mathbf Q_{k-1}Cov(wk−1)=Qk−1
协方差形式的预测为:
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−=Fk−1Pk−1+Fk−1T+Qk−1
过程噪声增加不确定度,也就是减少信息。
因此,时间更新不能像量测更新一样简单地进行信息加法。
16. 全秩过程噪声下的增广模型
若:
Qk−1=LQLQT\mathbf Q_{k-1} = \mathbf L_Q\mathbf L_Q^{\mathrm T}Qk−1=LQLQT
且 Qk−1\mathbf Q_{k-1}Qk−1 正定,定义:
WQ=LQ−1\mathbf W_Q = \mathbf L_Q^{-1}WQ=LQ−1
白化过程方程:
−WQFk−1xk−1+WQxk≈WQBk−1uk−1-\mathbf W_Q\mathbf F_{k-1}\mathbf x_{k-1} + \mathbf W_Q\mathbf x_k \approx \mathbf W_Q\mathbf B_{k-1}\mathbf u_{k-1}−WQFk−1xk−1+WQxk≈WQBk−1uk−1
上一历元后验信息方程为:
Rx,k−1+xk−1≈zx,k−1+\mathbf R_{x,k-1}^{+} \mathbf x_{k-1} \approx \mathbf z_{x,k-1}^{+}Rx,k−1+xk−1≈zx,k−1+
将两式堆叠:
Rx,k−1+0−WQFk−1WQ\]\[xk−1xk\]≈\[zx,k−1+WQBk−1uk−1\]\\boxed{ \\begin{bmatrix} \\mathbf R_{x,k-1}\^{+} \& \\mathbf0\\\\ -\\mathbf W_Q\\mathbf F_{k-1} \& \\mathbf W_Q \\end{bmatrix} \\begin{bmatrix} \\mathbf x_{k-1}\\\\ \\mathbf x_k \\end{bmatrix} \\approx \\begin{bmatrix} \\mathbf z_{x,k-1}\^{+}\\\\ \\mathbf W_Q\\mathbf B_{k-1}\\mathbf u_{k-1} \\end{bmatrix} }\[Rx,k−1+−WQFk−10WQ\]\[xk−1xk\]≈\[zx,k−1+WQBk−1uk−1
这是关于旧状态与当前状态的联合白化最小二乘问题。
17. 正交消元得到当前先验
对联合系统进行正交三角化,并将旧状态变量排在前面:
QtTRx,k−1+0−WQFk−1WQ=R11R120Rx,k−\mathbf Q_t^{\mathrm T} \begin{bmatrix} \mathbf R_{x,k-1}^{+} & \mathbf0\\ -\mathbf W_Q\mathbf F_{k-1} & \mathbf W_Q \end{bmatrix} = \begin{bmatrix} \mathbf R_{11} & \mathbf R_{12}\\ \mathbf0 & \mathbf R_{x,k}^{-} \end{bmatrix}QtTRx,k−1+−WQFk−10WQ=R110R12Rx,k−
右端同步变换:
QtTzx,k−1+WQBk−1uk−1=z1zx,k−\mathbf Q_t^{\mathrm T} \begin{bmatrix} \mathbf z_{x,k-1}^{+}\\ \mathbf W_Q\mathbf B_{k-1}\mathbf u_{k-1} \end{bmatrix} = \begin{bmatrix} \mathbf z_1\\ \mathbf z_{x,k}^{-} \end{bmatrix}QtTzx,k−1+WQBk−1uk−1=z1zx,k−
对应目标函数为:
J=∥R11xk−1+R12xk−z1∥22+∥Rx,k−xk−zx,k−∥22\begin{aligned} J &= \left\| \mathbf R_{11}\mathbf x_{k-1} + \mathbf R_{12}\mathbf x_k - \mathbf z_1 \right\|2^2\\ &\quad+ \left\| \mathbf R{x,k}^{-}\mathbf x_k - \mathbf z_{x,k}^{-} \right\|_2^2 \end{aligned}J=∥R11xk−1+R12xk−z1∥22+ Rx,k−xk−zx,k− 22
在本文"前后状态维数相同、过程噪声全秩"的简化模型下,若方阵 R11\mathbf R_{11}R11 非奇异,则对任意给定的 xk\mathbf x_kxk,都可选择:
xk−1=R11−1(z1−R12xk)\mathbf x_{k-1} = \mathbf R_{11}^{-1} \left( \mathbf z_1-\mathbf R_{12}\mathbf x_k \right)xk−1=R11−1(z1−R12xk)
使第一项为零。
因此,边缘化旧状态后保留:
Rx,k−xk≈zx,k−\boxed{ \mathbf R_{x,k}^{-}\mathbf x_k \approx \mathbf z_{x,k}^{-} }Rx,k−xk≈zx,k−
其信息矩阵等价于联合信息矩阵对旧状态块的 Schur 补。
若 R11\mathbf R_{11}R11 秩亏,必须使用秩揭示 QR、SVD、基准约束或重新参数化,不能直接丢弃上方方程。
18. 奇异过程噪声怎样处理
前述白化使用:
WQ=LQ−1\mathbf W_Q=\mathbf L_Q^{-1}WQ=LQ−1
要求 Qk−1\mathbf Q_{k-1}Qk−1 正定。
GNSS 中常出现零过程噪声,例如:
- 常值模糊度;
- 固定坐标;
- 确定性动力学状态;
- 严格约束参数。
此时常用方法包括:
- 把确定性转移写成精确等式约束;
- 只对白噪声子空间进行白化;
- 使用矩形过程噪声因子;
- 显式引入低维驱动噪声;
- 使用秩揭示 QR 或 SVD;
- 重新参数化状态。
不能仅为使 Q\mathbf QQ 可逆而随意增加过程噪声,否则会改变物理随机模型。
19. SRIF 完整流程
#mermaid-svg-MaS0iJnwrMRfWAt0{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-MaS0iJnwrMRfWAt0 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-MaS0iJnwrMRfWAt0 .error-icon{fill:#552222;}#mermaid-svg-MaS0iJnwrMRfWAt0 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-MaS0iJnwrMRfWAt0 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-MaS0iJnwrMRfWAt0 .marker.cross{stroke:#333333;}#mermaid-svg-MaS0iJnwrMRfWAt0 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-MaS0iJnwrMRfWAt0 p{margin:0;}#mermaid-svg-MaS0iJnwrMRfWAt0 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-MaS0iJnwrMRfWAt0 .cluster-label text{fill:#333;}#mermaid-svg-MaS0iJnwrMRfWAt0 .cluster-label span{color:#333;}#mermaid-svg-MaS0iJnwrMRfWAt0 .cluster-label span p{background-color:transparent;}#mermaid-svg-MaS0iJnwrMRfWAt0 .label text,#mermaid-svg-MaS0iJnwrMRfWAt0 span{fill:#333;color:#333;}#mermaid-svg-MaS0iJnwrMRfWAt0 .node rect,#mermaid-svg-MaS0iJnwrMRfWAt0 .node circle,#mermaid-svg-MaS0iJnwrMRfWAt0 .node ellipse,#mermaid-svg-MaS0iJnwrMRfWAt0 .node polygon,#mermaid-svg-MaS0iJnwrMRfWAt0 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-MaS0iJnwrMRfWAt0 .rough-node .label text,#mermaid-svg-MaS0iJnwrMRfWAt0 .node .label text,#mermaid-svg-MaS0iJnwrMRfWAt0 .image-shape .label,#mermaid-svg-MaS0iJnwrMRfWAt0 .icon-shape .label{text-anchor:middle;}#mermaid-svg-MaS0iJnwrMRfWAt0 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-MaS0iJnwrMRfWAt0 .rough-node .label,#mermaid-svg-MaS0iJnwrMRfWAt0 .node .label,#mermaid-svg-MaS0iJnwrMRfWAt0 .image-shape .label,#mermaid-svg-MaS0iJnwrMRfWAt0 .icon-shape .label{text-align:center;}#mermaid-svg-MaS0iJnwrMRfWAt0 .node.clickable{cursor:pointer;}#mermaid-svg-MaS0iJnwrMRfWAt0 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-MaS0iJnwrMRfWAt0 .arrowheadPath{fill:#333333;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-MaS0iJnwrMRfWAt0 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-MaS0iJnwrMRfWAt0 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-MaS0iJnwrMRfWAt0 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-MaS0iJnwrMRfWAt0 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-MaS0iJnwrMRfWAt0 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-MaS0iJnwrMRfWAt0 .cluster text{fill:#333;}#mermaid-svg-MaS0iJnwrMRfWAt0 .cluster span{color:#333;}#mermaid-svg-MaS0iJnwrMRfWAt0 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-MaS0iJnwrMRfWAt0 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-MaS0iJnwrMRfWAt0 rect.text{fill:none;stroke-width:0;}#mermaid-svg-MaS0iJnwrMRfWAt0 .icon-shape,#mermaid-svg-MaS0iJnwrMRfWAt0 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-MaS0iJnwrMRfWAt0 .icon-shape p,#mermaid-svg-MaS0iJnwrMRfWAt0 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-MaS0iJnwrMRfWAt0 .icon-shape .label rect,#mermaid-svg-MaS0iJnwrMRfWAt0 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-MaS0iJnwrMRfWAt0 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-MaS0iJnwrMRfWAt0 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-MaS0iJnwrMRfWAt0 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 上一历元
R加 z加
加入过程模型
正交消元旧状态
当前先验
R减 z减
加入白化观测
QR三角化
当前后验
R加 z加
三角回代求状态
第三部分:与其他滤波方法的区别
20. SRIF 与协方差型 SRKF
协方差型平方根 Kalman 滤波保存:
P=SST\mathbf P = \mathbf S\mathbf S^{\mathrm T}P=SST
SRIF 保存:
P−1=RxTRx\mathbf P^{-1} = \mathbf R_x^{\mathrm T}\mathbf R_xP−1=RxTRx
| 对比项 | 协方差型 SRKF | SRIF |
|---|---|---|
| 保存对象 | 协方差因子 S\mathbf SS | 信息因子 Rx\mathbf R_xRx |
| 直接表示 | 不确定度 | 约束信息 |
| 量测更新 | Kalman 阵列更新 | 追加白化观测行 |
| 时间更新 | 通常较直接 | 需要增广与边缘化 |
| 获取完整协方差 | 直接计算 | 需要三角求解 |
| 参数消元 | 相对不自然 | QR 消元自然 |
| 稀疏性 | 协方差常较稠密 | 信息因子可能保持稀疏 |
| 典型倾向 | 小中型导航递推 | 大量观测和局部参数消元 |
若需要由 SRIF 恢复完整协方差,可先求:
RxX=I\mathbf R_x\mathbf X = \mathbf IRxX=I
得到:
X=Rx−1\mathbf X=\mathbf R_x^{-1}X=Rx−1
再计算:
P=XXT\boxed{ \mathbf P = \mathbf X\mathbf X^{\mathrm T} }P=XXT
获取完整协方差可能破坏 SRIF 的计算优势。
21. SRIF 与标准 Kalman
在线性模型、二阶统计条件和标准不相关假设下:
- 标准 Kalman;
- 普通信息滤波;
- 协方差型 SRKF;
- SRIF;
在精确算术下具有相同的状态均值与后验协方差。
在联合高斯条件下,它们同时给出条件均值 MMSE 估计。
SRIF 的优势来自:
- 数值因子化;
- 正交变换;
- 稀疏组织;
- 参数消元方式。
它不是统计意义上比 Kalman 更高阶的估计器。
22. SRIF 优化的是什么
SRIF 主要优化:
22.1 法方程的数值风险
避免显式形成:
ATWA\mathbf A^{\mathrm T}\mathbf W\mathbf AATWA
22.2 大量观测的信息累积
独立或已联合白化的观测可以作为新行加入信息方程。
22.3 局部参数消元
适合消去:
- 接收机钟差;
- 局部模糊度;
- 临时状态;
- 旧历元状态;
- 不关心的辅助参数。
22.4 稀疏和分块结构
在合理的参数排序下,可利用大型系统的稀疏性。
22.5 有限精度可靠性
使用 QR、Householder、Givens 和三角回代减少普通矩阵求逆与法方程带来的误差。
23. SRIF 的优势与局限
23.1 优势
- 数值稳定性通常优于法方程;
- 观测可以逐条或分批加入;
- 便于正交消元局部参数;
- 适合稀疏和分块计算;
- 正交残差便于一致性检验;
- 可扩展到批处理和平滑估计。
23.2 局限
- 时间更新比量测更新复杂;
- 获取完整协方差代价较高;
- 奇异过程噪声需要专门处理;
- 边缘化会产生填充;
- 效率依赖参数排序;
- 相关观测必须正确建模;
- 不天然抗粗差、多路径和周跳;
- 非线性问题仍需迭代线性化;
- 精确约束和秩亏问题需要专门算法。
第四部分:GNSS 参数估计应用
24. 与测量平差的关系
线性化观测模型为:
l=Aδ+ε\mathbf l = \mathbf A\boldsymbol\delta+\boldsymbol\varepsilonl=Aδ+ε
其中:
- l\mathbf ll:观测减计算值;
- A\mathbf AA:设计矩阵;
- δ\boldsymbol\deltaδ:参数改正数;
- ε\boldsymbol\varepsilonε:观测误差。
设:
Cov(ε)=Rl\operatorname{Cov} \left( \boldsymbol\varepsilon \right) = \mathbf R_lCov(ε)=Rl
若:
Rl=LlLlT\mathbf R_l = \mathbf L_l\mathbf L_l^{\mathrm T}Rl=LlLlT
则白化观测为:
A~=Ll−1A\tilde{\mathbf A} = \mathbf L_l^{-1}\mathbf AA~=Ll−1A
l~=Ll−1l\tilde{\mathbf l} = \mathbf L_l^{-1}\mathbf ll~=Ll−1l
传统加权最小二乘形成:
ATRl−1Aδ=ATRl−1l\mathbf A^{\mathrm T} \mathbf R_l^{-1} \mathbf A \boldsymbol\delta = \mathbf A^{\mathrm T} \mathbf R_l^{-1} \mathbf lATRl−1Aδ=ATRl−1l
SRIF 则直接对先验信息行和白化观测行进行 QR 三角化。
因此:
SRIF 可以看作"具有动态先验与时间传播的平方根加权最小二乘"。
25. 在 GNSS 中是否适用
SRIF 特别适合:
- 观测数量大;
- 状态维数高;
- 参数具有全局与局部层级;
- 需要实时递推;
- 需要频繁参数消元;
- 需要利用稀疏结构;
- 数值条件较差。
可估参数包括:
- 接收机坐标和钟差;
- 对流层和电离层参数;
- 载波相位模糊度相关状态;
- 卫星钟差;
- 卫星轨道参数;
- 地球定向参数;
- GNSS/INS 误差状态。
对于非线性 GNSS 观测,需要在当前近似状态处线性化:
lk≈Hkδk+vk\mathbf l_k \approx \mathbf H_k\boldsymbol\delta_k + \mathbf v_klk≈Hkδk+vk
求得改正数后更新:
x^k←x^k,0+δk\hat{\mathbf x}k \leftarrow \hat{\mathbf x}{k,0} + \boldsymbol\delta_kx^k←x^k,0+δk
26. 单站 PPP 与 PPP-AR
简化的双频非组合 PPP 状态可写为:
x=rTc δtrTzwdITbϕTT\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ϕTT
其中:
- r\mathbf rr:接收机坐标;
- c δtrc\,\delta t_rcδtr:距离单位的接收机钟差;
- TzwdT_{\mathrm{zwd}}Tzwd:天顶湿延迟;
- I\mathbf II:电离层状态;
- bϕ\mathbf b_{\phi}bϕ:模糊度相关浮点状态。
SRIF 可以:
- 按卫星或观测类型加入观测;
- 对相关观测统一白化;
- 递推累积信息;
- 用 QR 维护三角因子;
- 在周跳和卫星升降时更新状态。
但对单站、小规模 PPP,SRIF 不一定比 SRKF 更简单。
PPP-AR 的整数搜索通常需要浮点模糊度协方差子块:
Qa^a^\mathbf Q_{\hat a\hat a}Qa^a^
在 SRIF 中,需要通过:
- 三角求解;
- 选定协方差求逆;
- 变量重排序后提取子块;
获得该协方差。
因此,若程序频繁进行模糊度固定和协方差访问,协方差型 SRKF 可能更加直接。
27. 实时钟差、精密定轨与网络解算
27.1 实时卫星钟差
高维状态可能包括:
- 卫星钟差;
- 接收机钟差;
- 对流层;
- 模糊度;
- 测站坐标约束。
SRIF 可以按测站分批加入观测,并优先消去局部接收机参数。
27.2 精密定轨
可联合处理:
- 轨道初始状态;
- 动力学参数;
- 经验加速度;
- 卫星钟差;
- 测站和大气参数。
非线性定轨仍需要在参考轨道附近反复线性化。
27.3 大型 GNSS 网络
参数可分为:
text
全局参数
→ 轨道、卫星钟差、地球定向参数
局部参数
→ 接收机钟差、对流层、模糊度
SRIF 可通过参数排序和 QR 消元先处理局部参数,再保留全局参数。
变量排序不合理时,消元填充可能显著增加存储量和计算量。
28. 观测时间相关性
标准分批 SRIF 更新要求:
- 不同观测批次在给定状态后相互独立;
- 或已经使用完整协方差联合白化。
GNSS 中可能存在:
- 多路径时间相关;
- 平滑伪距相关;
- 对流层模型残差相关;
- 接收机噪声相关;
- 预处理滤波引入的相关性。
忽略相关性可能造成:
- 同一信息被重复计权;
- 协方差过于乐观;
- 精度评定失真;
- 模糊度检验可靠性下降。
处理方法包括:
- 构造时空协方差并联合白化;
- 使用预白化模型;
- 扩展有色噪声状态;
- 使用考虑时间相关性的 SRIF 变体。
29. 状态增删、边缘化与精确约束
29.1 状态增加
新增卫星模糊度时,需要:
- 扩展信息因子列;
- 加入初始化先验;
- 重新三角化。
29.2 状态删除与边缘化
一般不能直接删除 Rx\mathbf R_xRx 的任意行列。
常用方法:
- 参数列置换;
- Givens 旋转;
- Householder 变换;
- QR 降阶;
- 等价 Schur 补消元。
29.3 模糊度精确固定
精确约束可写为:
Cx=d\mathbf C\mathbf x=\mathbf dCx=d
零方差约束对应无限信息方向,不能简单使用普通有限权值表示。
更严格的处理方法包括:
- 用零空间参数化消去约束;
- 使用等式约束 QR;
- 直接消去已固定参数;
- 使用约束型 SRIF;
- 使用秩揭示分解。
使用很小但非零的约束方差只是近似方法,需要检查病态性和固定错误风险。
30. SRIF 是否有独有使用场景
严格来说,没有一种线性高斯估计问题只能使用 SRIF。
标准 Kalman、SRKF、批处理最小二乘和因子图也可能获得相同理论结果。
SRIF 最具代表性的优势场景是:
观测量很大、局部参数很多、结构稀疏,并且需要持续加入信息和正交消元参数。
特别适合:
- 实时卫星钟差;
- 精密定轨;
- 大型 GNSS 网络;
- 多测站联合估计;
- 逐观测递推处理;
- 大量临时参数消元。
它的独特工程价值是:
text
把递推估计转化为稳定的白化最小二乘和QR消元过程
31. 方法选择流程
#mermaid-svg-qegaqaMOQz7qY79K{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-qegaqaMOQz7qY79K .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-qegaqaMOQz7qY79K .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-qegaqaMOQz7qY79K .error-icon{fill:#552222;}#mermaid-svg-qegaqaMOQz7qY79K .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-qegaqaMOQz7qY79K .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-qegaqaMOQz7qY79K .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-qegaqaMOQz7qY79K .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-qegaqaMOQz7qY79K .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-qegaqaMOQz7qY79K .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-qegaqaMOQz7qY79K .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-qegaqaMOQz7qY79K .marker{fill:#333333;stroke:#333333;}#mermaid-svg-qegaqaMOQz7qY79K .marker.cross{stroke:#333333;}#mermaid-svg-qegaqaMOQz7qY79K svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-qegaqaMOQz7qY79K p{margin:0;}#mermaid-svg-qegaqaMOQz7qY79K .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-qegaqaMOQz7qY79K .cluster-label text{fill:#333;}#mermaid-svg-qegaqaMOQz7qY79K .cluster-label span{color:#333;}#mermaid-svg-qegaqaMOQz7qY79K .cluster-label span p{background-color:transparent;}#mermaid-svg-qegaqaMOQz7qY79K .label text,#mermaid-svg-qegaqaMOQz7qY79K span{fill:#333;color:#333;}#mermaid-svg-qegaqaMOQz7qY79K .node rect,#mermaid-svg-qegaqaMOQz7qY79K .node circle,#mermaid-svg-qegaqaMOQz7qY79K .node ellipse,#mermaid-svg-qegaqaMOQz7qY79K .node polygon,#mermaid-svg-qegaqaMOQz7qY79K .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-qegaqaMOQz7qY79K .rough-node .label text,#mermaid-svg-qegaqaMOQz7qY79K .node .label text,#mermaid-svg-qegaqaMOQz7qY79K .image-shape .label,#mermaid-svg-qegaqaMOQz7qY79K .icon-shape .label{text-anchor:middle;}#mermaid-svg-qegaqaMOQz7qY79K .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-qegaqaMOQz7qY79K .rough-node .label,#mermaid-svg-qegaqaMOQz7qY79K .node .label,#mermaid-svg-qegaqaMOQz7qY79K .image-shape .label,#mermaid-svg-qegaqaMOQz7qY79K .icon-shape .label{text-align:center;}#mermaid-svg-qegaqaMOQz7qY79K .node.clickable{cursor:pointer;}#mermaid-svg-qegaqaMOQz7qY79K .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-qegaqaMOQz7qY79K .arrowheadPath{fill:#333333;}#mermaid-svg-qegaqaMOQz7qY79K .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-qegaqaMOQz7qY79K .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-qegaqaMOQz7qY79K .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-qegaqaMOQz7qY79K .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-qegaqaMOQz7qY79K .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-qegaqaMOQz7qY79K .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-qegaqaMOQz7qY79K .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-qegaqaMOQz7qY79K .cluster text{fill:#333;}#mermaid-svg-qegaqaMOQz7qY79K .cluster span{color:#333;}#mermaid-svg-qegaqaMOQz7qY79K div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-qegaqaMOQz7qY79K .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-qegaqaMOQz7qY79K rect.text{fill:none;stroke-width:0;}#mermaid-svg-qegaqaMOQz7qY79K .icon-shape,#mermaid-svg-qegaqaMOQz7qY79K .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-qegaqaMOQz7qY79K .icon-shape p,#mermaid-svg-qegaqaMOQz7qY79K .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-qegaqaMOQz7qY79K .icon-shape .label rect,#mermaid-svg-qegaqaMOQz7qY79K .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-qegaqaMOQz7qY79K .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-qegaqaMOQz7qY79K .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-qegaqaMOQz7qY79K :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 单站 小中规模
频繁需要协方差
大量观测
局部参数多
超大稀疏非线性
否
是
否
是
GNSS参数估计
规模和结构
标准Kalman或SRKF
SRIF
稀疏QR 因子图
批处理优化
过程噪声是否奇异
常规SRIF时间更新
约束型或秩揭示更新
观测是否相关
分批白化并更新
联合白化
有色噪声模型
32. 二维量测更新例子
设先验均值:
x^−=26\hat{\mathbf x}^{-} = \begin{bmatrix} 2\\ 6 \end{bmatrix}x^−=26
先验协方差:
P−=1004\mathbf P^{-} = \begin{bmatrix} 1 & 0\\ 0 & 4 \end{bmatrix}P−=1004
因此:
Λ−=10014\boldsymbol\Lambda^{-} = \begin{bmatrix} 1 & 0\\ 0 & \frac14 \end{bmatrix}Λ−=10041
可取:
Rx−=10012\mathbf R_x^{-} = \begin{bmatrix} 1 & 0\\ 0 & \frac12 \end{bmatrix}Rx−=10021
平方根信息向量:
zx−=Rx−x^−=23\mathbf z_x^{-} = \mathbf R_x^{-}\hat{\mathbf x}^{-} = \begin{bmatrix} 2\\ 3 \end{bmatrix}zx−=Rx−x^−=23
新增观测:
y=3y=3y=3
观测模型:
H=10\mathbf H = \begin{bmatrix} 1 & 0 \end{bmatrix}H=10
观测方差:
Rv=1R_v=1Rv=1
信息更新为:
Λ+=Λ−+HTRv−1H=20014\boldsymbol\Lambda^{+} = \boldsymbol\Lambda^{-} + \mathbf H^{\mathrm T}R_v^{-1}\mathbf H = \begin{bmatrix} 2 & 0\\ 0 & \frac14 \end{bmatrix}Λ+=Λ−+HTRv−1H=20041
信息向量更新为:
η+=η−+HTRv−1y=532\boldsymbol\eta^{+} = \boldsymbol\eta^{-} + \mathbf H^{\mathrm T}R_v^{-1}y = \begin{bmatrix} 5\\ \frac32 \end{bmatrix}η+=η−+HTRv−1y=523
可取后验平方根信息因子:
Rx+=20012\mathbf R_x^{+} = \begin{bmatrix} \sqrt2 & 0\\ 0 & \frac12 \end{bmatrix}Rx+=2 0021
后验平方根信息向量满足:
Rx+Tzx+=η+\mathbf R_x^{+\mathrm T} \mathbf z_x^{+} = \boldsymbol\eta^{+}Rx+Tzx+=η+
通过下三角回代得到:
zx+=(Rx+T)−1η+=523\mathbf z_x^{+} = \left( \mathbf R_x^{+\mathrm T} \right)^{-1} \boldsymbol\eta^{+} = \begin{bmatrix} \frac{5}{\sqrt2}\\ 3 \end{bmatrix}zx+=(Rx+T)−1η+=2 53
解:
Rx+x^+=zx+\mathbf R_x^{+}\hat{\mathbf x}^{+} = \mathbf z_x^{+}Rx+x^+=zx+
得到:
x^+=2.56\boxed{ \hat{\mathbf x}^{+} = \begin{bmatrix} 2.5\\ 6 \end{bmatrix} }x^+=2.56
观测只约束了第一个状态,因此第二个状态保持不变。
33. 常见概念混淆
33.1 "信息"是信息论中的比特数
错误。这里的信息矩阵是协方差的逆,也称精度矩阵。
33.2 平方根信息因子是逐元素开平方
错误。它满足:
Λ=RxTRx\boldsymbol\Lambda = \mathbf R_x^{\mathrm T}\mathbf R_xΛ=RxTRx
33.3 平方根信息向量是对信息向量开平方
错误。它定义为:
zx=Rxx^\mathbf z_x = \mathbf R_x\hat{\mathbf x}zx=Rxx^
33.4 SRIF 必须显式计算 P−1\mathbf P^{-1}P−1
错误。实际算法可以直接维护三角信息方程。
33.5 SRIF 就是协方差型 SRKF
不准确。二者都是平方根实现,但维护的因子不同。
33.6 观测信息总能逐批直接相加
错误。只有条件独立或已联合白化的观测才能分别相加。
33.7 SRIF 一定比 SRKF 更快
错误。性能取决于规模、稀疏性、参数排序和时间更新频率。
33.8 SRIF 天然抗粗差、多路径和周跳
错误。仍需质量控制、鲁棒估计和状态管理。
33.9 信息形式天然保持稀疏
错误。边缘化和参数排序会产生填充。
33.10 直接删除信息因子的行列就是边缘化
错误。边缘化需要正确的置换和正交消元。
34. 工程实现检查清单
34.1 数学约定
- Λ=P−1\boldsymbol\Lambda=\mathbf P^{-1}Λ=P−1 的适用条件是否满足;
- 是否统一采用 Λ=RxTRx\boldsymbol\Lambda=\mathbf R_x^{\mathrm T}\mathbf R_xΛ=RxTRx;
- Rx\mathbf R_xRx 是否统一为上三角;
- zx=Rxx^\mathbf z_x=\mathbf R_x\hat{\mathbf x}zx=Rxx^ 是否一致;
- 先验上标和逆矩阵括号是否正确。
34.2 量测更新
- 观测是否正确白化;
- 跨历元相关性是否被建模;
- 是否避免显式形成法方程;
- 是否使用稳定的 QR/Householder/Givens;
- 残差统计的自由度是否正确。
34.3 时间更新
- Q\mathbf QQ 是否正定;
- 奇异过程噪声是否采用约束或矩形因子;
- 被消元状态块是否满秩;
- 旧状态是否正确边缘化;
- 控制输入是否进入正确右端项。
34.4 GNSS 状态管理
- 新升卫星是否正确扩展状态;
- 周跳后是否正确重置模糊度;
- 落下卫星是否通过置换和消元删除;
- 模糊度固定是否使用约束型处理;
- PPP-AR 所需协方差子块是否正确提取;
- 参数排序是否减少 QR 填充;
- 是否检查基准缺失、秩亏和不可观状态。
35. 总结
SRIF 保存信息矩阵的平方根因子
Λ=RxTRx\boldsymbol\Lambda=\mathbf R_x^{\mathrm T}\mathbf R_xΛ=RxTRx,以及平方根信息向量
zx=Rxx^\mathbf z_x=\mathbf R_x\hat{\mathbf x}zx=Rxx^。
"信息"表示协方差的逆;"平方根"表示通过三角因子的转置乘积恢复信息矩阵。
SRIF 的量测更新是把先验信息方程与白化观测方程堆叠,再通过 QR 得到新的三角信息方程。
SRIF 的时间更新需要建立前后历元联合模型,并通过正交消元边缘化旧状态。
SRIF 与标准 Kalman 和协方差型 SRKF 在模型一致、精确算术条件下具有相同统计结果。
SRIF 特别适合大量观测、局部参数多、结构稀疏,并需要实时信息累积和参数消元的 GNSS 参数估计问题。
参考资料
- G. J. Bierman:Factorization Methods for Discrete Sequential Estimation
- C. L. Thornton:Triangular Covariance Factorizations for Kalman Filtering
- J. R. Carpenter、C. N. D'Souza:Navigation Filter Best Practices
- X. Zuo 等:A Square Root Information Filter for Multi-GNSS Real-Time Precise Clock Estimation
- Y. Jiang 等:Square Root Information Filter Considering Temporal Correlation of GNSS Observations