卡尔曼滤波笔记

本文详细介绍了卡尔曼滤波的基本原理及其应用。首先定义了线性系统的状态方程和观测方程,接着阐述了卡尔曼滤波的核心递推过程,包括预测与更新两个阶段,并给出了具体的数学表达式。

卡尔曼滤波

一.卡尔曼滤波使用

1.线性系统模型:
{状态方程:X(i)=FX(i−1)+BU(i−1)+W(i)观测方程:Y(i)=HX(i)+V(i) \left\{ \begin{aligned} &状态方程:X(i)=FX(i-1)+BU(i-1)+W(i)\\ &观测方程: Y(i)=HX(i)+V(i) \end{aligned} \right. {状态方程:X(i)=FX(i1)+BU(i1)+W(i)观测方程:Y(i)=HX(i)+V(i)
FFF为状态转移矩阵,B为控制矩阵,H为观测矩阵,W为输入的白噪声,且其方差为Q,V为观测噪声,且其方差为R。

2.卡尔曼滤波递推过程

核心:预测+更新

变量名称:
{状态变量先验估计值:X^(i∣i−1)=X^i−协方差变量先验估计值:P(i∣i−1)=Pi−卡尔曼增益:K(i)状态变量最优估计值:X^(i∣i)=X^i协方差变量最优估计值:P(i∣i)=Pi \left\{ \begin{aligned} &状态变量先验估计值:\hat{X}(i|i-1)=\hat{X}^-_i\\ &协方差变量先验估计值:P(i|i-1)=P^-_i\\ &卡尔曼增益:K(i)\\ &状态变量最优估计值:\hat{X}(i|i)=\hat{X}_i\\ &协方差变量最优估计值:P(i|i)=P_i \end{aligned} \right. 状态变量先验估计值:X^(ii1)=X^i协方差变量先验估计值:P(ii1)=Pi卡尔曼增益:K(i)状态变量最优估计值:X^(ii)=X^i协方差变量最优估计值:P(ii)=Pi
(1)预测过程:利用上一次的最优结果预测当前的状态值:
{X^(i∣i−1)=FX^(i−1∣i−1)+BU(i−1)P(i∣i−1)=FP(i−1∣i−1)FT+Q \left\{ \begin{aligned} &\hat{X}(i|i-1)=F\hat{X}(i-1|i-1)+BU(i-1)\\ &P(i|i-1)=FP(i-1|i-1)F^T+Q \end{aligned} \right. {X^(ii1)=FX^(i1∣i1)+BU(i1)P(ii1)=FP(i1∣i1)FT+Q
(2)更新过程:利用观测值和预测值更新得到当前的最优状态值(利用观测值修正预测值):
{K(i)=Pi(i∣i−1)HT(HPi(i∣i−1)HT+R)−1X^(i)=X^(i∣i−1)+K(i)(Y(i)−HX^(i∣i−1))P(i)=(I−K(i)H)P \left\{ \begin{aligned} &K(i)=P_i(i|i-1)H^T(HP_i(i|i-1)H^T+R)^{-1}\\ &\hat{X}(i)=\hat{X}(i|i-1)+K(i)(Y(i)-H\hat{X}(i|i-1))\\ &P(i)=(I-K(i)H)P \end{aligned} \right. K(i)=Pi(ii1)HT(HPi(ii1)HT+R)1X^(i)=X^(ii1)+K(i)(Y(i)HX^(ii1))P(i)=(IK(i)H)P

### 扩展卡尔曼滤波学习笔记 #### 一、概述 扩展卡尔曼滤波(EKF)是对标准卡尔曼滤波的一种改进,适用于处理非线性系统的状态估计问题。当系统动态模型或测量模型是非线性的时,传统的线性卡尔曼滤波不再适用,此时就需要采用EKF。 #### 二、工作原理 EKF的核心思想是在每一步迭代过程中对当前时刻的状态向量及其对应的雅可比矩阵进行泰勒展开并取其线性项作为局部线性化模型来进行预测更新操作[^1]。 对于给定的时间步\( k \),假设已知上一时段的最佳估计\(\hat{x}_{k-1|k-1}\) 相应的误差协方差矩阵 \(P_{k-1|k-1}\),则 EKF 的具体流程如下: 1. **预测阶段** - 预测新的状态均值:\[ \hat{x}_{k|k-1} = f(\hat{x}_{k-1|k-1}, u_k, t_k)\ ]其中 \(f\) 表示非线性运动模型;\(u_k\) 是输入控制信号;\(t_k\) 时间戳。 2. **计算雅克比矩阵** - 计算状态转移矩阵 Fk :\[F_k=\frac{\partial{f}}{\partial{x}} | _{{x= \hat{x}_{k-1|k-1}}} \] 3. **预测误差协方差矩阵** - 更新先验概率分布的协方差矩阵 Pk : \[ P_{k|k-1}=F_k*P_{k-1|k-1}*F_k^T + Q_k \] 4. **校正/更新阶段** 5. **获取观测数据 z_k 并构建 H 矩阵** - 对于每一个传感器读数zk ,定义一个合适的非线性函数 h(x), 它描述了真实位置 x 如何映射到该传感器所感知的空间中去; 6. **计算 Kalman Gain K_k** - 使用上述得到的信息求解最优加权因子Kk : \[ K_k=P_{k|k-1} * H_k ^ T *(H_k * P_{k|k-1} * H_k ^ T + R)^{-1} \] 7. **更新后验估计** - 利用最新的测量结果调整之前的猜测: \[ \hat{x}_{k|k}=\hat{x}_{k|k-1}+K_k*(z_k-h(\hat{x}_{k|k- 修改后的协方差矩阵反映了我们对新状态下不确定度的信心程度: \[ P_{k|k}=(I-K_k*H_k)*P_{k|k-1} \] ```matlab function [X,P]=ekf_predict(X,P,F,Q) % X: State vector at previous time step (n×1 matrix). % P: Error covariance matrix from last iteration. % F: Jacobian of the state transition model evaluated around current estimate. % Q: Process noise covariance. X=F*X; % Predicted state mean value P=F*P*transpose(F)+Q;% Updated error covariances after prediction end function [X,P,K,v,S]=ekf_update(X,P,H,R,z,h_func) % Inputs are similar to those described above plus additional parameters needed by measurement function 'h'. v=z-h_func(X); % Innovation or residual between predicted and actual measurements S=H*P*transpose(H)+R; K=P*transpose(H)/S; % Optimal gain calculation X=X+K*v; % Posteriori estimation update rule P=(eye(size(P))-K*H)*P; % Covariance update equation end ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值