卡尔曼滤波的应用
简介
对于卡尔曼滤波,我相信很多机器人相关专业的同学都不陌生,网上搜索下关键词相关的资料也很多,但是大部分都是给你介绍相关的公式推导,对于数学基础好点的同学来说看了遍之后会觉得好像是那么回事,但是回头一想会觉得这东西怎么用啊,如何把它的效果在实际工程应用中发挥出来啊,如果做不到这一点那么对于你来说卡尔曼滤波还是遥不可及的梦。其实我觉得卡尔曼滤波这个名字是具有迷惑性的,以至于我们会把他归类于低通滤波,高通滤波这类的滤波器当中,在学习了相关理论后你会发现卡尔曼滤波并不是一般的滤波器而是一种“”“预测”,根据当前时刻的测量值和上一时刻的估计值预测当前时刻的最优值,所以这里我们就可以看出来卡尔曼滤波不是简单地滤除某些高频或者低频噪声而是对真实值的预测。
卡尔曼滤波算法
1960年,Kalman首次提出卡尔曼滤波,卡尔曼滤波刚一提出人们就发现了其在军事上的巨大应用前景,阿波罗登月、飞机导弹的导航系统成功应用就是最好的例证。,卡尔曼滤波器是时域内直接设计的最优滤波器,1961 年卡尔曼有将这一滤波理论推广到连续时间系统中,也就形成了卡尔曼滤波的完整体系,对于系统噪声是高斯分布的线性系统可以递推出最小均方差估计。
从本质上来讲卡尔曼滤波其实就是反馈控制,其实现的思路如下图所示。滤波器估计过程中某一个时刻的状态,利用量测更新的值作为反馈。所以卡尔曼滤波过程又可以分为状态跟新和测量更新两个部分来实现。状更新中主要是为了获得下个时刻的先验估计,量测更新则是为了通过先验估计和量测值获取后验估计。这就是卡尔曼思想中采用的迭代方式。具体的过程如下
状态一步预测:
x ^ k ∣ k − 1 = Φ k ∣ k − 1 x ^ k − 1 \hat{x}_{k | k-1}=\Phi_{k | k-1} \hat{x}_{k-1} x^k∣k−1=Φk∣k−1x^k−1
状态估计:
x ^ k = x ^ k ∣ k − 1 + K k ( z k − H k x ^ k ∣ k − 1 ) \hat{x}_{k}=\hat{x}_{k| k-1}+K_{k}\left(z_{k}-H_{k} \hat{x}_{k| k-1}\right) x^k=x^k∣k−1+Kk(zk