0

亲爱的程序员/脚本/工程师/其他人,

问题: 我目前正在为 Android 3.2 平板电脑开发增强现实应用程序,但在获取准确的指南针读数时遇到了一些问题。我需要准确地知道平板电脑所面对的 (z) 方向,从北方测量。不管是度数还是弧度数都没有关系。

我目前尝试过的:

  1. 我使用磁力计和加速度计来计算角度。它有一个很大的缺点。如果旋转 90 度,传感器将测量更大或更小的角度。即使我在远离金属或任何磁性物体的开阔场地中。即使是偏角也不能解决它。

  2. 使用陀螺仪将是一种选择。我试图测量旋转速度并将测量的单位存储到一个变量中以了解确切的视图方向。不过,似乎有一个因素会导致失真。我发现快速旋转会扭曲准确的方向测量。陀螺仪的漂移并没有那么麻烦。该应用程序检查其他传感器是否有任何移动。如果没有检测到,则不考虑陀螺仪的旋转变化。

  3. 旋转矢量工作正常。它有一些问题,如陀螺仪。如果你缓慢移动并突然停下来,它会飘走几秒钟。另一个问题是快速旋转会不准确,具体取决于速度和您转了多少圈。(当我向各个方向摆动平板电脑时,你不会想知道我的同事是如何看我的……)

  4. Sensor.Orientation,没什么好说的。由于某种原因它已被弃用,所以我不会使用它。互联网上的很多例子都在使用这种传感器,它可能与磁/加速度计组合相同。

所以我目前没有想法。你能帮我进行头脑风暴/解决方案吗?提前谢谢你,罗兰

  • 编辑1:我愿意提供我尝试过的代码。
4

1 回答 1

2

我总结一下我们的意见:

  1. 从这段视频中可以清楚地看出,手机上的传感器一开始就不是很准确。也很有趣
  2. 重要的是,用户通过保持手机平放的 8 字形动作来校准传感器。应用程序可以以编程方式检查是否需要进行此类校准并通知用户。有关详细信息,请参阅此问题
  3. 为了消除抖动,从传感器获得的值需要通过某种低通滤波器进行滤波。这也在StackOverflow 上进行了讨论。
  4. 获得的方向不是真正的北方。要获得真北,必须使用GeomagneticField
于 2012-04-11T13:09:34.263 回答