我有一个 xyz 加速度计和磁力计。现在我想使用两者来确定设备的方向。我看到的问题是,根据设备方向,我需要以不同的顺序使用传感器。
让我举个例子。如果我的设备面向我,那么可以使用加速度计确定滚动和俯仰的变化。对于偏航,我使用磁力计。
但是,如果我将设备水平放置(即,将其旋转 90º,面向天花板),则不会注意到向上矢量(现在是水平)的任何变化,因为加速度计没有检测到任何变化。现在可以用磁力计检测到这一点。
所以问题是,如何确定何时使用其中一个。这两个传感器都足够了吗,还是我需要别的东西?
谢谢
我有一个 xyz 加速度计和磁力计。现在我想使用两者来确定设备的方向。我看到的问题是,根据设备方向,我需要以不同的顺序使用传感器。
让我举个例子。如果我的设备面向我,那么可以使用加速度计确定滚动和俯仰的变化。对于偏航,我使用磁力计。
但是,如果我将设备水平放置(即,将其旋转 90º,面向天花板),则不会注意到向上矢量(现在是水平)的任何变化,因为加速度计没有检测到任何变化。现在可以用磁力计检测到这一点。
所以问题是,如何确定何时使用其中一个。这两个传感器都足够了吗,还是我需要别的东西?
谢谢
关键是使用重力和磁力计这两个向量的叉积。叉积给出了一个垂直于它们的新向量。这意味着它是水平的(垂直于向下)并且与北方成 90 度。现在你有了定义方向的三个正交向量。这有点难看,因为它们并不都是垂直的,但很容易修复。然后,如果您将这个新矢量与重力矢量相交,则给出垂直于重力矢量和磁体平面矢量的第三个矢量。现在您有了定义 3D 方向坐标系的三个垂直向量。原始加速度计(重力)向量定义 Z(上/下),两个叉积向量定义方向的东/西和北/南分量。
这是一些贯穿这个项目的文档。从其他答案可以清楚地看出,数学可能很棘手。 http://www.freescale.com/files/sensors/doc/app_note/AN4248.pdf
我认为“如何确定何时使用其中一个”的问题是错误的。您应该始终使用两个传感器进行定位。在某些情况下,其中之一是无用的。然而,这些都是边缘情况。
如果我理解正确,您将需要一些东西来根据基点(北、东、南和西)检测俯仰(倾斜)和方向。
可以从加速度计读取间距。
可以从指南针读取根据基点的方向。
将这两个传感器的输出正确地与软件中的正确数学相结合,很可能会为您提供绝对方向。
我认为这样是可行的。
祝你好运。
如果您仍然需要绝对方向,您可以查看 Adafruit 的这个突破板:https ://www.adafruit.com/products/2472 。主板的好处是它有一个 ARM Cortex-M0 处理器来为你做所有的计算。