前言
卡尔曼滤波器对于不熟悉的人来说就是一种算法,它使用随时间观察的一系列观量值,,加速度计和陀螺仪在测量值是就会包含测量误差的噪声.卡尔曼滤波器将尝试根据当前和以前的状态来估计系统的状态,这往往比测量更加的精准.问题在于机器人来回的移动,加速度计在用于测量重力加速度时通常噪声会很大.陀螺仪则会随着时间的推移而漂移.
工作原理
卡尔曼滤波器的工作原理根据测量值生成系统统计的最优估计值.为此,它需要知道滤波器输入的噪声(测量噪声)以及系统本身的噪声(过程噪声).为此,噪声必须是高斯分布的,并且平均值是0,巧的是大部分都是这样.
系统状态
当矩阵是常数并且不依赖于当前时间时,你不必在它们后面写k.因此,例可以简化为F 。
我对符号的进行一个简短解释:
1,首先,我记录所谓的previous state(之前状态):
这是先前状态和之前状态的估计值得出的先前估计状态.
2,先验状态:
先验是指基于系统前一状态和之前状态的估计值,对当前时间K的状态矩阵的估计值.
3,后验状态:
后验是指基于定截至时间并包括k的观测值在时间K的状态的估计值.
问题是系统状态本身是隐藏的,只能通过观察来观察.这也称作为隐马尔可夫模型(HMM).(隐马尔可夫模型:简单来说就是Y这个结果值你能观察到,但是里面的观测值你无法直接观察.HMM有一个额外的要求就是Y在
必须完全受X在
,以及X和Y在
时必须完全独立于Y在
鉴于X在
.可以使用最大似然法,估计HMM中的参数,对于线性链HMM,可以使用Baum-Welch算法(它是一个期望最大化算法的特例)
Baum-Welch算法的示例:
假设我们有一只鸡,我们每天中午都会从中收集鸡蛋。现在鸡是否下蛋收集取决于一些隐藏的未知因素。然而,我们可以(为简单起见)假设鸡总是处于影响鸡是否下蛋的两种状态之一,并且这种状态仅取决于前一天的状态。现在我们不知道初始起点的状态,我们不知道两种状态之间的转换概率,我们不知道鸡在给定特定状态下蛋的概率。首先,我们首先猜测过渡矩阵和排放(发射)矩阵。
然后,我们进行一组观察(E = 鸡蛋,N = 无鸡蛋):N、N、N、N、N、E、E、N、N、N
这为我们提供了一组观察到的日期之间的转换:NN、NN、NN、NN、NE、EE、EN、NN、NN
下一步是估计新的转换矩阵。例如,序列 NN 的概率和状态为然后
由以下给出,P(S1)⋅P(N|S1)⋅P(S1→S2)⋅P(N|S2).
因此,对S1自S2现在是 (在下表中称为“伪概率”)。然后,我们计算自S1,S2自S和S1自S1transition probabilities 并标准化,以便它们加到 1。这为我们提供了更新的过渡矩阵:
接下来,我们要估计一个新的发射矩阵:
排出(发射)矩阵的新估计来自S现在