惯性测量模块数据的卡曼滤波(Kalman filtering of IMU data)
2014-08-24 19:18
477 查看
介绍
对我们大多数人来讲,卡曼滤波如同圣杯(grail)一样让人感到神秘。实际生活上,它经常能很神奇的帮我们解决一些其他方法很难把握的难题,但是值得注意的是,卡曼滤波并非一剂“神药”,包治百病。本文将采用许多实例方法来解释卡曼滤波的原理,以避免那些难以理解又令人心烦的理论。由于绝大部分人们仅仅用它来处理有人飞行(MAV)或无人飞行器(UAV)的东西,所以本人将用一些更具体的与飞行相关的东西代替容易让人感到困惑的一般性方法。
首先确保你从之前的文章中了解来自加速度计(accelerometers)和陀螺仪(gyroscopes)的数据是如何使用的,这样有便于后面的一些基础的算法知识的展开。
基础算法
卡曼滤波方法中的迭代滤波需要做两方面的事情。首先,你需要某种类型的输入量(单输入或多输入信号源),可以将它仅采用线性计算方法变为一种可预测的预估输出量。换句话讲,我们需要针对某个问题的一种线性模型。
其次,还需要另一种输入量,这可以是真实世界中可被预测的一种变量,或者有时是该变量的一种比较准确的近似预测。在每次卡曼滤波迭代中,它都会少许改变我们线性模型的变量,以致线性模型的输出会接近于第二次的输入量。
一个简单模型实例
显而易见,我们的两个输入量由陀螺仪和加速度数据组成。采用陀螺仪数据的模型可以表示成如下形式:第一个公式代表了线性模型的通用格式。从公式可以知道,我们需要A、B矩阵,而且还要选择一个状态变量x,这里变量u代表输入。在我们的例子中就代表了陀螺仪的数据。请记住的是我们是如何积分的:我们仅仅加上一个归一化(NORMALIZED)的测量值:
alpha k = alpha k-1 + (_u_ k – bias)
由于我们处理的是速率(degree/s),所以我们还需要将两次测量时间间隔(__dt__)包含进来:
alpha k = alpha k-1 + (_u_ k – bias) * dt
重新整理为:
alpha k = alpha k-1 – bias * dt + u k * dt
谨记的是:我们的偏差(bias)保持为常量!在陀螺仪相关的教程中,我们曾经知道该值实际上是浮动的。ok,接下来就是就是见证卡曼滤波奇迹的时刻:通过和加速度计的输出比较(我们的第二个输入量),滤波器会在每次迭代中自动调整偏差(bias)!Great(:>)!
总结一下
...自己翻译,原文地址:http://tom.pycke.be/mav/71/kalman-filtering-of-imu-data
相关文章推荐
- An Overview of Web Data Warehouse(web数据仓库研究综述)
- Enterprise Library3.1 使用数据访问模块时,调用Microsoft.Practices.EnterpriseLibrary.Data报出源文件与当前应用程序不一致和创建dataconfiguration的配置节处理程序出错
- Multithreading C++ Out of Core Sotring for Massive Data|多线程C++的大规模数据外部排序
- Java SE 第三讲(原生数据类型使用陷阱 Pitfall of Primitive Data Type)
- Multithreading C++ Out of Core Sotring for Massive Data|多线程C++的大规模数据外部排序
- 一个抽象工厂数据访问模块(a data access component using abstract factory pattern SQL/OLEDB/ODBC)
- web of Data : 将数据的海洋变成词汇的海洋
- 大三学长带我学习JAVA.作业2. 第二讲(原生数据类型 Primitive Data Type)。第三讲(原生数据类型使用陷阱 Pitfall of Primitive Data Type)。大三学长带我学习JAVA.作业2.
- JavaSE第三讲:原生数据类型使用陷阱 Ptifall of Primitive Data Type
- 数据中聚类个数的确定(Determining the number of clusters in a data set)
- [转]Web 数据的动态融合(Dynamic Fusion of Web Data 的文章进行翻译)
- Clustering of Multivariate data 多源数据的聚类
- Lengths of Primitive Java and C++ Data Types on Linux and Windows 32-bit/64-bit (Linux和Windows上Java和C++基本数据类型的长度对比32位/64位)
- 【翻译】衡量大数据的真实价值(Measuring the True Value of Big Data)
- Travelling of C Language - Type of Data-整形数据
- An Overview of Web Data Warehouse(web数据仓库研究综述)
- 第三节:原生数据类型使用陷阱 Pitfall of Primitive Data Type
- 机载激光雷达测量技术理论与方法读书笔记(3)机载激光雷达测量数据的滤波分类
- 【北京圣思园学习笔记】第03讲:原生数据类型使用陷阱(Pitfall of Primitive Data Type)
- 融合堆积图技术的时空数据可视化(Stacking-Based Visualization of Trajectory Attribute Data)