卡尔曼滤波:原理、推导与卫星导航应用仿真
摘要
卡尔曼滤波(Kalman Filter)是一种利用线性系统动态模型和噪声统计特性,通过递归算法实现最优状态估计的方法。本文从贝叶斯估计理论出发,推导卡尔曼滤波的数学公式,揭示其“预测-修正”两阶段的核心思想。针对卫星导航中的定位误差问题,通过Python仿真验证卡尔曼滤波对动态目标轨迹的优化效果。仿真结果表明,在存在观测噪声和过程噪声的条件下,卡尔曼滤波可将定位误差降低约60%。代码实现涵盖状态建模、噪声协方差配置及可视化分析,完整代码可直接复现实验结果。
一、卡尔曼滤波核心思想
1.1 状态估计问题
在动态系统中,真实状态 x k \mathbf{x}_k xk 无法直接观测,只能通过带噪声的观测值 z k \mathbf{z}_k zk间接获取。卡尔曼滤波的目标是通过 z 1 , z 2 , . . . , z k \mathbf{z}_1, \mathbf{z}_2, ..., \mathbf{z}_k z1,z2,...,zk递推估计 x k \mathbf{x}_k xk。
核心假设:
- 线性系统: x k = F k x k − 1 + B k u k + w k \mathbf{x}_k = \mathbf{F}_k \mathbf{x}_{k-1} + \mathbf{B}_k \mathbf{u}_k + \mathbf{w}_k xk=Fkxk−1+Bkuk+wk
- 观测模型: z k = H k x k + v k \mathbf{z}_k = \mathbf{H}_k \mathbf{x}_k + \mathbf{v}_k zk=Hkxk+vk
- 噪声特性: w k ∼ N ( 0 , Q k ) \mathbf{w}_k \sim \mathcal{N}(0, \mathbf{Q}_k) wk∼N(0,Qk), v k ∼ N ( 0 , R k ) \mathbf{v}_k \sim \mathcal{N}(0, \mathbf{R}_k) vk∼N(0,Rk)
1.2 贝叶斯框架
卡尔曼滤波本质是贝叶斯后验概率的递推计算:
p ( x k ∣ z 1 : k ) ∝ p ( z k ∣ x k ) ⋅ ∫ p ( x k ∣ x k − 1 ) p ( x k − 1 ∣ z 1 : k − 1 ) d x k − 1 p(\mathbf{x}_k | \mathbf{z}_{1:k}) \propto p(\mathbf{z}_k | \mathbf{x}_k) \cdot \int p(\mathbf{x}_k | \mathbf{x}_{k-1}) p(\mathbf{x}_{k-1} | \mathbf{z}_{1:k-1}) d\mathbf{x}_{k-1} p(xk∣z1:k)∝p(zk∣xk)⋅∫p(xk∣xk−1)p(xk−1∣z1:k−1)dxk−1
对于高斯噪声和线性系统,后验概率仍为高斯分布,可由均值(估计值)和协方差完全描述。
二、数学推导
数学推导比较复杂枯燥,这里这里只对其进行标量简化推导
2.1 预测步骤(Priori Estimate)
- 状态预测:
x ^ k − = F x ^ k − 1 + B u k \hat{x}_k^- = F \hat{x}_{k-1} + B u_k x^k−=Fx^k−1+Buk - 协方差预测:
P k − = F P k − 1 F T + Q P_k^- = F P_{k-1} F^T + Q Pk−=FPk−1FT+Q
2.2 更新步骤(Posteriori Estimate)
- 卡尔曼增益:
K k = P k − H T ( H P k − H T + R ) − 1 K_k = P_k^- H^T (H P_k^- H^T + R)^{-1} K

最低0.47元/天 解锁文章
256

被折叠的 条评论
为什么被折叠?



