如何使用设备的方向传感器查找或关闭?

时间:2014-01-03 01:12:08

标签: android

我一直试图在没有好的解决方案的情况下在Android上找到(或者向下,哪个不会更难找到,只是乘以-1)。我需要一个向量指向与加速度计使用的坐标系相同的坐标系。这样,我将能够:

  • 将重力添加的力移除到加速度计的输出
  • 确定设备是否在垂直方向上摇晃。

重力感应器 首先,我想过使用重力传感器,这将是最简单的解决方案。但!我的设备没有重力感应器......

磁场传感器因此,我想到使用磁场传感器找到两个向北指向两个不同位置但向相同方向的向量,之后我计算了两个向量的交叉积。矢量试图找到向上或向下的向量。它不起作用(或者似乎没有)。

带加速度计的磁场:然后,我想到了交叉产品,但这次,用磁场传感器提供的矢量和加速度计提供的矢量。我找不到怎么做,因为加速度计在用户加速时稍微向下指向,因为引力。

所以,我得出结论,我需要使用方向传感器这样做,或者只依靠低通滤波器......

简单地说,如果我有这些传感器,如何确定加速度计使用的坐标系中指向的矢量是什么:

  • 取向
  • 加速度计
  • 磁场

2 个答案:

答案 0 :(得分:3)

不幸的是,你的问题并不是特别简单。我对Android API不够熟悉,如果你环顾四周,你会发现一些试图将重力加速度与外部设备加速度隔离开来的东西(我知道有一些传感器融合算法能够取得一定程度的成功) 。

问题的核心是由于重力引起的加速度和设备上的局部加速度是难以区分的(没有重力传感器这样的东西)。加速度计只记录作用在设备上的总加速度,即所有加速度的总和。隔离重力矢量并非易事,但我所看到的方法主要涉及使用陀螺仪,因为磁力计太简单并且包含太多的延迟。

相反,我建议您假设设备上的局部力可以忽略不计,因此您的加速度是重力矢量。或者如您所提到的,使用低通滤波器,这对于大多数用途来说就足够了(并且是为了传感器融合和增强现实而定义DOWN的常用方法)。

一切顺利!

答案 1 :(得分:1)

磁场不是水平的,这就是使用磁力计的解决方案不起作用的原因。这称为磁倾角。一般来说,如果你想确定向上/向下矢量,你不应该依赖磁场,因为其他解决方案更容易实现,更精确。

找到向上/向下矢量的两个主要解决方案是:

  • 低通加速度计。对于您的目的,这可能不够准确。
  • 陀螺仪和加速度计上的传感器融合。这将足够精确,但需要一个好的数学头来实现(即:矩阵或四元数)
祝你好运!

相关问题