【问题标题】:How to calculate distance while running on Android?在Android上运行时如何计算距离?
【发布时间】:2016-05-10 02:30:30
【问题描述】:

我知道它有三种方法

  1. 基于 GPS: 将小时间间隔(5-10 秒)内的短距离行驶(使用 Location.distanceTo 计算)相加,但这种方法容易出现 GPS 错误,并且不适用于室内或短途行驶区域(如小公园)
  2. 加速度的双积分:我可以对加速度计数据进行双积分来计算距离,但加速度计读数中的噪声可能会导致误差加起来。
  3. 计步:我可以通过测量加速度计数据中的峰值或使用 Google Fit API 来检测步数,然后将总步数乘以平均步长。但这里的问题是计算平均步幅。

我倾向于使用 #3,因为它可以在室内工作,而且不容易出错或耗电。但是如何获得每一步的平均步幅,尤其是当跑步者在短跑和慢跑时步幅不同时。

有谁知道这些方法的任何组合以获得最佳结果?或者任何其他完全不同但有效的方法?

【问题讨论】:

    标签: android gps accelerometer


    【解决方案1】:

    嗯,这是工程 - 没有简单的答案;) 您提到的所有这些方法都有其优点和缺点。

    GPS 跟踪不会总结每次测量的错误 - 这很好,但另一方面,每个位置都会出现明显的错误。更重要的是,您在建筑物等中使用您的应用程序时会遇到问题。 当时间误差增加到很大时,加速度的双重积分在小距离上效果很好。也很难创建以适当方式计算它的程序。有很多重要的问题,例如采样或旋转和平移矩阵计算的时间,这使得这些应用程序在 android 上非常成问题。

    在我的应用中,我使用了以下算法:

    1. 通过 GPS 计算位置(来自网络提供商或 GPS 提供商 - 最佳精度胜出)
    2. 开始使用基于加速度计的算法。
    3. 在以下情况下停止使用基于加速度计的算法:

      • GPS 和加速度计测量结果大不相同
      • 基于加速度计的算法发现计算出的四元数与磁力计所说的不同。
      • 测量的速度或加速度大于给定值。
    4. 转到第 1 点

    希望对你有帮助

    【讨论】:

    • 我知道解决方案并不简单。您基于加速度计的算法是什么?第三步中速度的“给定值”是多少?
    猜你喜欢
    • 2014-04-13
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    相关资源
    最近更新 更多