卡尔曼滤波器 vs 指数滤波器

6
我想知道卡尔曼滤波和指数滤波的优缺点,我有一个多传感器融合问题,我想决定选择哪种方法。
我认为,卡尔曼滤波更加复杂,但它对系统有更详细的模型,因此在多传感器融合中更准确(?)
而指数滤波是一个简单的方程,但它受阿尔法的选择限制(较高的阿尔法 => 滤波器的“记忆”较少,因此平滑度较低,但对测量的权重更大;而较低的阿尔法具有更高的平滑度,但突然变化不能得到很好的反映)。
当存在抖动等噪声时,指数滤波更有用,而卡尔曼滤波则适用于实际的多传感器融合。这个说法正确吗?
此外,遗传算法在传感器融合中有多大作用?我正在尝试将磁罗盘和陀螺仪结合起来估计真实方向。

这个问题可能更适合于stats.stackexchange.com。 - Jonas
2个回答

6
“Kalman滤波器和指数滤波器的优缺点是什么?我认为,Kalman滤波器的计算更加复杂,但它对系统有一个更详细的模型,所以在多传感器融合中更准确。总的来说,无论你使用什么滤波器,模型越好,系统就越好。”
“指数滤波器在噪声消除、抖动等方面更有用,而Kalman滤波器在实际的多传感器融合中很有用。这正确吗?”
我不同意这个说法。卡尔曼滤波器在消除噪声方面非常聪明。它比低通滤波器更加智能,因为它充分利用了协方差矩阵中存储的所有信息。如果您关注的性能指标是“过滤后的值与真实值的匹配程度有多高?”,我认为简单的低通滤波器所能做到的最好就是达到其性能水平,而且这仅适用于随机游走的最简单情况。一旦您有了一个有趣的状态转移矩阵,我认为低通滤波器就没有机会了,因为它看不到速度不确定性如何渗入位置不确定性,例如。

“我正在尝试结合磁罗盘和陀螺仪来估计真实方向。”

这正是卡尔曼滤波器设计的目的。
但是,如果您担心实现卡尔曼滤波器的复杂性,请先实现低通滤波器版本:
1)从简单的模拟开始。
    predictedAngle = oldAngle+rotationRate*dt

2) 根据您的测量更新模拟状态

    rotationRate  = alpha1*rotationRate  +(1-alpha1)*gyro.rotationRate
    filteredAngle = alpha2*predictedAngle+(1-alpha2)*compass.angle

那基本上是该系统中卡尔曼(最简单)滤波器的框架。唯一缺少的是:
  • 用矩阵格式编写所有内容
  • 在模拟步骤中添加“过程噪声”
  • 添加一步来计算“最佳卡尔曼增益”,而不是使用alpha的固定值
  • 添加一步更新滤波器的协方差

“另外,遗传算法在传感器融合中有多大用处?”

我不知道它们在哪里适用。你能详细说明吗?


2
指数滤波器是卡尔曼滤波器的一种特殊情况, 它只考虑以下两点:
1. 系统具有平凡(恒定)动力学; 2. 植物噪声与(植物+测量)噪声之比固定(这就确定了alpha参数).
因此,在适用这些假设的情况下,它们是等效的。在其他情况下,如果你适当地建模系统,可以使用卡尔曼滤波器来获得更好的结果。
另一个主要决策是是否将速度包括在状态空间中; 如果包括,则应使用卡尔曼滤波器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接