繁体   English   中英

iOS / Android设备方向(俯仰,偏航,滚动)。 使用加速度计或陀螺仪是否更好?

[英]iOS/Android Device orientation (pitch, yaw, roll). Is it better with accelerometer or gyroscope?

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

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

由于这对我来说是新事物,因此我花了最后几个小时阅读堆栈和Wikipedia文章,但仍然感到困惑。

我针对这两个平台(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支持。

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

您正在寻找的被称为传感器融合。 因此,这样做需要像卡尔曼过滤器(Kalman Filters)等一些繁重的数学运算。好消息是它存在于iPhone( Core Motion )和Andriod的AFAIK(听起来像是在Android上实现的Sensor Fusion中一样)。

除了名称之外,我对appcelerator的了解不多,因此无法说出一种简单的使用方法。 无论如何,即使不是抽象层上的所有内容,我都认为appcelerator为您提供了进行本地API调用的可能性。 因此,您应该能够嵌入本机API(经过一段时间的摆弄;-)。

通常,这取决于您的要求。 您需要越快地获得准确的结果,我就越推荐真正的传感器融合,包括所有3个传感器。 如果您对响应时间较慢感到满意,则可以将指南针和加速度计结合使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM