gpt4 book ai didi

iphone - 检测 iPhone 旋转?

转载 作者:行者123 更新时间:2023-12-03 19:16:38 24 4
gpt4 key购买 nike

我想创建一个应用程序可以检测用户旋转 iPhone 设备时的旋转次数。目前,我正在使用 Compass API 来获取角度并尝试多种方法来检测旋转。以下是我尝试过的解决方案列表:1/在整轮上创建2个角度陷阱(整轮上的一 block ),以检测我们从指南针获得的角度是否通过它们。2/计算罗盘更新时间之间的所有角度距离(在 updateHeading 函数中)。让我们尝试将总角除以 360 => 我们可以得到旋转数

问题是:当手机旋转太快时,指南针无法跟上手机的速度,它会返回给我们最新时间的角度(而不是像真实旋转那样连续)。

我们还尝试使用加速度计来检测旋转。但当手机在平面上旋转时,这种方式就不起作用了。

如果您对此问题有任何解决方案或经验,请帮助我。

非常感谢。

最佳答案

iPhone4 包含 MEMS 陀螺罗盘,因此这是最直接的路线。

正如您所注意到的,磁力计响应缓慢。可以通过使用预期算法来减少这种情况,该算法利用缓慢性对当前的真正方向进行有根据的猜测。

首先,您需要确定传感器的实际性能。为此,您需要以多个旋转速度中的每一个以精确的速率旋转它,并记录罗盘的行为。旋转平台应该有读取瞬时位置的方法。

在较慢的速度下,您会看到不同程度的固定延迟。随着速度的增加,滞后会增加,直到接近 180 度,此时指南针会突然翻转。在较高的速度下,您将看到的只是翻转,尽管当以相同的值重复翻转时,它可能看起来不会翻转。在某些较高速度下,罗盘可能会出现向后旋转,与旋转方向相反。

获得旋转台可能很麻烦,并且确保它不会影响本地磁场(使指南针毫无用处)是一个挑战。理想的 table 将由铝制成,如果您需要使用钢制 table (最常见),则需要将手机安装在非磁性平台上,以使其尽可能远离钢。

本地的机械车间将是一个很好的起点:数控机床能够轻松完成所需的工作。

获得罗盘性能数据后,您将需要构建观察到的读数与实际方向和旋转速率的模型。反转模型并将其应用于读数以获得对实际读数的猜测。

一个简单的算法实现是保留读数的历史记录,并保留顺序读数之间差异的列表。由于我们知道罗盘存在滞后,因此当差值非零时,我们就会知道当前值由于滞后而存在一定程度的不准确性。

下一步是创建“校正”读数列表,其中先前实际值的已知滞后用于生成更新值,该更新值用于创建添加到列表中最后一个值的更新值。 “更正”列表,并存储为最新值。

当累积修正值(实际值与修正值列表中的最新值之间的差异超过 360 度时,这意味着我们基本上不知道指南针指向哪里。希望不会达到该点,因为大多数情况下)旋转运动通常应该持续相当短的时间。

但是,由于您的目标只是计算旋转次数,因此您的偏差将小于完整的旋转次数,直到累积误差达到明显更高的值。我不确定这个值是多少,因为它取决于实际的罗盘滞后和实际的旋转速率。但如果您只关心少量旋转(5 次左右),您应该能够获得可用的结果。

关于iphone - 检测 iPhone 旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2091591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com