使用没有GPS的CoreMotion跟踪用户速度



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

我试过CMMotionManager并在 G 中获得了acceleration。然而,这是加速而不是价值。经理还允许获得重力,旋转和姿态。

有没有办法计算用户的速度m/s?如果是这样,我将如何去做?任何公式/代码示例?

执行此操作的唯一方法是假设应用启动时手机处于静止状态。使用加速度计,无法区分静止和以恒定速率移动之间的区别。例如,如果你在喷气式飞机上,你无法分辨出你以 800 公里/小时的速度行驶并且没有坐着不动。

如果你假设你在开始时处于静止状态,那么通过跟踪加速度可以得出非常粗略的速度估计,但在实践中,结果容易产生大量的"漂移误差",如果小的测量误差很快加起来是一个完全错误的电流速度结果,所以你的位置无可救药地漂移。

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

编辑:

再考虑一下,如果你能强加一些假设,你也许能够得到可用的结果。

假设

我们假设用户步行。我们排除骑自行车/汽车/火车/飞机旅行。步行,你真的不会"漂移"。随着用户的步骤,您断断续续地移动和开始。事实上,您可能会使用加速度计来识别一个人行走的特征反弹。有些计步器应用程序已经这样做了。对于步行,您可能会假设在没有加速度的情况下(忽略恒定的重力),手机是静止的,因此将速度归零并保持为零,直到加速度超过某个阈值。这将使您能够减少漂移误差。

最新更新