2009-07-26 52 views
16

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

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

但是,如果我水平放设备(即,将其90°,面对天花板)在向上矢量(现水平),那么任何改变不会注意到,因为加速度计没有检测到任何变化。现在可以使用磁力仪来检测。

所以现在的问题是,如何确定何时使用一个或另一个。这两个传感器是否够用?还是需要别的东西?

感谢

回答

1

我想这个问题:“如何确定何时使用一个或另一个”是错误的。您应该使用始终使用两个传感器进行定位。有些情况下,其中一个是无用的。但是,这些都是边缘情况。

+0

谢谢。看起来我对这个问题并不十分清楚。我很清楚我需要在所有情况下都使用加速器和磁力计,问题是在某些情况下,这似乎不够。 – 2009-07-27 00:20:06

+0

让我再次使用一个类似的例子:假设我有一个手机垂直,屏幕正对着我,“向上”矢量指向手机。无论何时我倾斜,加速度计都可以让我获得“向上”矢量信息。问题是,如果我倾斜设备并将其水平放置(屏幕现在面向小型电脑,并且“向上”矢量指向我所在的位置),那么如果我旋转手机,向上矢量不会再更新水平地在桌上。这现在明显地由磁力计检测到。 因此,问题是,何时知道每种情况下使用acc或mag的位置? – 2009-07-27 00:20:44

1

如果我理解正确的话,你需要的东西根据基点(北,东,南,西),以检测间距(倾斜)和方向。

可以从加速度计读取音高。

取向根据基点可以从罗盘读取。

来自这两个传感器的输出相结合,在你的软件的权利数学正确将最有可能给你绝对的方向。

我认为这是可行的。

祝你好运。

17

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

0

如果你仍然需要绝对的方向,你可以从Adafruit检查这个休息板:https://www.adafruit.com/products/2472。关于这一点的好处是板卡是它有一个ARM Cortex-M0处理器来为你做所有的计算。