iPhone 5 / 第五代iPod Touch的加速度计/陀螺仪限制有何变化?

14

在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。

规格: LIS331DLH, L3G4200D

然而,在我的第四代iPod Touch上玩(iOS 5和iOS 6都有),我只能将采样率提高到100 Hz。如果我将CMMotionManagerdeviceMotionUpdateInterval设置低于0.01,它会自动重置为0.01。对于accelerometerUpdateIntervalgyroUpdateInterval也是如此。

此外,加速度计输出似乎总是被限制在约±2g左右。

我看到其他人对iPhone 4也有类似的边界问题。

这些限制严重限制了我从设备中挤出的本地加速度计算(通过实验我的第四代iPod touch)。我认为苹果将这些限制设置得很低是为了减少功耗。虽然我不知道它们是在硬件还是iOS某个地方设置的。

有没有人在iPhone 5或第五代iPod Touch(或任何iPad)上玩过这些加速度计和陀螺仪限制?(采样率高于100 Hz吗?是否存在超出±2g的加速度计测量?)


以上内容的一些澄清:在我发现 iTouch-4 的 100 Hz 和 ±2g 限制之前,我是通过实验找出来的。其他人也说 iPhone-4 有同样的限制。我的问题是:有人尝试过 iTouch-5、iPhone-5 或 iPad 并发现了相同的限制吗?或者是不同的限制? - Warren Whipple
3个回答

6
我所阅读的资料显示,在确定加速度计将读取的最小/最大读数时,通常有2-3个选择。2G是加速度计的极为常见的选择,因为下一步(8G)通常会读取过粗,无法获得手部运动所需的精确测量。如果您要从建筑物上扔下它来测量撞击地面的力量,则需要使用8G(或某些型号提供的16G)。
根据Corona Labs的专家的说法,Hz有意被限制在100Hz以内。这是为了避免滥用电池。我曾经看到过加速度计是最省电的传感器,但我想这都是相对的,或者在某个点上功耗会急剧增加,大约在100Hz左右。

关于量程:详细的加速度计规格(LIS331DLH datasheet pdf p9)显示范围设置为±2g/±4g/±8g。 我把它挥舞着,很容易超过2g。请记住,加速度计总是感受到重力,因此您只需要提供1g即可达到2g的限制。我认为对于我的目的(死准航行),±4g会是最有用的。 转换为±4g应该只会将灵敏度减半,对吧?这似乎并不那么糟糕……我想它可能会干扰iOS监视设备方向。 - Warren Whipple
1
关于功耗:如果我正确地阅读了加速度计规格(LIS331DLH数据表pdf第10页),则功耗仅在“低功耗模式”(10微安)与“正常模式”(250微安)之间变化。低功耗模式输出设置为0.5至10赫兹,而正常模式输出设置为50至1000赫兹。由于苹果允许100赫兹,将其提高到1000赫兹不应该增加功耗。详细的陀螺仪规格(L3G4200D数据表pdf第11页)只显示一个活动功耗模式(6.1毫安)。 - Warren Whipple
好的,我会继续寻找更好的答案。如果频率被设置为限制电池使用,我不确定他们是否会让我们更改频率,但像你上面说的那样,将最小/最大值更改为4G似乎非常合理。特别是考虑到大多数应用程序仅使用加速度计来确定方向,2、4或8G都可以以相等的精度完成这项任务,我想。你提出了一个非常好的观点,即需要1G才能克服地球引力。无论如何,我会花些时间,如果我找到任何有价值的东西,我会让你知道的。 - BluMo.us
如果你有为iPhone 4编写的应用程序,并且它可以输出我可以发布(或发送电子邮件,无论哪种方式)的内容,我很乐意将其放在我妻子的手机上并摇晃一下,看看出了什么问题。 - BluMo.us
1
当然可以!您可以使用苹果的 AccelerometerGraph 示例代码 来检查加速度计范围。要检查更新间隔限制:链接 CoreMotion.framework。导入 CoreMotion.h。在任何地方运行:CMMotionManager *mm = [[CMMotionManager alloc] init]; mm.accelerometerUpdateInterval = 0.001; mm.gyroUpdateInterval = 0.001; NSLog(@"%f, %f", mm.accelerometerUpdateInterval, mm.gyroUpdateInterval);。我立即将两者重置为0.01。 - Warren Whipple
显示剩余4条评论

3
我在iPhone 5上测试techBASIC时发现了一个异常,导致我进入了这个讨论。显然,iPhone 5中的加速度计设置为8G范围!虽然我找不到任何参考来确认它,但当我上下摇晃iPhone 5时,techBASIC的加速度计演示显示了这一点:

Plot of Acceleration on an iPhone 5

这对物理应用来说非常令人兴奋。我曾经使用SensorTag来测量模型火箭的加速度,因为它有可选的8G范围,而iPhone没有 - 现在你可以不用SensorTag,直接使用iPhone了。

http://www.youtube.com/watch?v=8YNjwcNXOK4iPhone Rocket


太好了,回答了我问题的一半!谢谢!您是否有兴趣检查accelerometerUpdateIntervalgyroUpdateInterval上的大写字母是否已从100Hz提高?在我的评论这里中解释了一种简单的检查方法。 - Warren Whipple
不,至少使用运动管理器是不行的。我得到的更新速率大约为每个样本0.02秒,有时会更快,但并没有像可靠的100 MHz速率那样。不过,有很多采样加速度计的方法。你可能能够从中挖掘出更多信息。 - Mike

2
为了回答你问题的另一半,我正在使用iPad Mini。当我使用Warren Whipple's suggestion时,如果我将accelerometerUpdateIntervalgyroUpdateInterval设置为任何更小的值,它们会立即重置为0.01。
然而,当我对设备进行诊断测试时,我发现加速度计或陀螺仪数据更新的实际速率更接近于0.02秒。也就是说,如果我将accelerometerUpdateInterval设置为0.01秒并在0.01秒时查询加速度计数据,我每隔一个获取周期就会得到一个独特的读数,但如果我将其设置为0.02秒(或在0.02秒时查询),那么我每个周期都会得到一个独特的读数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接