在iPhone 4和第四代iPod Touch推出时,我曾尝试使用苹果的核心运动传感器融合算法进行本地死区漂移测试(范围为几英寸或几英尺),看能否得到任何有趣的结果。考虑到MEMS传感器的相对低规格,我并没有期望太过惊人的表现。虽然苹果的CMDeviceMotion
gravity
属性使用了一个不错的(但是不透明的)传感器融合算法,但是其补充属性userAcceleration
并非专为死区漂移而设计。尽管如此,我认为其中可能仍有足够的乐趣。
iPhone 4、iPhone 5、第四代iPod Touch以及第五代iPod Touch都显然采用了STMicroelectronics LIS331DLH加速度计和L3G4200D陀螺仪。(实际上,我还没有看到iTouch-5陀螺仪的零件号,所以它可能会有所不同。)
分解: iPhone-4, iTouch-4, iPhone-5, iTouch-5
ST规格表显示,加速度计可以采样1000Hz,最多±8g。而陀螺仪可以采样800Hz,最高达到±2000 dps。
然而,在我的第四代iPod Touch上玩(iOS 5和iOS 6都有),我只能将采样率提高到100 Hz。如果我将CMMotionManager
的deviceMotionUpdateInterval
设置低于0.01,它会自动重置为0.01。对于accelerometerUpdateInterval
和gyroUpdateInterval
也是如此。
此外,加速度计输出似乎总是被限制在约±2g左右。
我看到其他人对iPhone 4也有类似的边界问题。
这些限制严重限制了我从设备中挤出的本地加速度计算(通过实验我的第四代iPod touch)。我认为苹果将这些限制设置得很低是为了减少功耗。虽然我不知道它们是在硬件还是iOS某个地方设置的。
有没有人在iPhone 5或第五代iPod Touch(或任何iPad)上玩过这些加速度计和陀螺仪限制?(采样率高于100 Hz吗?是否存在超出±2g的加速度计测量?)