点击上方
“
小白学视觉
”,选择加"
星标
"或“
置顶
”
重磅干货,第一时间送达![](http://mmbiz.qpic.cn/mmbiz_jpg/ow6przZuPIENb0m5iawutIf90N2Ub3dcPuP2KXHJvaR1Fv2FnicTuOy3KcHuIEJbd9lUyOibeXqW8tEhoJGL98qOw/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp)
作者 | Mockingjay 编辑 | 汽车人
原文链接:https://zhuanlan.zhihu.com/p/134595781
本文只做学术分享,如有侵权,联系删文
概述
总的来说,卡尔曼滤波器是一个状态估计器,它利用
传感器融合
、
信息融合
来提高系统的精度。通常,我们要观测一个系统的状态,有两种手段。一种是通过系统的
状态转移方程
,并结合上一时刻的状态推得下一时刻的状态。一种是借助
辅助系统(量测系统)
的测量得到系统状态。这两种方式都有各自的不确定性,卡尔曼滤波可以将这两者做到最优结合(加权平均),使得我们估计的状态的不确定性小于其中任何一种。所以权重的选择至关重要,它意味着我们更信任哪一种方式得出的状态(当然是更加信任
不确定性较小
的状态)。
建模
比如,我们观测一辆小车的
速度
和
位置
(所以我们要观察的状态就是速度 v 和位置 p ,即状态 x=(v,p) ,这里的 p,v 都是
向量
),当我们有了 k-1 时刻的状态
=(
,
) 后,那么如果速度不变,我们就可以得到下一时刻的状态
=(
,
) ,其中
当然,我们也可以对小车进行控制,比如让小车加速、拐弯等等,这些都可以用一个加速度来表示:
,这样,下一时刻状态
=(
,
) 的表示变为:
其中:
但是,现实的情况并没有那么理想,小车可能会受到外界的各种扰动,比如,轮胎打滑,地面崎岖等等,都会使得状态转移的过程中
混入噪音干扰(过程噪声)
,而且这个噪音往往是不可被测量的,也就是说,没办法通过建模消除噪音项。不过,往往我们可以认为这个噪音是服从零均值的高斯分布的。那么(1)式重写为
上面的状态转移方程为我们提供了观察系统状态的一种方式,同时,我们可能有一些辅助系统,比如对于这个小车,我们可以用GPS作为得到其状态的另一种方式。
那样的话,GPS每一时刻都可以提供一次当前状态的观测值
,它与真实状态
的关系为,
=
+
(3)
其中的
是观测模型,它把系统
真实状态空间
映射成
观测空间
,
是噪声项,称为
观测噪声
——因为任何的测量系统都是有误差的,所以观测值实际上是真实值与噪声的叠加。我们同样可以认为此噪声是服从0均值的高斯分布的。即
现在我们比较这两种方式得到的系统状态,容易想到,状态转移方程得到的系统状态在演变时会非常平滑,而它的不确定度会随着迭代的进行而逐渐增大,因为误差会在一次次迭代的过程中不断累积(具体反映为估计状态的方差越来越大)。相反,由量测系统得到的状态不存在累积误差,但演变时也会很不平滑。这时我们就需要将两者得到的状态有效结合起来。这就是卡尔曼滤波做的事情了。
卡尔曼滤波
然后我们要算出测量残差:
第一项为0,因为