关于滤波首先援引来自知乎大神的解释:“一位专业课的教授给我们上课的时候,曾谈到:filtering is weighting(滤波即加权)。滤波的作用就是给不同的信号分量不同的权重。最简单的loss pass filter, 就是直接把低频的信号给1权重,而给高频部分0权重。对于更复杂的滤波,比如维纳滤波,则要根据信号的统计知识来设计权重。从统计信号处理的角度,降噪可以看成滤波的一种。降噪的目的在于突出信号本身而抑制噪声影响。从这个角度,降噪就是给信号一个高的权重而给噪声一个低的权重。维纳滤波就是一个典型的降噪滤波器。”关于卡尔曼滤波Kalman Filter 算法,是一种递推预测滤波算法,算法中涉及到滤波,也涉及到对下一时刻数据的预测。Kalman Filter 由一系列递归数学公式描述。它提供了一种高效可计算的方法来估计过程的状态,并使估计均方误差最小。卡尔曼滤波器应用广泛且功能强大:它可以估计信号的过去和当前状态,甚至能估计将来的状态,即使并不知道模型的确切性质。Kalman Filter 也可以被认为是一种数据融合算法(Data fusion algorithm),已有50多年的历史,是当今使用最重要和最常见的数据融合算法之一。Kalman Filter 的巨大成功归功于其小的计算需求,优雅的递归属性以及作为具有高斯误差统计的一维线性系统的最优估计器的状态。Kalman Filter 只能减小均值为0的测量噪声带来的影响。只要噪声期望为0,那么不管方差多大,只要迭代次数足够多,那效果都很好。反之,噪声期望不为0,那么估计值就还是与实际值有偏差[3]。问题描述上面的描述可能把大家绕晕了,下面来点轻松的。我们会有一个疑问:卡尔曼滤波到底是如何解决实际问题的呢?我们以机器人为例介绍卡尔曼滤波的原理,我们的任务是要预测机器人的状态,包括位置与速度,即可表示为:某个时刻,我们不知道真实的位置与速度到底是多少,二者存在一个所有可能性的组合,大致如下图所示。卡尔曼滤波假设状态所有的变量都是随机的且都服从高斯分布,每个变量都有其对应的均值以及方差(它代表了不确定性)。在上图中,位置和速度是不相关(uncorrelated)的,这意味着某个变量的状态不会告诉你其他变量的状态是怎样的。即,我们虽然知道现在的速度,但无法从现在的速度推测出现在的位置。但实际上并非如此,我们知道速度和位置是有关系的(correlated),这样一来二者之间的组合关系变成了如下图所示的情况。 这种情况是很容易发生的,例如,如果速度很快,我们可能会走得更远,所以我们的位置会更大。如果我们走得很慢,我们就不会走得太远。这种状态变量之间的关系很重要,因为它可以为我们提供更多信息:One measurement tells us something about what the others could be。这就是卡尔曼滤波器的目标,我们希望从不确定的测量中尽可能多地获取信息!这种状态量的相关性可以由协方差矩阵表示。简而言之,矩阵的每个元素是第i个状态变量和第j个状态变量之间的相关度。(显然地可以知道协方差矩阵是对称的,这意味着交换i和j都没关系)。协方差矩阵通常标记为“ ”,因此我们将它们的元素称为“”。
[1]: How a Kalman filter works, in pictures, 图解卡尔曼滤波是如何工作的: http://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/#mathybits[2]: A geometric interpretation of the covariance matrix, 协方差矩阵的几何解释: https://www.visiondummy.com/2014/04/geometric-interpretation-covariance-matrix[3]: Kalman Filter 卡尔曼滤波: https://sikasjc.github.io/2018/05/08/kalman_filter