使用CoreMotion跟踪用户速度而不使用GPS

时间:2016-01-26 11:51:25

标签: ios gps core-motion

我想跟踪用户的位置并根据他的移动在离线地图中更新它,而不使用GPS并且必须依赖位置更新。

我已尝试CMMotionManager并在G&#39}中获得了acceleration。然而,这是加速而不是速度。经理还允许获得引力,旋转和态度。

有没有办法在m/s中计算用户的速度?如果是这样,我该怎么办呢?任何公式/代码样本?

1 个答案:

答案 0 :(得分:4)

这样做的唯一方法是假设应用程序启动时手机处于静止状态。使用加速度计,无法区分静止和以恒定速率移动。例如,如果你在喷气式飞机上,你无法判断你是以800公里/小时的速度行驶而不是坐着。

如果你确实假设你在开始时处于静止状态,可以通过跟踪加速度来得出非常粗略的速度估计值,但在实践中,结果很容易产生大量的“漂移误差”,测量值很小错误很快就会导致完全错误的当前速度结果,所以你的位置无可救药地漂移。

所以在实践中,你的问题的答案是“不,不是真的。”

编辑:

如果你可以强加一些假设,你可能会得到更多可用的结果。

假设我们假设用户是徒步。我们排除了骑自行车/汽车/火车/飞机旅行。徒步,你真的不“漂移”。当用户采取步骤时,您将进入适合的状态。实际上,您可能会使用加速度计来识别行走者的特征反弹。有计步器应用已经做到了这一点。对于步行,你可能会认为在没有加速度(忽略重力,这是恒定的)的情况下,手机是静止的,所以将速度归零并保持在零,直到加速度超过某个阈值。这样可以减少漂移误差。