19

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

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

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

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

谢谢

4

5 回答 5

18

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

于 2010-02-13T17:36:12.393 回答
2

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

于 2013-03-25T20:26:04.347 回答
1

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

于 2009-07-26T23:59:27.787 回答
1

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

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

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

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

我认为这样是可行的。

祝你好运。

于 2009-07-27T00:05:24.330 回答
0

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

于 2015-05-28T19:14:54.163 回答