【问题标题】:How to determine absolute orientation如何确定绝对方向
【发布时间】:2010-11-14 05:26:05
【问题描述】:

我有一个 xyz 加速度计和磁力计。现在我想使用两者来确定设备的方向。我看到的问题是,根据设备方向,我需要以不同的顺序使用传感器。

让我举个例子。如果我的设备面向我,则可以使用加速度计确定滚动和俯仰的变化。对于偏航,我使用磁力计。

但是,如果我将设备水平放置(即,将其旋转 90º,面向天花板),则不会注意到向上矢量(现在是水平)的任何变化,因为加速度计没有检测到任何变化。现在可以使用磁力计检测到这一点。

所以问题是,如何确定何时使用其中一个。这两个传感器都够了吗?还是我需要其他的?

谢谢

【问题讨论】:

    标签: accelerometer sensors magnetometer


    【解决方案1】:

    关键是使用重力和磁力计这两个向量的叉积。叉积给出了一个垂直于它们的新向量。这意味着它是水平的(垂直于向下)并且与北方成 90 度。现在你有了定义方向的三个正交向量。这有点难看,因为它们并不都是垂直的,但很容易修复。然后,如果您将这个新矢量与重力矢量交叉,则给出垂直于重力矢量和磁体平面矢量的第三个矢量。现在您有了定义 3D 方向坐标系的三个垂直向量。原始加速度计(重力)向量定义 Z(上/下),两个叉积向量定义方向的东/西和北/南分量。

    【讨论】:

    • 我也是这么想的,穿过加速度计 (Z) 和磁力计 (磁 X) 得到 Y,然后穿过 Z 和 Y 得到局部 X。我想知道为什么没有人这样做;相反,每个人似乎都依赖于 X/Y 平面的倾斜补偿。
    • 因为这非常复杂,你们谈论它而不告诉我们为什么可能是一个原因。向我们展示代码。 ?
    • 我推荐观看这个视频:youtube.com/watch?v=0rlvvYgmTvI
    【解决方案2】:

    这里有一些贯穿这个项目的文档。从其他答案可以清楚地看出,数学可能很棘手。 http://www.freescale.com/files/sensors/doc/app_note/AN4248.pdf

    【讨论】:

      【解决方案3】:

      我认为“如何确定何时使用其中一个”的问题是错误的。您应该始终使用两个传感器进行定位。在某些情况下,其中之一是无用的。但是,这些都是极端情况。

      【讨论】:

      • 谢谢。看来我对这个问题不是很清楚。我很清楚在所有情况下我都需要同时使用加速器和磁力计,问题是在某些情况下这似乎还不够。
      • 让我再用一个类似的例子:假设我有一部手机垂直,屏幕朝向我,“向上”向量指向天花板。每当我倾斜时,加速度计都允许我获取“向上”矢量信息。问题是,如果我倾斜设备并将其水平放置(屏幕现在面向天花板,并且“向上”矢量指向与我所在位置相反的位置),那么如果我旋转手机,向上矢量不会再更新水平地放在桌子上。这是现在磁力计清楚地检测到的东西。那么问题来了,什么时候知道在什么情况下使用 acc 或 mag 呢?
      【解决方案4】:

      如果我的理解正确,您将需要一些东西来根据基点(北、东、南和西)检测俯仰(倾斜)和方向。

      可以从加速度计读取间距。

      可以从指南针读取根据基点的方向。

      将这两个传感器的输出与软件中的正确数学正确结合起来,很可能会为您提供绝对方向。

      我认为这样是可行的。

      祝你好运。

      【讨论】:

        【解决方案5】:

        如果您仍然需要绝对方向,您可以查看 Adafruit 的这个突破板:https://www.adafruit.com/products/2472。这块板的好处是它有一个 ARM Cortex-M0 处理器来为你做所有的计算。

        【讨论】:

          猜你喜欢
          • 2017-12-13
          • 1970-01-01
          • 2017-03-07
          • 2016-04-23
          • 1970-01-01
          • 2018-09-20
          • 1970-01-01
          • 2011-12-13
          • 1970-01-01
          相关资源
          最近更新 更多