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

发布于 2024-10-05 20:39:31 字数 368 浏览 3 评论 0原文

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

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

而指数滤波器是一个简单的方程,但它受到 alpha 选择的限制(较高的 alpha => 滤波器的“记忆”较少,因此平滑程度较低,但对测量的权重较大,而较低的 alpha 具有较高的平滑程度,但突然 另外

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

,遗传算法对传感器有多有用 。融合?我正在尝试结合磁罗盘和陀螺仪来估计真实方向。

I was wondering, what are the advantages and disadvantages of Kalman Filter and Exponential Filter? I have a multi-sensor fusion problem and I'm trying to decide which method to choose.

I think, Kalman filter is more computationally complicated but it has a more detailed model of the system so it is more accurate(?) in multi-sensor fusion.

Whereas the Exponential filter is a simple equation but it is limited by the choice of alpha (Higher alpha => less "memory" of the filter and thus lesser smoothing, but more weightage on measurements whereas lower alpha has higher degree of smoothing but sudden changes are not reflected properly.

The Exponential filter is more useful in noise cancellation, when there is jitter etc. whereas the Kalman filter is useful for the actual multi-sensor fusion. Is this correct?

Also, how useful is the Genetic Algorithm for sensor fusion? I am trying to combine a magnetic compass and gyroscope for estimating true orientation.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

海之角 2024-10-12 20:39:31

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

基本上就是这样,一般来说,系统的模型越好,越好无论您是否使用卡尔曼滤波器,您的滤波器都会如此。

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

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

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

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

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

1)从简单的模拟开始

    predictedAngle = oldAngle+rotationRate*dt

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

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

这基本上是卡尔曼的框架(最简单)用于该系统的过滤器。
所缺少的是:

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

“此外,遗传算法对于传感器融合有多有用?”

我不知道它们适合哪里。你能详细说明一下吗?

"what are the advantages and disadvantages of Kalman Filter and Exponential Filter?
I think, Kalman filter is more computationally complicated but it has a more detailed model of the system so it is more accurate(?) in multi-sensor fusion."

That's basically it, in general the better your model the system is, the better your filter will be, regardless of whether you're using a Kalman filter.

"The Exponential filter is more useful in noise cancellation, when there is jitter etc. whereas the Kalman filter is useful for the actual multi-sensor fusion. Is this correct?"

I would disagree with this statement. The Kalman filter is being smart about the noise cancellation. It's a lot smarter than a low pass filter can be because it takes full advantage of all the information stored in the covariance matrix. If the performance measure you're looking at is "How closely does the filtered value match the true value?" I think the best a simple low pass filter can hope to do is match it's performance, and that is only in the simplest case of a random walk . As soon as you have an interesting state-transition matrix I think the low pass filter has no chance, because it can't see how velocity uncertainty leaks into position uncertainty, for example.

"I am trying to combine a magnetic compass and gyroscope for estimating true orientation."

This is exactly the sort of thing a Kalman filter is designed for.

But if you're worried about the complexity of implementing a kalman filter, start by implementing the low pass filter version:

1) Start with a simple simulation

    predictedAngle = oldAngle+rotationRate*dt

2) Update the simulation state based on your measurements

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

That is basically the framework for the kalman (simplest) filter for this system.
All that's missing is to:

  • Write everything in matrix format
  • Add "process noise" during the simulation step
  • Add a step to Calculate the "optimal kalman gains" instead of using fixed values for the alpha's
  • Add a step to update the filter's covariance.

"Also, how useful is the Genetic Algorithm for sensor fusion?"

I don't see where they would fit in. Can you elaborate?

掌心的温暖 2024-10-12 20:39:31

指数滤波器是卡尔曼滤波器的一种特殊情况,它限制了对

  1. 具有微不足道(恒定)动态的系统的考虑,以及
  2. 对象与(对象+测量)噪声的固定比率(这就是确定 alpha 参数的因素)。

因此,在适用这些假设的情况下,它们是等效的。在其他情况下,您可以使用卡尔曼滤波器获得更好的结果(如果您对系统进行适当的建模)。

另一个主要决定是是否将速度包含在状态空间中;如果您这样做,那么卡尔曼滤波器就是您的最佳选择。

The exponential filter is a special case of the Kalman filter that restricts consideration to

  1. Systems with trivial (constant) dynamics, and
  2. a fixed ratio of plant to (plant+measurement) noise (this is what determines the alpha parameter).

Thus, in cases where these assumptions apply, they are equivalent. In other cases, you can achieve better results using the Kalman filter (if you appropriately model the system).

The other main decision is whether you include the velocity in the state space; if you do, then the Kalman filter is the way to go.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文