我现在一直在研究,现在我必须决定走哪条路。
矿山要求:需要知道设备相对于真实航向的方向(地理北极,而不是磁极)。 为此,我必须使用指南针,现在我必须决定哪一个,加速度计或陀螺仪。
因为对我来说这是一件新事,我花了几个小时阅读堆栈和维基百科文章,但我仍感到困惑。
我的目标是两个平台(iOS和Android),我正在使用Appcelerator Titanium进行开发。使用Titanium,我可以轻松获得加速度计的值(x,y,z)和trueHeading。
由于iPhone 3GS显然没有陀螺仪,我无法在该设备上使用它。较新的iPhone和Android设备拥有它。
所以问题是:
加速度计的XYZ和康帕斯的TrueHeading数据是否足以让我计算设备俯仰,滚转和偏航?但它必须准确。
从compas使用TrueHeading并使用陀螺仪的值代替加速度计更准确吗?
将加速度计和陀螺仪与TrueHeading相结合是否巧妙?
如果我采取第一条道路,我不必编写Titanium模块来获取陀螺仪数据,因为它只给我加速计数据,我也可以在3GS iPhone上使用它。
如果我采取第二条道路,我必须编写两个模块(iOS和Android)来获取陀螺仪数据,我将失去3GS支持。
如果我采取第三条道路,我再次必须编写Titanium模块,我将失去3GS支持。
答案 0 :(得分:3)
首先,如果您没有庞大的3GS用户安装基础但是编写新的应用程序,请不要关心旧硬件。 IMO从经济的角度来看没有意义,但会减少系统架构中的备选方案数量。
您正在寻找的是传感器融合。这样做需要一些像卡尔曼滤波器等重要的数学运算。好消息是它存在于iPhone(Core Motion)和Andriod上的AFAIK(听起来像Sensor fusion implemented on Android?中)。
除了名称之外,我对appcelerator了解不多,因此无法说出使用它的简单方法。无论如何,如果没有在抽象层上实现,我认为appcelerator为您提供了进行本机API调用的可能性。因此,您应该能够嵌入本机API(在摆弄一段时间之后;-)。
一般来说,这取决于您的要求。您需要获得更精确结果的速度越快,我就会推荐真正的传感器融合,包括所有3个传感器。如果您的响应时间较慢,可以使用罗盘和加速度计的组合。