gps速度补偿位置

时间:2012-10-25 06:09:36

标签: android gps

我正在使用带有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的因子。虽然我知道人们会在Google自动驾驶汽车中执行此操作,但我找不到通过Google提及的任何内容。我假设其他人做了这些修正。

任何人都可以帮助我吗? GPS是带有MTK芯片组的Qstarz A1000XT。这种简单化的方法可能会让我感到遗憾。 (我假设我不需要加速,因为这是一艘加速时间常数为1分钟的重型船)。

1 个答案:

答案 0 :(得分:0)

6E-6是正确的。我有几个错误,并且在这方面感到困惑了一段时间。我最后在25MPH的两个方向的一个地方旅行并且在现场进行测试。我在GPS读数之间插值,以便时间和更新率不是一个因素。我这样做了10次。这给了我两个点集,并使用图形方法我调整校正因子,直到集群重叠。另一种方法是使用最后两个读数之间的纬度和经度差,它们相隔1秒,并以秒为单位应用校正因子。在我的情况下,这是1.25秒。两种方法在聚类方面产生相同的结果。速度校正在散射中稍微靠近但不是很多。 GPS的速度是从载波上测量的,而不是从位置差异得出的,而且更准确。