1

我在 Android 上使用 GPS,需要对位置进行速度补偿,以消除由于位置计算滞后而导致的错误。我感兴趣的速度在 5 到 10 英里/小时的范围内,因为这是一艘帆船。

这是我的代码:

        public double[] correctLocation(double pLat,double pLong,double pAngle,double pSpeed, double factor){
        double[] latLong = new double[2];
        latLong[0] = pLat + factor * pSpeed * Math.cos(pAngle * Math.PI / 180);
        latLong[1] = pLong + factor * pSpeed * Math.sin(pAngle * Math.PI / 180) / Math.cos(pLat * Math.PI / 180);
        return latLong;
    }

我在汽车上以 25 英里/小时的速度进行了一次测试,计算出该系数应该是 3E-6,但在以跑步和步行速度进行尝试时,很明显需要一个更像 6E-6 的系数。尽管我知道人们会在谷歌自动驾驶汽车中这样做,但我无法通过谷歌找到任何对此的参考。我假设其他人会进行此类更正。

有谁可以帮我离开这里吗?GPS是带有MTK芯片组的Qstarz A1000XT。这种简单的方法可能会丢失一些东西。(我假设我不需要加速,因为这是一艘重型船,加速时间常数为 1 分钟)。

4

1 回答 1

0

6E-6 是正确的。我有几个错误并且对此感到困惑一段时间。我最终以 25MPH 的速度从两个方向在一个地点行驶并对该地点进行 ping 测试。我在 GPS 读数之间进行了插值,因此时间和更新率不是一个因素。我这样做了 10 次。这给了我两个点集群,并使用图形方法调整了校正因子,直到集群重叠。另一种方法是使用最后两个读数之间的纬度和经度差(相隔 1 秒),并以秒为单位应用校正因子。就我而言,那是 1.25 秒。两种方法在聚类方面产生了相同的结果。速度校正在散射中稍微接近一点,但相差不大。

于 2012-12-12T18:26:29.800 回答