代码之家  ›  专栏  ›  技术社区  ›  moonshadow

积分陀螺和加速度计读数[副本]

  •  14
  • moonshadow  · 技术社区  · 16 年前

    可能重复:
    Combine Gyroscope and Accelerometer Data

    我读了很多关于 Kalman filters 但是,似乎很少有好的公众可访问的从数学论文到实际工作代码的工作实例。

    我有一个系统,包含一个三轴加速度计和一个陀螺,测量围绕其中一个加速度计轴的旋转。这个系统被设计成由人来控制,而陀螺仪大部分时间都在测量围绕重力矢量或接近重力矢量的旋转。(在同一行业工作的人很可能会认识到我所说的话;)我意识到这是缺乏约束的。

    陀螺仪似乎有一个近乎恒定的偏压,对于系统的每一个实例都略有不同。当系统倾斜,使陀螺轴不与重力共线,且绕着陀螺轴旋转时,我该如何对滤波器进行编码,以便使用加速度计读数来校准陀螺?似乎应该有足够的信息来做到这一点,但被告知没有,为什么也会有答案:)

    6 回复  |  直到 9 年前
        1
  •  3
  •   Louis Davis    9 年前

    nBot, a two wheel balancing robot
    关于作者如何选择解决他的两轮机器人的平衡问题,有相当多的信息和链接。

        2
  •  7
  •   Mark T    16 年前

    你这里似乎有两个(或三个)独立的问题。

    1.你不太了解卡尔曼滤波器和/或它们背后的数学原理。这将使正确实施和使用一个非常困难。

    2。你似乎不了解这个问题所涉及的基础物理。(基础物理是指基础物理,而不是简单物理,因为它并不简单。)

    我建议您尝试使用一个更简单的集成器,例如Runga Kutta 4,对于它,您可以找到许多关于实现和使用示例的书籍。这对于这个问题应该是足够的。(如果客户指定了卡尔曼,请询问原因。)

    至于为什么这个问题受到限制,在我看来,它似乎没有办法确保设备是垂直的,也没有办法测量实际的方向。暂时忘记陀螺,假设装置不能绕垂直轴旋转。你有三个加速度计,大概是用来估计三维中的位置,所以如果你看到x方向的加速度,你就增加了对x方向的位置的估计。同样,如果你看到z方向的加速度(我假设是“向上”),你会增加z方向的估计值。现在稍微旋转设备,比如说围绕Y轴旋转30度。现在,当设备认为你正在沿着x方向加速时,设备实际上加速的速度比x中指示的要慢一点。 它也在z方向加速。所以你的位置估计现在是不正确的。

    旋转更难整合(方程式更“僵硬”,需要更小的时间步来保持精度)。但是,如果设备被提示,他们也会遇到类似的计算错误答案的问题(因为设备不能分辨出它被提示)。它会认为围绕垂直轴的旋转比实际的大或小,因为旋转的一部分实际上是围绕不同的轴(就像加速部分沿着不同的轴一样)。

    也许你需要雇佣一个顾问(不,我不是在找工作)来帮助你制定数学。

        3
  •  4
  •   Steve Roe    15 年前

    考虑到你对卡尔曼滤波器的兴趣,也许你打算用惯性测量来增强GPS数据。关于你的问题:

    “如何对过滤器进行编码? 使用加速度计读数 校准陀螺仪的时间 系统倾斜,所以陀螺轴 与重力不共线,且 绕着陀螺轴旋转?它 似乎应该有足够的 要做的信息”

    这听起来像是陀螺罗盘校准。假设您正在进行工厂校准,并且将设备放在工作台上,您将能够独立地测量校准。然后运行调平代码,您将从测量和陀螺罗盘对中的差异中写出陀螺偏差误差。

    如果你想在飞行中更新陀螺漂移,那么你需要卡尔曼滤波器。

    就实施而言,我建议第7章, GPS和惯性集成 属于 Global Position System Theory and Applications vol 2 在这个问题上有很好的背景。它有理论和数学,但没有源代码。

        4
  •  3
  •   Kena    16 年前

    我在上找到了关于在导航中使用加速度计和陀螺仪的好文章。 this blog . 卡尔曼滤波的部分有点模糊,但似乎有代码样本。

    您还可以在以下网址找到有关卡尔曼滤波的一般资源: http://academic.csuohio.edu/simond/publications.html . 中提到的文章 (8) 是一个好的,不太可怕,介绍卡尔曼滤波器背后的数学。

        5
  •  2
  •   moonshadow    12 年前

    丹麦的一位先生刚刚寄了一封信 a worked example of the derivation of a Kalman filter 几乎完全解决了这个问题。

        6
  •  1
  •   Chris O    14 年前

    如果你正好在为螺旋桨控制器开发,那么 the Parallax Object Exchange 有一些代码。好问题;-)