mpu6050姿态解算与卡尔曼滤波(2)卡尔曼滤波
来源:互联网 发布:美丽港发型设计软件 编辑:程序博客网 时间:2024/05/01 13:40
卡尔曼滤波,是最优估计理论中十分重要的一个部分。
要全面地理解卡尔曼滤波,你需要一点统计学的知识,以及一点矩阵理论。通常最优估计理论的教材是从最小二乘估计讲起,接着讲到最小方差估计,极大似然估计以及维纳滤波,再到卡尔曼滤波、扩展卡尔曼、无迹卡尔曼——-这是从统计的角度来理解卡尔曼滤波。
事实上,卡尔曼滤波与《自动控制原理》中的状态观测器非常相似。状态观测器利用原系统的输入输出来估计系统状态,对原系统建模(状态方程,输出方程),把观测器的输出与原系统输出的差乘上一个增益反馈给观测器的状态,这样构成一个闭环系统使得观测器状态跟踪原系统状态。卡尔曼滤波中,同样要对系统建模得到状态方程,输出方程则取决于你的测量手段,因此改称量测方程。卡尔曼同样要预测量测值,并把预测值与真实量测值比较,乘上一个增益返回给状态。不同之处在于,状态观测器不考虑噪声,要求系统可检测,并且增益通常是时不变的,而卡尔曼滤波则详细考虑了噪声和初始估计误差,智能的计算每一步的增益,以达到对状态的最优的估计。
实际工程常常面临这样的情况:变量
由测量值Z估计状态X,典型的方法–最小二乘估计,即对X的估计—
实际工程中,对状态
卡尔曼滤波包含两个基本方程–状态方程和量测方程,这也是卡尔曼滤波最根本的地方,但凡要实现一个卡尔曼滤波器,只要写出状态方程和量测方程,剩下的就只是代公式了,如果连状态方程和测量方程都写不出来搞不清楚,那也别谈什么实现卡尔曼滤波器。
状态方程:
状态方程描述了状态
量测方程:
量测方程描述了状态与量测量的关系,
上述两个方程是标准线性卡尔曼的基本方程,它要求两个方程是线性的,还要求系统噪声
卡尔曼的推导过程需要较强的数学基础,这里不讨论,只说明卡尔曼的具体做法和物理意义。
卡尔曼要解决的问题:若在k-1时刻估计状态为
回答这个问题,需要考察状态方程:
和量测方程:
以及必要的假设:系统噪声
首先,既然在k-1时刻已经估计出状态为
既然对k时刻状态做出预测,那么显然可以根据量测方程再对k时刻的测量值做出预测:
既然对测量做出了预测,又获得了一个真正的测量值
而
到这里就确定了增益K,给出了估计
以及
从上述过程可以看出,卡尔曼滤波遵循“预测-修正”的思想,通过对比测量真实值与测量预测值来修正状态估计。确定增益阵K是卡尔曼滤波的核心也是精髓所在,对增益阵的计算充分考虑了初始估计误差,系统噪声,测量噪声,给出了误差最小意义下的状态最优估计。
再说一下扩展卡尔曼(EKF)。
线性卡尔曼要求状态方程和量测方程都是线性方程,在实际问题中面临最多的却是非线性系统的问题。
对于非线性的状态方程和量测方程:
上述的基于线性方程的做法已经不再适用了。为了能对非线性系统应用卡尔曼滤波,利用泰勒展开对原非线性系统在
这样就能应用线性方程中的做法进行滤波,这就是扩展卡尔曼滤波。
EKF在
- mpu6050姿态解算与卡尔曼滤波(2)卡尔曼滤波
- mpu6050姿态解算与卡尔曼滤波(1)数学
- mpu6050姿态解算与卡尔曼滤波(3)加速度计标定
- MPU6050 卡尔曼滤波
- Arduino uno + mpu6050 陀螺仪 运用卡尔曼滤波姿态解算实验
- 四轴mpu6050姿态角卡尔曼滤波代码分析
- MPU6050开发 -- 卡尔曼滤波
- 卡尔曼(Kalman)滤波(六)--卡尔曼滤波的应用: 四元数卡尔曼滤波(QKF)的C代码实现姿态解算
- mpu6050卡尔曼滤波程序及分析
- 卡尔曼滤波(2)
- 卡尔曼滤波2
- 谈谈MPU6050的数据融合 一阶滤波 卡尔曼滤波
- 卡尔曼滤波与粒子滤波比较
- 扩展卡尔曼滤波+卡尔曼滤波
- 卡尔曼滤波与粒子滤波(转载)
- 卡尔曼滤波(程序)
- 卡尔曼滤波(一)
- MPU6050 + 一阶互补滤波+二阶互补滤波+卡尔曼滤波 +波形比较
- 机器学习笔记(七)Boost算法(GDBT,AdaBoost,XGBoost)原理及实践
- ubuntu 16.04 启用root用户方法(亲测可行)
- 13.Roman to Integer
- go语言比较常用的用法
- Power of Four
- mpu6050姿态解算与卡尔曼滤波(2)卡尔曼滤波
- 【OpenGL】GLUT函数说明
- c++实验2-分段函数求值
- UVA 10934 Dropping water balloons (动规)
- javaEE之SSH框架的底层机制及原理
- 提交github操作
- jwt(JSON Web Token) 让客户端安全的回传数据
- Linux常用命令介绍
- Linux C++基础--fork()--1