背景:

我正在实现一个简单的卡尔曼滤波器,用于估计机器人的前进方向。该机器人配有指南针和陀螺仪。

我的理解:

我正在考虑将状态表示为2D向量$(x,\ dot {x} )$,其中$ x $是当前航向,而$ \ dot {x} $是陀螺仪报告的旋转速率。

问题:


如果我的理解是正确的,则过滤器中将没有控制项$ u $。是真的吗如果我将状态作为一维向量$(x)$怎么办?然后,我的$ \ dot {x} $成为控制项$ u $了吗?这两种方法会产生不同的结果吗?
我们知道,当指南针处于扭曲磁场中时,主要噪声源来自指南针。在这里,我想高斯噪声不太明显。但是磁畸变是完全不可预测的。我们如何在卡尔曼滤波器中对其建模?
在卡尔曼滤波器中,是否有必要假设“所有噪声都是白色的”?说,如果我的噪声分布实际上是拉普拉斯分布,是否仍可以使用卡尔曼滤波器?还是我必须切换到其他滤波器,例如扩展卡尔曼滤波器?


#1 楼


我将其建模为单态系统(x),并以陀螺仪作为控制输入。陀螺仪噪声变为状态输入噪声,指南针噪声变为测量噪声。因此,您的系统模型变为$$ \ hat {\ dot \ theta} = \ omega_ {gyro} + w $$ $$ \ hat y = \ hat x $$其中$ \ hat y $是过滤器的方向估计,其中您可以将其与罗盘方向进行比较以获取Kalman更新。
磁畸变将非常困难,因为如果您坐在任何一个地方,磁畸变都会显示为常数偏移项-卡尔曼滤波器不会这个井。我敢肯定,您将需要绘制失真,获取第二个绝对方向参考或仅接受失真。
您正在使频谱内容与概率分布混淆。如果噪声为白色,则每个样本完全独立于其他任何样本。如果噪声是拉普拉斯噪声,则每个样本都服从拉普拉斯分布。卡尔曼滤波器不喜欢有色噪声(但是您可以通过添加状态来处理)。当噪声为高斯分布且代价函数为平方和时,卡尔曼滤波器只是整体最优滤波器。对于任何其他噪声和成本函数,最佳滤波器可能是非线性的。但是对于任何零均值,白噪声和平方和成本函数,卡尔曼滤波器是找到的最佳线性滤波器。

(请注意,我给出的系统模型最终以非常简单的卡尔曼滤波器-如果找不到其他估算罗盘偏移的方法,最好使用互补滤波器将这两个传感器输入组合起来,这样做可能会更好。无论如何进行过滤,很有可能您将对常量有足够的猜测,您也可以在互补过滤器中对交叉点进行猜测并加以处理)。

(也请注意,如果您有一些绝对位置参考,并且有一些方法可以估算速度,并且车辆始终朝着您指向的方向行驶,则可以通过使用以下方法非常有利地使用扩展的卡尔曼滤波器来校正罗盘失真它实际上会移动以校正罗盘方向的方向。)

丹·西蒙(Dan Simon)(Wiley,2006年)的最佳状态估计,在我看来,是对卡尔曼问题的非常丰富而清晰的论述过滤及其更复杂的兄弟(H无穷大,扩展卡尔曼,无味卡尔曼,甚至在贝叶斯和粒子过滤方面也有一点)。它不会告诉您如何将其应用于此类导航问题,但是,如果所有问题都得到解决,那么生活中的乐趣会在哪里?如果您不能遵循Simon书中的数学方法,那么您可能应该问自己,是否能够以任何一种智能方式应用卡尔曼滤波器。

评论


$ \ begingroup $
+1对于这种应用的互补滤波器似乎更合适。丹·西蒙的书也很好。本文是对卡尔曼滤波器的很好的介绍(同一作者)masys.url.tw/AU/2013SP/OpenCV/0513/kalman-dan-simon.pdf
$ \ endgroup $
– ddevaz
13年8月20日在19:14



$ \ begingroup $
@ddevaz是的,实际上,我现在正在实现一个补充过滤器。但是问题是它不能产生很好的结果。因此,我正在考虑切换到另一个“更复杂的”过滤器...
$ \ endgroup $
– Sibbs赌博
13年8月21日在1:40

$ \ begingroup $
我明白了。我已经编辑了答案,以包括一些有关使用陀螺仪,加速度计和磁力计进行卡尔曼滤波器实现的参考资料。
$ \ endgroup $
– ddevaz
13年8月21日在15:51

#2 楼


将没有控制输入项。您应该以(x,xdot)作为状态向量来正确地构造卡尔曼滤波器。
主要的噪声源是指南针和陀螺仪。陀螺仪的噪声和漂移很大。一般而言,克服磁失真是非常具有挑战性的,但是有补偿技术。
假设零均值多元正态分布噪声是必要的,但是白噪声只是这种情况的特例。对于扩展的卡尔曼滤波器,该假设仍然需要成立。您可以研究其他类型的过滤器(粒子过滤器,无味的Kalman过滤器)。惯性/磁性传感器

评论


$ \ begingroup $
因此,我不能离开KF来应对不可预测的磁畸变吗?我应该先丢弃失真值,然后再离开KF来处理传感器噪声。对?
$ \ endgroup $
– Sibbs赌博
13年8月21日在1:44

$ \ begingroup $
是的。卡尔曼滤波器将无法准确补偿磁畸变,因为变化可能很大。我会先尝试实现一些磁补偿,然后再实现卡尔曼滤波器。
$ \ endgroup $
– ddevaz
13年8月21日在15:45