重力作为iOS中加速度计数据的参考框架

时间:2011-11-24 05:17:59

标签: iphone ios accelerometer gravity

我正在开发一款适用于摩托车手的iPhone应用程序,可以在发生崩溃后检测到崩溃。目前,我们正在进行数据采集过程并绘制图表并查看数据。我需要记录的是自行车相对于直立在路上的自行车的前向用户加速度和倾斜角度。我可以得到用户加速度矢量,即骑车者前进的方向是x,y和z加速度计值的平方。但是对于倾斜角度我需要一个恒定的参考,所以我想让我们使用重力矢量。现在,我意识到deviceMotion API具有重力和用户加速度值,这些值来自何处以及它们的含义是什么?如果我采用x,y和z平方的重力分量将始终直接给我我的直线?如何使用它来找到自行车相对于道路上的直立式自行车的倾斜角度?感谢。

3 个答案:

答案 0 :(得分:1)

抛开“whiy”这样做......

您需要一个非常低通滤波器。因此,一旦将手机放在自行车上的任何地方,您将获得各种动作加速度以及背景中出现的重力加速度。这为你提供了一个“向下”的持续向量,你可以在那个环境中解释加速数据... Fwd加速会让自行车在刹车的同时倾斜,所以我认为你也可以实时找出前进的方向

非常有趣的想法。

答案 1 :(得分:0)

假设这不是一个“笑话问题”,你需要一个参考点来比较用户点击“开始”时的位置。然后你可以使用cos(currentGravity.z / |referenceGravity|)和| referenceGravity | == 1因为Core Motion测量g中的加速度。

但说实话,例如有几个问题:

  • 当拿到参考框架时,设备必须处于固定位置,如果你把它放在口袋里并且它只是在里面移动一点,你的测量就是垃圾
  • 嗯,司机死了,但设备还活着?很可能iPhone也无法生存
  • 如果应用程序进入后台Core Motion入睡并停止提供值
  • 它必须是一个内部应用程序,因为忘记获得应用程序商店的批准

或者我们是否误解了你,这只是一场游戏?

答案 2 :(得分:0)

因为这不是个玩笑。

我想解决挂载问题。如何解释数据在很大程度上取决于iPhone的定位方式。对于那些没有真正骑摩托车的人来说,有些问题可能并不明显。

特别是在走动曲线/角落时。在低速转弯时,摩托车倾斜但骑车者没有或只是略微倾斜。在更高的速度转弯时,骑车者和摩托车都倾斜。如果不解决这可能会出现问题。我不会涵盖所有情景但是......

例如,大多数现代纺织机车夹克在左侧内侧都有一个手机袋。如果用户将手机放在这个口袋里,你可能会看到只有'加速'和'制动'(~z)加速。在这种情况下,你几乎不会看到大量的左右(~x)加速度,因为骑手会成比例地倾斜到转弯的g力。因此,当绕过一条曲线时,人们会看到(y)从一般的1g状态下降。因此,就(x)测量而言,骑车者的躯干基本上与重力相关联。

如果将设备安装在自行车上,您必须根据安装点调整您的预期。

就检测崩溃的算法的启发式而言,这很难定义。有些碰撞就像你在电视上看到的那样,自行车翻转成百万件,碰撞应该非常容易检测到,Huh 3gs测量了......崩溃!但是简单的下降呢?(自行车放在它的侧面,哎呀,骑手站起来,骑自行车去)他们可能会在没有任何特别显着的g力的情况下发生。(x轴上左右两边约1g除外) )

还有一些建议:

  • 灵敏度调整,甚至可能采用某种学习模式(用户将设备置于此模式并骑行,然后设备记录/学习该用户的平均骑行时间)

  • “我已停止”或类似按钮;也许骑手没有崩溃,也许他/她刚刚崩溃,它确实发生了,因为你有某种特殊的网络设置,它应该很容易传播新闻。