0

我已经研究了一段时间,现在我必须决定走哪条路。

地雷要求:需要知道设备相对于真实航向的方向(地理北极,而不是磁极)。为此,我必须使用指南针,现在我必须决定哪个其他东西,加速度计或陀螺仪。

由于这对我来说是新事物,所以我花了几个小时阅读堆栈和维基百科文章,但我仍然感到困惑。

我的目标是两个平台(iOS 和 Android),我正在使用 Appcelerator Titanium 开发它们。使用 Titanium,我可以轻松获得加速度计的值 (x,y,z) 和 trueHeading。

由于 iPhone 3GS 没有陀螺仪,显然我不能在该设备上使用它。较新的 iPhone 和 Android 设备都有它。

所以问题是:

  1. 加速度计的 XYZ 和 Compas 的 TrueHeading 数据是否足以让我计算设备俯仰、滚动和偏航?但它必须是准确的。

  2. 使用 Compas 的 TrueHeading 并使用陀螺仪的值而不是加速度计的值是否更准确?

  3. 将加速度计和陀螺仪与 TrueHeading 结合起来是否聪明?

如果我走第一条路,我不必编写 Titanium 模块来获取陀螺仪数据,因为它只给我加速度计数据,我也可以在 3GS iPhone 上使用它。

如果我走第二条路,我必须编写两个模块(iOS 和 Android)来获取陀螺仪数据,并且我失去了对 3GS 的支持。

如果我走第三条路,我又不得不编写 Titanium 模块,我失去了对 3GS 的支持。

4

1 回答 1

3

首先,如果您没有庞大的 3GS 用户安装基础但编写了一个新应用程序,请不要关心旧硬件。从经济角度来看,IMO 没有任何意义,但会减少系统架构中替代方案的数量。

您正在寻找的是所谓的传感器融合。因此,这样做需要一些繁重的数学运算,例如卡尔曼滤波器等。好消息是它存在于 iPhone(Core Motion)和 Andriod 上的 AFAIK 上(听起来像是在 Android 上实现的传感器融合?)。

除了名称之外,我对 appcelerator 了解不多,因此不能说任何关于使用它的简单方法。无论如何,如果没有在抽象层上实现,我假设 appcelerator 为您提供了进行本机 API 调用的可能性。因此,您应该能够嵌入本机 API(在摆弄了一段时间之后;-)。

一般来说,这取决于您的要求。您需要越快获得准确的结果,我就越推荐真正的传感器融合,包括所有 3 个传感器。如果您对较慢的响应时间感到满意,那么指南针和加速度计的组合就可以了。

于 2012-02-16T02:20:46.887 回答