【发布时间】:2013-06-17 05:45:54
【问题描述】:
如何使用卡尔曼滤波器组合加速度计、陀螺仪和磁力计三个传感器值?我们正在使用 arm 和 avr uC。
我已经阅读了有关堆栈溢出的所有问题,并在网上进行了很多搜索,但对于使用卡尔曼滤波器组合值的基本信息,我没有得到满意的结果。
【问题讨论】:
标签: kalman-filter
如何使用卡尔曼滤波器组合加速度计、陀螺仪和磁力计三个传感器值?我们正在使用 arm 和 avr uC。
我已经阅读了有关堆栈溢出的所有问题,并在网上进行了很多搜索,但对于使用卡尔曼滤波器组合值的基本信息,我没有得到满意的结果。
【问题讨论】:
标签: kalman-filter
不幸的是,没有“程序员的卡尔曼滤波器”之类的东西。不要指望某些公式可以盲目使用,一切都会神奇地起作用。
如果您对卡尔曼滤波器方法一无所知,请在 Google 上搜索(关键字:态度、错误状态、卡尔曼滤波器):
http://scholar.google.com/scholar?q=attitude+%22error+state%22+kalman+filter
特别是,相对轻读是Indirect Kalman filter for 3D attitude estimation。确保您对其中的数学感到满意并且完全理解它;否则你将无法实现它。 :(
如果你在理解上面的东西时有困难,我强烈推荐
这基本上是一个教程,我无法想象一种更简单的方法来实现传感器融合。当作者开发它以在微控制器上运行时,它可以很好地在微控制器上运行。
只是一个旁注。卡尔曼滤波器之所以如此受欢迎是因为
在某些条件下是最优的和
理论告诉你如何估计你的滤波器参数。
至于过滤器参数,您最终可能会调整它们,因此在我看来后者并不是一个很大的优势。请参阅SIGGRAPH Course Pack 中的5.1 参数估计或调整。
至于最优性,在实际应用中,根据领域的不同,这些条件通常不再成立;卡尔曼滤波器降级为(良好)启发式。
但是,如果您仍然使用启发式算法,为什么不选择一个更容易实现的呢?例如方向余弦矩阵IMU:理论中介绍的那个。
【讨论】:
现在,这是一个相当古老的问题,但人们可能会继续寻找这个问题。 目前最好的指南/论文之一是 J. Solá (http://www.iri.upc.edu/people/jsola/JoanSola/objectes/notes/kinematics.pdf) 的“Quaternion kinematics for the error-state KF”
它提供了关于四元数的完整入门知识,以及如何在错误状态卡尔曼滤波器中使用它们,以及易于遵循的嵌入式实现方程。 此外,如果您只是测试算法并希望稍后获得性能(并且拥有 ARM Cortex-M4/M7),您可以使用带有 C++ 的 Eigen 模板库在几个小时内实现。
祝你好运!
【讨论】: