加速度计到相对位置

时间:2010-10-30 02:17:48

标签: iphone filter integration accelerometer motion

在重新发明轮子之前,我想看看是否有人可以分享以下内容的代码或提示:

为了获得iPhone的相对位置,需要

  • 设置加速度计读取速率
  • 噪音过滤加速度计响应
  • 将其转换为矢量
  • 低通过滤矢量以找到重力
  • 从原始读数中减去重力以找到用户引起的加速度
  • 过滤用户引起的加速度以获得您感兴趣的频率(可能是带通取决于应用程序)
  • 整合以找到相对速度
  • 整合以找到位置

所以我希望人们已经写了上面的部分或全部内容,可以提供提示,或者更好的代码。

我没有找到答案的几个问题:

iPhone加速度计的频率响应是多少?加速度计和模数转换器之间存在哪些硬件滤波器?

在不重复阅读值的情况下,可以调用加速度计代表的最快读取速率是多少?

上述各种手机的差异?

设计滤波器的任何好技巧,例如分离重力和用户运动的截止频率?

集成步骤的任何代码或提示?有没有理由整合到cartesion坐标系而不是矢量,反之亦然?

在实施此项目之前应该了解的其他任何经验,提示或信息?

2 个答案:

答案 0 :(得分:9)

当我找到信息时,我会在这个答案中收集它。

硬件

3GS使用ST LIS331DL 3轴±2g /±8g数字加速度计。

iPhone 4和iPad使用ST LIS331DLH 3轴±2g /±4g /±8g数字加速度计。

它们都能够在100Hz和400Hz下读取,尽管在iPhone 3G上(在iOS 4.1下),即使设置了setUpdateInterval以进行更快的更新,加速度计代表的调用频率也不会超过100Hz。我不知道API是否允许在iPhone 4上更快地更新,Apple的文档仅仅说明最大值是由iPhone的硬件决定的。 (TBD)

A / D转换器与MEM传感器位于同一芯片上,有利于抗噪声。

DL版本为8位(3GS),而DLH版本为12位(iPhone 4)。 DL版本的最大偏差(偏移)是DLH(0.04g对0.02g)版本偏差的两倍。

DLH的数据表报告加速噪声密度,但DL数据表中未报告该值。对于DLH,噪声密度相当低,为218μ g /√Hz。

两个传感器都提供100Hz采样或400Hz采样速度,没有自定义速率。如果iPhone没有以设定的采样率读取输出寄存器,传感器将丢弃值。

DL传感器的“典型”满量程值为±2.3g,但ST仅保证其至少为±2g。

温度对传感器的影响存在且可测量,但不是很显着。

TBD:

  • 硬件过滤器是否已打开,过滤特性是什么?
  • 加速度计的电源有多嘈杂? (任何人碰巧都有iPhone原理图?)
  • 加速度计使用内部时钟为采样率和A / D转换提供时序。数据表并未指出此时钟的准确度,精度或温度灵敏度。为了准确分析时间,iPhone必须使用中断来检测样本何时完成并记录中断时间。 (这是否已完成尚不清楚,但这是获取准确时间信息的唯一方法)

API

请求低于100Hz的采样率会导致获取所选样本,同时丢弃其余样本。如果在软件中请求的采样率不是100Hz,则实际传感器读数之间的时间间隔不能是均匀的。即使使用100倍,Apple也不保证均匀采样率。

似乎API没有提供软件过滤。

API确实将原始加速度计值缩放为表示Gs的双精度值。使用的比例因子是未知的,并且对于每个电话(即,校准的)是否不同以及是否持续校准以考虑传感器漂移是未知的。在线报道似乎表明,当iPhone平躺在水面上时,它会重新校准。

简单测试的结果表明,API为3GS设置的传感器为±2g,这对手持机芯来说通常很好。

TBD:

  • Apple是否校准每个单元,以便UIAccelerometer报告1G为1G? Apple的文档特别警告不要将该设备用于敏感测量应用。
  • 报告的NSTimeInterval是否表示从加速度计读取值的时间,或加速度计中断是否表示新值已准备就绪?

答案 1 :(得分:0)

我只是处理同样的问题。你的方法的唯一区别是我不想依靠低通滤波器来找到重力。 (TBH我看不出如何从加速度计读数中可靠地判断重力矢量) 我现在正在试用陀螺仪。