使用 CoreMotion 跟踪用户速度,无需 GPS

Fen*_*son 2 gps ios core-motion

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

我已经尝试过CMMotionManager并获得acceleration了G。然而,这是加速度而不是速度。管理者还允许获得重力、旋转和态度。

有没有办法计算用户的速度m/s?如果是这样,我该怎么办?有公式/代码示例吗?

Dun*_*n C 5

执行此操作的唯一方法是假设应用程序启动时手机处于静止状态。使用加速度计无法区分静止状态和以恒定速率移动之间的区别。例如,如果您乘坐喷气式飞机,您将无法判断自己正在以 800 公里/小时的速度飞行并且没有保持静止。

如果您确实假设开始时处于静止状态,则可以通过跟踪加速度得出非常粗略的速度估计,但实际上,结果很容易出现大量“漂移误差”,如果小的测量误差很快就会增加直到完全错误的当前速度结果,因此您的位置无可救药地漂移。

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

编辑:

多思考一下,如果您可以施加一些假设,您也许可以获得有用的结果。

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