【问题标题】:Android App getSpeed() inaccurate on slowdownAndroid App getSpeed() 在减速时不准确
【发布时间】:2013-06-05 14:11:12
【问题描述】:

很抱歉,如果这在其他地方有所涉及,但我无法具体找到这个问题。

我正在为某人开发一个赛车应用程序,它会根据预设的目标速度告诉您领先或落后多少秒。

为了测试它,我们使用车载计算机直接从汽车读取速度(无 GPS)。我的应用似乎与车载计算机有些匹配,直到汽车开始减速,然后我的应用变得不稳定。

这是一个视频,问题出现在大约 1:38 http://www.youtube.com/watch?v=GhVM1VCqiA8

该应用有时会出现的事实让我相信 GPS 覆盖范围和计算时间的公式都很好。

显然存在精度问题,尤其是在汽车减速时。

这是我的一些用于跟踪速度的代码。

LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

LocationListener mlocListener = new MyLocationListener();

mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);

public class MyLocationListener implements LocationListener

{

    @Override

    public void onLocationChanged(Location loc)

    {

        actualSpeedMps = (double)loc.getSpeed();

    }
////more

我认为 GPS 试图更新得太快,因此当汽车突然改变时给我不稳定的速度。

我的想法是将当前为 0 的 requestLocationUpdates 最小时间参数更改为 500 之类的值。

我从基础教程中学习了这门课程,所以也许有人可以向我推荐一个更准确的课程,可以让我更快地学习。

提前致谢

【问题讨论】:

  • 这看起来不对。请描述视频中可见的单位。这是英里/小时吗?红色汽车显示的速度在哪里?顶部或底部红色显示?您的应用程序显示什么?在大多数情况下,您的应用会显示一半值。您还可以与有效的 Navi 或 GPS 应用程序进行比较。在苛刻的打破,当然 GPS 将关闭 1 秒。但是您还有其他问题,至少在视频中
  • 我的应用会显示与您的目标速度相比领先或落后多少秒。该数字应与车载计算机的顶部数字匹配(右),在变得不准确之前它首先会匹配。
  • 目标速度是多少? GPS 测量当前速度,这非常正确(0.1 公里/小时)。在您的问题中,您描述了当前速度,但现在您告诉目标速度。更详细、更准确地解释您想要测量的内容。目标速度如何定义,目标速度的单位是多少,目标速度从何而来?
  • 关于减速。当你说“减速”时,汽车行驶多少米/秒或公里/小时?
  • 这是一场“平均速度”比赛,目标是以精确的平均速度到达目的地吗?你也不需要计算距离吗?

标签: android gps


【解决方案1】:

该应用程序有时会出现的事实让我相信 GPS覆盖范围和计算时间的公式都很好。

您的价值通常是红色设备价值的两倍或三倍。 当您以 30 m/h 左右的速度行驶时。 GPS 在中速和高速(如车辆)下非常准确

所以问题显然出在您的算法和获得 GPS 位置时的假设中。

我认为 GPS 试图更新得太快,因此 当汽车突然改变时给我不稳定的速度。

当然不会,它不会每秒更新一次以上。 GP 仅在静止不动时才会出现问题,然后它通常不会报告 0 公里/小时,但这是另一回事。

结论:
GPS 不是错误的来源,而是您的算法。

提示:

  • 尝试通过使用模拟 GPS 编写单元测试来修复您的算法 输入
  • 不要假设您每秒接收一次位置,使用时间戳来计算时差
  • 将您的位置记录到一个文件中,如果您不信任速度值,请使用两个位置之间的距离除以它们之间的秒数来计算它们,然后您会看到它们是正确的。
    并将记录的位置输入到您的测试用例,并调试您得到负值的位置。
  • 尝试更准确地写下您想要达到的目标:您如何定义“我落后 10 秒”:例如“在一辆可以以目标速度行驶的汽车后面。”
  • 想想如果你需要记录行驶的距离,那么你的应用程序可以让它比红色字母设备更好,它无法测量 距离很好。

【讨论】:

  • 感谢您的意见,您能否指出一个好的 GPS 类代码示例,我可以使用它来获取速度,以确保不是问题所在?我正在努力更改我的应用程序以模拟速度,以尝试缩小算法的问题范围。
  • 如果gps速度在2m/s以上是准确的。首先解决您的算法,然后在车辆停止并且gps直到显示1m / s时处理特殊情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
  • 2019-06-03
相关资源
最近更新 更多