4、状态估计理论基础:最小二乘估计、加权最小二乘、递推最小二乘
各位同学,今天我们来聊聊状态估计的“基本功”。
做深空探测导航,说白了就是“猜”航天器在哪儿。但怎么猜得准?这就得靠数学工具了。我个人习惯把最小二乘估计、加权最小二乘、递推最小二乘这三兄弟,看作是状态估计的“入门三板斧”。你想想看,从最早的轨道确定,到现在的实时导航,它们的影子无处不在。
4.1 最小二乘估计:最朴素的“猜”法
先说说最小二乘估计。这玩意儿历史可悠久了,高斯当年就用它来预测谷神星的轨道。
它的核心思想特别简单:让所有观测误差的平方和最小。为什么是平方?因为正负误差不能抵消,平方后还能放大大误差的影响,让结果更“稳”。
假设我们有 m 个观测值 z,想估计 n 个状态 x(m > n)。观测模型是线性的:
z = Hx + v
其中 v 是观测噪声。最小二乘估计的目标函数是:
J(x) = (z - Hx)^T (z - Hx)
求导令其为零,得到估计值:
x̂ = (H^T H)^{-1} H^T z
嗯,这里要注意:H^T H 必须可逆。我在项目中遇到过,如果观测几何不好,比如测站都在同一侧,这个矩阵就接近奇异,算出来的结果会剧烈抖动。
核心要点:最小二乘估计把所有观测数据“一视同仁”,不考虑哪个数据更准。这在传感器精度一致时没问题,但深空探测中,不同测站的测量精度差异很大,这时候就需要加权了。
4.2 加权最小二乘:给数据“打分”
加权最小二乘,说白了就是给每个观测值一个“信任度”。
为什么需要加权?举个例子。你用地基深空站测距,X波段的测距精度可能是米级,而S波段可能是十米级。如果你把它们同等对待,结果会被精度差的数据“带偏”。
加权最小二乘的目标函数变成了:
J(x) = (z - Hx)^T W (z - Hx)
其中 W 是加权矩阵,通常取观测噪声协方差矩阵的逆:W = R^{-1}。
解算结果:
x̂ = (H^T W H)^{-1} H^T W z
我曾经处理过一个火星探测器入轨段的数据。测速数据精度很高,但测距数据受电离层影响波动大。我用了加权最小二乘,给测速数据赋了高权重,结果轨道确定精度提升了近一个数量级。
实战技巧:加权矩阵 W 怎么选?我建议先做一次普通最小二乘,看看残差分布。如果某个测站的残差明显偏大,就降低它的权重。反复迭代两三次,权重就稳定了。
4.3 递推最小二乘:实时更新的“法宝”
前面两种方法都是“批处理”——等所有数据到齐了再算。但深空探测中,数据是源源不断来的。你总不能等一天的数据收齐了再算轨道吧?
递推最小二乘就是解决这个问题的。它的思路是:用上一时刻的估计值,加上新观测的“修正量”,得到当前时刻的估计值。
递推公式如下:
K_k = P_{k-1} H_k^T (H_k P_{k-1} H_k^T + R_k)^{-1}
x̂_k = x̂_{k-1} + K_k (z_k - H_k x̂_{k-1})
P_k = (I - K_k H_k) P_{k-1}
其中 K_k 是增益矩阵,P_k 是估计误差协方差矩阵。
你看,这个结构和卡尔曼滤波已经很接近了。实际上,递推最小二乘就是卡尔曼滤波在“无过程噪声”情况下的特例。
避坑指南:我曾经在深空站的数据处理软件中,直接用递推最小二乘处理连续几天的数据。结果发现 P 矩阵越来越小,增益 K 趋近于零,新数据基本不起作用了。这就是“数据饱和”现象。解决办法是引入遗忘因子,让旧数据逐渐“失效”。
4.4 三种方法的对比与选择
我把这三种方法的特点整理成了一张表,方便你对比:
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 最小二乘估计 | 数据精度一致,离线处理 | 简单、直观、计算量小 | 不考虑数据质量差异 |
| 加权最小二乘 | 数据精度不同,离线处理 | 能利用数据质量信息 | 需要先验的权重信息 |
| 递推最小二乘 | 实时/在线处理 | 计算量小,适合嵌入式 | 可能出现数据饱和 |
我个人习惯这样选:
- 做轨道确定后处理,用加权最小二乘,精度最高。
- 做星上自主导航,用递推最小二乘,计算量可控。
- 做初步分析或教学演示,用普通最小二乘,简单明了。
4.5 知识体系框架
下面这张图展示了本章的核心逻辑,我画成了SVG,方便你理解:
从这张图你可以看到,三种方法一脉相承。加权最小二乘是普通最小二乘的“升级版”,递推最小二乘则是为了适应实时场景的“变体”。
一句话总结:最小二乘是基础,加权是优化,递推是进化。掌握了这三板斧,深空探测导航的状态估计你就入门了。
公众号:蓝海资料掘金营,微信deep3321