卡尔曼滤波学习笔记

一、学习链接

1、http://blog.csdn.net/heyijia0327/article/details/17487467
该博文理论推导比较明确,结合事例讲的比较清楚,一篇非常难得的好文。
2、https://segmentfault.com/a/1190000000514987
这是一篇翻译的学习资料,比较详细。

二、卡尔曼滤波

1、可以解决什么问题

(1)计算目标位置
在雷达中,人们感兴趣的是跟踪目标,但目标的位置、速度、加速度的测量值往往在任何时候都有噪声。卡尔曼滤波利用目标的动态信息,设法去掉噪声的影响,得到一个关于目标位置的好的估计。这个估计可以是对当前目标位置的估计(滤波)。
(2)鼠标轨迹点平滑
在以前做项目中,采用红外触摸屏幕采集鼠标点,在采集过程中,鼠标点会出现抖动,采用卡尔曼滤波可以解决这个问题。
其他以后再补充

2、问题描述

如果一个线性随机微分系统可以用如下公式描述:
X(k)=A X(k-1)+B U(k)+W(k)
而且系统可以观测,并且观测值与系统真实值有如下关系:
Z(k)=H X(k)+V(k)
式中:
X(k)是k时刻的系统状态;
U(k)是k时刻对系统的控制量(在小车问题中该值可以是小车自身加速度、摩擦力等);
A是系统状态转移矩阵,表示从上一状态值如何影响当前状态的矩阵,属于系统参数;
B是系统控制矩阵,表示系统控制量对系统状态的影响,属于系统参数;
Z(k)是k时刻的测量的系统状态值;
H是测量系统的参数,表示系统真实状态值对观测的值的影响。
W(k)和V(k)分别表示过程和测量的噪声。他们被假设成高斯白噪声(White Gaussian Noise),他们的协方差(covariance)分别是Q,R(这里我们假设他们不随系统状态变化而变化)。
对于满足以上条件的系统(线性随机微分系统,过程和测量都是高斯白噪声),卡尔曼滤波器是最优的信息处理器。

3、如何使用卡尔曼滤波

如果一个问题满足2中的条件(当然不满足的情况时候多,但我们假设它满足),
那么我们相当于默认知道了参数
A、B、Q、R
我们假如还知道P0,Uk,P0表示计算开始时刻的值,多数情况下指定其为0。Uk表示k时刻系统的激励,这个根据具体系统具体设置。知道了以上这些参数,我们就可以利用卡尔曼滤波的五个核心公式(如下图)开始迭代计算了。

卡尔曼滤波学习笔记_第1张图片

对于实时滤波系统,每个步骤我们计算上面五个公式,其中每个步骤中中公式4计算出的估计值就是滤波后的值。其实卡尔曼滤波就是这么简单,几个公式带来带去。卡尔曼滤波的难点在于
1、系统状态方程的建立。(系统状态方程的建立应该结合系统的实际运动方程来建立)
2、参数的设计与调节

4、如何更好的理解卡尔曼滤波

(1)为了更好的理解,建议使用一维变量作为系统状态参数,然后看看五个公式中各个变量对滤波的作用。

(2)这五个公式推导的过程自己推下。

5、例子

(1)百度百科,里面有个关于温度的matlab例子,由于其是相对于1维的变量举例的,所以可以直观的感受各个变量的作用。
http://baike.baidu.com/link?url=sVuehXSX06XNCi0SDMo93oZBsfsYSTooVK2w7tA5Ic9xtbjTyqS1wRGjJXufiBzPnIFauXTCn3BSKy3DDGIVWqHesQQeZNZtaNbD0ZBmflujlWldH_uznkv95x0impIHObYErxv-IsQuhwTfbwVnX_
(2)圆周运动跟踪的例子,看看多维变量的系统状态参数如何列方程。
http://vdisk.weibo.com/s/yUXHbZiArDQUA
(3)二维系统状态参数列的求解例子,结合小车运动,可以更加明白各个参数的意思。
http://blog.csdn.net/heyijia0327/article/details/17667341

你可能感兴趣的:(综合)