我正在开发一款计算密集型应用程序,该应用程序碰巧会监听传感器数据(加速度,还有角速度)。经过几个滤波器后,这些矢量被整合以跟踪位移。
我注意到与 CMDeviceMotion 和 CMGyroData 关联的时间戳延迟了,因为我的 CMMotionManager 的处理程序没有按照其 accelerometerUpdateInterval 和 gyroUpdateInterval 指定的 100 Hz 触发。它从大约 60 Hz 开始,然后上下波动。这主要影响集成。
独立应用程序中的相同代码可以像魅力一样达到 100Hz。
所以看起来来自大型应用程序其他模块的计算峰值导致传感器更新滞后。这让我感到惊讶,因为传感器管理器在其自己的线程上,而且我从文档中了解到传感器事件是由硬件触发的。
我的问题是:当时间戳像描述的那样不可靠时,数据还能用吗?可以使用另一个时钟推断吗?
我很困惑为什么其他线程上的大型异步计算会滞后于加速器更新。
谢谢, 安托
最佳答案
错误的时间戳与不准确的数据一样糟糕,因为它们对集成的影响相同。
大约 50 Hz 足以跟踪方向。我想知道你是如何跟踪位移的,因为 it is impossible with current sensors.
关于iOS 4+ : lag in CMDeviceMotion time intervals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219909/