【问题标题】:iOS/Android Device orientation (pitch, yaw, roll). Is it better with accelerometer or gyroscope?iOS/Android 设备方向(俯仰、偏航、滚动)。加速度计或陀螺仪更好吗?
【发布时间】:2012-02-16 01:15:31
【问题描述】:

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

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

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

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

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

所以问题是:

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

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

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

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

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

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

【问题讨论】:

    标签: android ios accelerometer compass-geolocation gyroscope


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 嘿,我刚刚看完了this video for Android,我看到了他们的 SensorManager 类,我在一些 Titanium 示例中看到了,所以在 Android 上存在传感器融合。现在我开始在谷歌上搜索是否在 iOS 上实现了这种传感器融合,而你刚刚回答了这个问题。所以我认为 3. 选项是最好的选项(但它会花费最多的时间)。我会忽略 3GS。
    • 我完全同意 :-) 我刚刚更新了我的答案,因为我忘记了一个重要方面 - 要求。
    猜你喜欢
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    相关资源
    最近更新 更多