“卡尔曼滤波器和指数滤波器的优缺点是什么?我认为,卡尔曼滤波器的计算更复杂,但它具有更详细的系统模型,因此在多传感器融合中更准确(?)。”
基本上就是这样,一般来说,系统模型越好,滤波器就越好,无论您是否使用卡尔曼滤波器。
“指数滤波器在噪声消除、抖动等方面更有用,而卡尔曼滤波器对实际的多传感器融合很有用。这是正确的吗?”
我不同意这种说法。卡尔曼滤波器在噪声消除方面很聪明。它比低通滤波器要聪明得多,因为它充分利用了协方差矩阵中存储的所有信息。如果您正在查看的性能指标是“过滤后的值与真实值的匹配程度如何?” 我认为一个简单的低通滤波器可以希望做的最好的事情就是匹配它的性能,这只是在随机游走的最简单情况下。一旦你有一个有趣的状态转换矩阵,我认为低通滤波器没有机会,因为它看不到速度不确定性如何泄漏到位置不确定性中。
“我正在尝试结合磁罗盘和陀螺仪来估计真实方向。”
这正是卡尔曼滤波器的设计目的。
但是,如果您担心实现卡尔曼滤波器的复杂性,请从实现低通滤波器版本开始:
1)从一个简单的模拟开始
predictedAngle = oldAngle+rotationRate*dt
2)根据您的测量更新模拟状态
rotationRate = alpha1*rotationRate +(1-alpha1)*gyro.rotationRate
filteredAngle = alpha2*predictedAngle+(1-alpha2)*compass.angle
这基本上是该系统的卡尔曼(最简单)过滤器的框架。所缺少的是:
- 以矩阵格式写所有内容
- 在模拟步骤中添加“过程噪声”
alpha
添加一个步骤来计算“最佳卡尔曼增益”,而不是使用的固定值
- 添加一个步骤来更新过滤器的协方差。
“另外,遗传算法对传感器融合有多大用处?”
我看不出它们适合哪里。你能详细说明一下吗?