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

Ime*_*lza 5 sensor filter exponential genetic-algorithm kalman-filter

我想知道卡尔曼滤波器指数滤波器有哪些优点和缺点?我有一个多传感器融合问题,我正在尝试决定选择哪种方法.

我认为,卡尔曼滤波器在计算上更复杂,但它具有系统的更详细的模型,从而更准确的(?)在多传感器融合.

而指数滤波器是一个简单的等式,但它是由阿尔法的选择(过滤器的较高级α-=>少"记忆",从而较小的平滑的,但多个权重对测量的,而较低的α具有更高程度的平滑化,但突然的变化的限制没有正确反映.

当存在抖动等时,指数滤波器在噪声消除中更有用,而卡尔曼滤波器对于实际的多传感器融合是有用的.它是否正确?

此外,遗传算法对传感器融合有多大用处?我正在尝试将磁罗盘和陀螺仪结合起来估算真实的方向.

谢谢!

mda*_*ust 5

“卡尔曼滤波器和指数滤波器的优缺点是什么?我认为,卡尔曼滤波器在计算上更加复杂,但是它具有系统的更详细模型,因此在多传感器融合中更加准确。”

基本上就是这样,通常,无论您是否使用卡尔曼滤波器,系统的模型越好,滤波器的性能就会越好。

“指数滤波器在出现抖动等情况下在噪声消除中更有用,而卡尔曼滤波器对于实际的多传感器融合则很有用。这是正确的吗?”

我不同意这个说法。卡尔曼滤波器在消除噪声方面很聪明。它比低通滤波器要聪明得多,因为它可以充分利用协方差矩阵中存储的所有信息。如果您要查看的性能指标是“过滤后的值与真实值有多接近?” 我认为,简单的低通滤波器可以做到的最好的是匹配它的性能,这只是在最简单的随机游动情况下。一旦有了一个有趣的状态转换矩阵,我认为低通滤波器就没有机会了,因为它看不到速度不确定性如何泄漏到位置不确定性中。

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

这恰恰是卡尔曼滤波器设计的目的。

但是,如果您担心实现卡尔曼滤波器的复杂性,请从实现低通滤波器版本开始:

1)从简单的模拟开始

    predictedAngle = oldAngle+rotationRate*dt
Run Code Online (Sandbox Code Playgroud)

2)根据您的测量结果更新仿真状态

    rotationRate  = alpha1*rotationRate  +(1-alpha1)*gyro.rotationRate
    filteredAngle = alpha2*predictedAngle+(1-alpha2)*compass.angle
Run Code Online (Sandbox Code Playgroud)

这基本上是该系统的kalman(最简单)过滤器的框架。所缺少的只是:

  • 以矩阵格式编写所有内容
  • 在仿真步骤中添加“过程噪声”
  • 步骤添加到计算“最佳卡尔曼增益”,而不是使用固定值的alpha
  • 添加一个步骤来更新过滤器的协方差

“而且,遗传算法对传感器融合有多大用处?”

我看不到它们适合的位置。您能详细说明一下吗?