假设我想构建一个智能手机应用程序,告诉用户何时/何地下地铁站。我可以想到两种方法:

1)使用GPS和地铁路线图,跟踪用户的位置并在到达目的地时通知他
2)在火车上车时让他按动火车(这可能不切实际,因为用户可能会忘记这样做),使用从起点到终点的已知旅行时间,并在何时通知他时间到了。

有人可以告诉我是否还有其他好的方法?谢谢。

最佳答案

您可能需要进行“航位推算”。基本上,航位推算是一种导航技术,使用已确认的起始位置以及准确的速度和时间来计算新位置。请记住,速度本身就是航向和速度的结合,航向必须是真实的航向。在飞机上,指南针航向必须与风速和风向结合起来才能获得真正的航向。我认为您不必考虑地铁上的漂移,但是当用户四处移动或使用设备本身时,就不必考虑设备方向的变化。另外,仅因为航向通常是罗盘方位并不意味着一定要航向。您可能仅使用加速度计和计时器就可以完成工作。

正确使用死区重击还需要在到达已知位置时经常对其进行“重置”,以免错误加总得太严重。对于此应用程序,我认为可以将曲线检测和停止检测用作重置。对于“服务”止损,您可能会得到与实际止损过于接近的误报,但这种情况很少被忽略。实际上,如果不是出口停靠点,那可能没关系,因为您可能仍然对下一站的警告足够准确;如果是出口停靠点,那也没关系,因为行驶已经结束。

总结一下:您需要确保您有一个良好的初始起点;您需要补偿设备的重新定向才能获得正确的航向;您需要知道航向变化和航向时间之间的平均速度才能计算航向距离。您可以通过重置已知的地标来提高整体精度。

编辑:我不知道这是否使您更接近答案,但是克里斯·斯特拉顿(Chris Stratton)提出了一个关于加速度计矢量求和的有趣观点。是否有可能足够精确地跟踪设备的方向以具有可靠的与方向无关的重力矢量?您可以将其排除在向量和之外吗?可以沿着有用的方向无关矢量提供有用的加速度吗?如果是这样,那么跟踪加速的持续时间将为您提供该持续时间的平均速度和加速结束时的最终速度。没有加速度,速度将保持恒定。将所有这些放在一起可能会在不准确性之上堆积不准确性,直至无用。

关于android - 追踪地铁图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4071513/

10-09 12:48