如何根据陀螺仪和加速度计输入确定位置?

电器工程 传感器 加速度计 数学 伊穆 陀螺仪
2022-01-24 11:33:31

我有一个 3 轴加速度计和一个 2 轴陀螺仪。我打算测量只在 X 和 Z 轴上移动的东西。我听说过使用卡尔曼滤波器来平滑加速度矢量,但我找不到适合该主题的完整初学者的好的教程。另外,我知道我可以对加速度进行双重积分以获得位置,但是如何使用有限数量的采样加速度矢量来做到这一点?对于这两个主题的初学者,我会很感激链接到好的教程。

4个回答

这是一个关于为 IMU 实现方向余弦矩阵的教程:http: //gentlenav.googlecode.com/files/DCMDraft2.pdf

看看 ArduIMU 页面: http ://code.google.com/p/ardu-imu/wiki/Theory

这里有几个开源项目可以做到这一点。阅读代码应该会给出一些线索:

http://code.google.com/p/gluonpilot/source/browse/trunk/Firmware/#Firmware/rtos_pilot%3Fstate%3Dclosed

http://code.google.com/p/sf9domahrs/

好吧,卡尔曼滤波器是一种神奇的魔法。:)

我首先从数字滤波器开始。很好地解释了初学者。而且很容易不稳定。这些简单的过滤器适用于任何系统的滚动和俯仰。只需要通过实验来调整准确率与响应率。诀窍是[准确度 = 1 - 响应]。

试一试。

然后要了解卡尔曼滤波器,您必须经过以下步骤:

  1. 可能性
  2. 贝叶斯定律
  3. 然后需要学习如何对简单的场景进行建模,以便将它们拟合到卡尔曼滤波器中。
  4. 目前我在这里,所以找到该怎么做..一定会让你知道。

如果你遇到这样的事情,必须分享。

...双积分加速度以获得位置

理论上(只要你有完美的传感器和测量)你可以做到这一点,但实际上你不能。问题是当物体静止不动时,加速度计将具有由重力引起的 1G 恒定力(在自由落体的情况下为零 G),但这并不能精确地测量为 1.00000000...G。移动物体时,您将获得一个矢量,作为 1G 重力和运动加速度(通常远小于 1G)的总和,并且您的测量值会随着时间的推移累积太多的噪声,如果您尝试整合测量值,则不会有用加速度减去 1G 重力。

我大约 6 个月前开始构建四边形,在正确确定角度时遇到了很多问题 :)

首先你应该试试这个演示文稿 - http://web.mit.edu/scolton/www/filter.pdf 它真的很全面,它可以帮助你更好地了解你真正想要的东西,它几乎成功了为了我。

我想这在很大程度上取决于您,但是,实现卡尔曼滤波器不仅需要非常扎实的数学知识、系统理论知识,在这种情况下还需要物理知识,而且对 CPU 负载的要求也很高。如果您打算使用时钟频率为 16Mhz 的 Atmega328,您可能会遇到使用这种滤波器的问题。如果您使用的是 DSP,这真的很有效,这样您就可以对您的输入进行低通滤波。

总而言之,我的建议是 - 尝试使用一阶互补滤波器,或者甚至是二阶互补滤波器,以防您对结果不满意。如果您的系统没有高频振动,那应该可以很好地工作。除此之外,JustJeff 的链接是一个完美的起点,以防您在实施过程中遇到困难 :)

一切顺利,丹