第1章:概率论基础回顾
各位同学好,我是你们的老朋友。做组合导航这些年,我最大的体会就是:卡尔曼滤波的本质,其实就是概率论在工程中的一次漂亮应用。今天咱们先打好基础,聊聊高斯分布、协方差矩阵这些老朋友。
1.1 高斯分布:为什么到处都是它?
说实话,我刚入行时也觉得奇怪——为什么卡尔曼滤波里全是高斯分布?后来在调试一个IMU/GPS组合导航系统时,我盯着传感器噪声的直方图看了半天,才真正明白:中心极限定理告诉我们,大量独立随机变量的和趋近于高斯分布。而传感器噪声,恰恰就是这种「大量微小误差的叠加」。
高斯分布的概率密度函数长这样:
p(x) = (1 / sqrt(2πσ²)) * exp(-(x-μ)² / (2σ²))
其中μ是均值,σ²是方差。在导航里,μ代表真值,σ²代表不确定性。嗯,这里要注意:方差越小,说明传感器越准。
核心要点:高斯分布的两个参数——均值和方差,恰好对应了卡尔曼滤波中「状态估计」和「不确定性」这两个核心概念。
1.2 协方差矩阵:多变量之间的「关系网」
单个传感器好办,但组合导航里我们有多个状态量——位置、速度、姿态角。它们之间不是独立的。比如你加速时,位置和速度肯定一起变。协方差矩阵就是用来描述这种「联动关系」的。
假设我们有n个随机变量,协方差矩阵P是个n×n的对称矩阵:
P = [σ₁² σ₁₂ ... σ₁ₙ]
[σ₂₁ σ₂² ... σ₂ₙ]
[... ... ... ...]
[σₙ₁ σₙ₂ ... σₙ²]
对角线元素是方差,非对角线元素是协方差。我在项目中遇到过一个问题:IMU的加速度计和陀螺仪噪声其实是相关的,但很多初学者直接假设它们独立,结果滤波效果大打折扣。
我的经验:实际调试时,协方差矩阵的非对角线元素千万别直接设成0。除非你确定两个传感器完全独立——说实话,这种情况很少见。
1.3 条件概率与贝叶斯法则:滤波的灵魂
卡尔曼滤波说白了就是贝叶斯法则的在线版本。贝叶斯公式长这样:
P(A|B) = P(B|A) * P(A) / P(B)
在导航里,A是状态量(比如位置),B是观测量(比如GPS读数)。P(A)是先验——我们根据运动模型猜的位置;P(B|A)是似然——如果真在这个位置,GPS应该读到什么;P(A|B)是后验——融合了模型和观测后的最优估计。
你想想看,卡尔曼滤波的预测-更新两步,不就是贝叶斯法则的工程实现吗?预测步算先验,更新步算后验。我曾经在讲课时被问到:「为什么卡尔曼滤波是最优的?」答案就在这里——因为它严格遵循了贝叶斯最优估计理论。
避坑指南:我曾经见过有人把先验和后验搞混,导致滤波发散。记住:先验是「预测的」,后验是「修正后的」。写代码时变量命名一定要区分清楚,比如用x_pred和x_est。
1.4 最小均方误差估计:我们到底在优化什么?
卡尔曼滤波的目标是什么?让估计误差的平方和最小。这就是最小均方误差估计(MMSE)的思想。对于高斯分布,MMSE估计就是条件期望:
ẑ = E[z | y]
其中z是状态,y是观测。这个公式看着简单,但实际计算时要用到协方差矩阵的逆——这也是卡尔曼滤波里卡尔曼增益的由来。
我个人习惯把MMSE理解成「加权平均」:模型预测和观测数据,谁的协方差小(更可信),就给它更大的权重。卡尔曼增益K就是那个权重系数。
关键公式:卡尔曼增益 K = P_pred * Hᵀ * (H * P_pred * Hᵀ + R)⁻¹
其中P_pred是预测协方差,H是观测矩阵,R是观测噪声协方差。K越大,说明我们越相信观测。
知识体系总览
下面这张图总结了本章的核心逻辑,我建议你多看几遍:
本章小结
好了,这一章的内容就这些。总结一下:
- 高斯分布是卡尔曼滤波的基石,它让所有计算都变得优雅
- 协方差矩阵描述了状态量之间的相关性,千万别忽略非对角线元素
- 贝叶斯法则是滤波的思想源泉,预测-更新两步走
- 最小均方误差估计告诉我们:最优就是让误差平方和最小
下一章我们会把这些理论变成代码,手写一个一维卡尔曼滤波器。到时候你会发现,原来这些公式跑起来这么直观。
课后练习:试着用Python生成两组相关的高斯随机数,计算它们的协方差矩阵,看看非对角线元素是不是接近你设定的相关系数。我当年就是这么入门的。