我想知道,卡尔曼滤波器和指数滤波器有哪些优点和缺点?我有一个多传感器融合问题,我正在尝试决定选择哪种方法。
我认为,卡尔曼滤波器在计算上更复杂,但它具有更详细的系统模型,因此在多传感器融合中更准确(?)。
虽然指数滤波器是一个简单的方程,但它受到α的选择的限制(滤波器的高α=>更少的“记忆”,因此平滑度更小,但测量的权重更大,而低α的更高程度平滑但突然的变化没有得到恰当的反映。
当存在抖动等时,指数滤波器在噪声消除中更有用,而卡尔曼滤波器对于实际的多传感器融合非常有用。这是对的吗?
此外,遗传算法对传感器融合有多大用处?我正在尝试将磁罗盘和陀螺仪结合起来估算真实的方向。
谢谢!
答案 0 :(得分:4)
“卡尔曼滤波器和指数滤波器有哪些优点和缺点? 我认为,卡尔曼滤波器在计算上更复杂,但它具有更详细的系统模型,因此在多传感器融合中更准确(?)。“
基本上就是这样,一般来说,无论你是否使用卡尔曼滤波器,系统的模型越好,滤波器就越好。
“当存在抖动等时,指数滤波器在噪声消除中更有用,而卡尔曼滤波器对于实际的多传感器融合非常有用。这是正确的吗?”
我不同意这个说法。卡尔曼滤波器对噪声消除非常聪明。它比低通滤波器更智能,因为它充分利用了协方差矩阵中存储的所有信息。如果您正在查看的绩效指标是“过滤后的价值与真实价值的匹配程度有多接近?”我认为最好的简单低通滤波器可以做的就是匹配它的性能,而这只是random walk的最简单的情况。一旦你有一个有趣的状态转移矩阵,我认为低通滤波器没有机会,因为它无法看到速度不确定性如何泄漏到位置不确定性中,例如。
“我正在尝试将磁罗盘和陀螺仪结合起来估算真实方向。”
这正是卡尔曼滤波器的设计目的。
但如果你担心实现卡尔曼滤波器的复杂性,首先要实现低通滤波器版本:
1)从简单的模拟开始
predictedAngle = oldAngle+rotationRate*dt
2)根据您的测量值更新模拟状态
rotationRate = alpha1*rotationRate +(1-alpha1)*gyro.rotationRate
filteredAngle = alpha2*predictedAngle+(1-alpha2)*compass.angle
这基本上是该系统的kalman(最简单)过滤器的框架。 所有缺少的是:
alpha
的固定值“另外,遗传算法对传感器融合有多大用处?”
我看不出他们适合的位置。你能详细说明吗?
答案 1 :(得分:0)
指数滤波器是卡尔曼滤波器的一种特殊情况,它将考虑限制在
因此,在这些假设适用的情况下,它们是等价的。在其他情况下,您可以使用卡尔曼滤波器获得更好的结果(如果您对系统进行了适当的建模)。
另一个主要决定是你是否在状态空间中包含速度;如果你这样做,那么卡尔曼滤波器就是你要走的路。