【问题标题】:Implementing Kalman Filter with latitude and longitude用经纬度实现卡尔曼滤波器
【发布时间】:2014-08-02 16:05:40
【问题描述】:

我来自非数学背景,在我的 Java 应用程序中实现卡尔曼滤波器时需要一些帮助。 基本上,我从地图上特定实体的各种传感器获取输入。输入是纬度和经度的位置及其准确性。 现在,根据我收到的针对同一实体的多个输入,我需要预测实体在地图上的准确位置。请注意,我不必连续跟踪它。

如何向卡尔曼滤波器提供 lat、long 和准确度的输入,以便我得到一个融合的预测值作为输出,从中可以获得 lat&long 以在地图上绘制相同的结果?

【问题讨论】:

    标签: java filtering kalman-filter


    【解决方案1】:

    由于您没有提供有关该问题的太多信息,我将提出一个只有纬度/经度/准确度的简单解决方案:

    我首先将卡尔曼滤波器动力学定义为具有随机噪声的速度的随机游走

    x = [rx, ry, vx, vy],
    

    其中 x 是卡尔曼滤波器的状态。现在模型的预测部分变成了

    x_{k+1} = A*x_k + Q,
    

    在哪里

    A = [1, 0, dt, 0;0, 1, 0, dt;0, 0, 1, 0;0, 0, 0, 1]
    

    和Q可以在Applied Stochastic Differential Equations的第56页找到

    为了应用对 lat/lon/accuracy 的观察,我首先将 WGS84 坐标转换为本地 ENU coordinates(公制)。这使系统更健壮且更易于解释。

    更新变成了

    y = H*x + R,
    

    其中 y 是位置 [rx, ry] 的观测值,

    H = [1,0,0,0;0,1,0,0]
    

    并且您在观察噪声中使用您的准确性:

    R = diag([accuracyx, accuracy]),
    

    现在准确度是位置的方差。

    这是执行此类 2D 跟踪的标准方法。由于您只使用 lat/lon/accuracy,因此结果可能不像您想要的那样准确。

    现在您可以应用上述系统来生成卡尔曼预测和更新方法

    【讨论】:

    • 我在你链接到的书的 p56 上没有看到 Q 的定义。我错过了什么吗?
    猜你喜欢
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    相关资源
    最近更新 更多