【问题标题】:algorithm/theory for GPS position jitter removalGPS位置抖动消除算法/理论
【发布时间】:2012-02-07 21:41:50
【问题描述】:

我正在尝试在 android 上编写 GPS 跟踪(类似于慢跑应用程序),而 GPS 位置抖动问题已经引起了它的丑陋。当精度为 FINE 且精度在 5 米以内时,该位置每秒抖动 1-n 米。您如何确定或过滤掉合法运动中的这种抖动?

Sporypal 等应用程序显然有某种方式可以过滤掉这种噪音。

有什么想法吗?

【问题讨论】:

    标签: java android gps


    【解决方案1】:

    你能通过低通滤波器运行这些位置吗?

    秩序井然

    x(n) = (1-K)*x(n-1) + K*S(n)
    

    在哪里

    S 是您的噪声样本,x 是低通滤波样本。 K 是一个介于 0 和 1 之间的常数,您可能需要对其进行试验以获得最佳性能。

    根据 TK 的建议:

    我的伪代码看起来非常像 C:

        float noisy_lat[128], noisy_long[128];
        float smoothed_lat[128], smoothed_lon[128];
        float lat_delay=0., lon_delay=0.;
    
        float smooth(float in[], float out[], int n, float K, float delay)
        {
           int i;
    
           for (i=0; i<n; i++) {
              *out = *in++ * K + delay * (1-K);
              delay = *out++;
           }
    
           return delay;
        }
    
    loop:    
        Get new samples of position in noisy_lat and noise_lon
    
        // LPF the noise samples to produce smoother position data
    
        lat_delay = smooth(noisy_lat, smoothed_lat, 128, K, lat_delay);
        lon_delay = smooth(noisy_lon, smoothed_lon, 128, K, lon_delay);
    
        // Rinse. Repeat.
        go to loop:
    

    简而言之,这只是一个具有单样本延迟的反馈积分器。如果您的输入在所需信号之上具有低频白噪声,则此积分器将随时间对输入信号进行平均,从而使噪声分量平均接近于零,从而为您留下所需的信号。

    它的工作效果取决于您的信号有多少噪声和滤波器反馈因子 K。正如我之前所说,您必须稍微调整一下该值,看看哪个值产生最干净、最理想的结果。

    【讨论】:

    • 你能用伪代码给出一个“例子”吗?我认为这会让 OP 更加清晰。
    • 感谢您提供详细的示例...今天将对此进行讨论,看看是否有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    • 2018-06-12
    • 2016-07-05
    • 2018-02-01
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    相关资源
    最近更新 更多