因此,我正在尝试学习如何使用卡尔曼滤波器在小型机器人中实现它们。该视频和以下网页是我了解这些过滤器的非常好的来源:
YouTube:卡尔曼滤波器教程
http://bilgin.esme.org/BitsBytes/KalmanFilterforDummies.aspx
我们以一个简单的一维案例为例,其中我有一个传感器平台,两侧各有 1 个距离传感器,我们可以说 L 是左侧传感器,R 是右侧传感器。机器人被束缚在一个 100 单位长的盒子里,每个传感器的范围只有 10 单位,我们认为任何大于 ~7.5 的值都是无效的。
当X <= 95, then reverse while X >= 5时平台会向前移动,我想使用滤波器来估计X,并在靠近墙壁时使用从L/R传入的数据来校正X。我的争论点如下:
在视频中15:50,弗朗西斯·戈弗斯 (Francis Govers) 表示,如果您丢失了传感器,那么误差将达到无穷大,您将能够看出您的传感器没有提供良好的数据。然而,当我实现网页上呈现的一维情况时,即使我向其提供变化很大的数据,误差也会继续减少。为什么?误差不是应该增大吗?
关于 1,当误差太高或者我知道传感器给出无效数据时我该怎么办?我是否只是不将传感器包含在校正步骤中,除非有其他情况?
如果以前有人问过这些问题,我很抱歉,我通常非常擅长自己寻找答案,但这些问题似乎有点晦涩(或更可能答案很明显),但我似乎找不到我自己。
P = FPF' + Q
)但从未通过测量减少P
,那么P
只能增加。 但总的来说,我会警告您不要将协方差矩阵 P
视为过滤器的 output。 您会注意到它不受您的测量结果(除了缺乏测量结果之外)或您的状态的影响。 它只会受到重复应用您自己的过程和测量噪声估计(Q
和R
)的影响,因此,如果您错了(例如,正如您尝试的那样,使用相同的R
放入垃圾测量值),您仍然会得到同样的P
。E(v) = 0
,即期望值。 如果您的传感器读数“大约 5”或 5 + v
,其中 v
是一个具有 零平均值 的随机变量,那么对您的传感器读数进行平均将得到非常接近 5 的结果。这就是您的传感器在处于范围。 v
的大小是您在 R
中估计的值,因此过滤器知道需要多少平均。 如果您的传感器“超出范围”,那么您最好不要将其包含在测量中。 当传感器读数超出范围时,该值不是“大约 10”,而是“可能至少 10,甚至更多”,并且您的噪声存在偏差。