0

对不起,如果这在其他地方被覆盖,但我无法具体找到这个问题。

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

为了测试它,我们使用车载计算机直接从汽车读取速度(无 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。

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

提前致谢

4

1 回答 1

0

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

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

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

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

当然不是,它不会每秒更新一次以上。只有在静止不动时,您才会遇到 GP 的问题,然后它通常不会报告 0 km/h,但这是另一回事。

结论:
GPS不是错误的来源,它是你的算法。

提示:

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