0

我正在为摩托车手开发一个 iPhone 应用程序,该应用程序将在事故发生后检测到事故。目前我们正在数据采集过程中绘制图表和查看数据。我需要记录的是自行车相对于直立在路上的自行车的前向用户加速度和倾斜角度。我可以通过 x、y 和 z 加速度计值的平方得到用户加速度矢量,即骑手前进的正向。但是对于倾斜角度,我需要一个恒定的参考,所以我认为让我们使用重力矢量。现在,我意识到 deviceMotion API 具有重力和用户加速度值,这些值来自哪里,它们是什么意思?如果我取 x 的 sqrt,重力的 y 和 z 平方分量总是让我直接向上吗?我如何使用它来找到自行车相对于道路上直立自行车的倾斜角度?谢谢。

4

3 回答 3

1

抛开“为什么”这样做......

你需要一个非常低通的滤波器。因此,一旦将手机放在自行车上的任何地方,您就会在后台获得各种机动加速度和重力加速度。这为您提供了“向下”的持续矢量,然后您可以在该上下文中解释加速度数据......前向加速度会使自行车与制动相反,所以我认为您也可以实时确定前向方向.

非常有趣的想法。

于 2011-11-24T12:32:37.943 回答
0

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

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

  • 获取参考系时设备必须处于固定位置,如果将其放在口袋中并且它只是在里面移动一点,那么您的测量就是垃圾
  • 嗯,驱动程序死了,但设备还活着?iPhone 也很有可能无法幸存
  • 如果应用程序进入后台,Core Motion 进入睡眠状态并停止传递值
  • 它必须是内部应用程序,因为忘记获得应用程序商店的批准

还是我们误解了你,这只是一场游戏?

于 2011-11-24T08:45:39.680 回答
0

因为这不是玩笑。

我想解决安装点问题。如何解读数据很大程度上取决于 iPhone 的定位方式。对于那些实际上不骑摩托车的人来说,有些问题可能并不明显。

尤其是在绕过曲线/拐角时。在低速转弯时,摩托车会倾斜,但骑手没有或只是略微倾斜。在更高的速度下,骑手和摩托车都会倾斜。如果不加以解决,这可能会带来问题。我不会涵盖所有场景,但是..

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

如果设备安装在自行车上,您将不得不根据安装点调整您期望看到的内容。

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

还有一些建议:

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

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

于 2011-11-27T00:25:51.890 回答