1. 卡尔曼全名Rudolf Emil Kalman ,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。
1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位。
1957年于哥伦比亚大学获得博士学位。
我们现在要学习的卡尔曼滤波器,正是源于他的博士论文和1960年发表的论文《A New Approach to Linear Filtering and Prediction Problems 》(线性滤波与预测问题的新方法)。
基于状态空间描述对混有噪声的信号进行滤波的方法,简称卡尔曼滤波。
这种方法是R.E.卡尔曼和R.S.布什于1960和1961年提出的。
卡尔曼滤波是一种切实可行和便于应用的滤波方法,其计算过程通常需要在计算机上实现。
实现卡尔曼滤波的装置或软件称为卡尔曼滤波器。
卡尔曼滤波器(Kalman Filter )是在克服以往滤波方法局限性的基础上提出来的,是一个最优化自回归数据处理算法(optimal recursive data processing algorithm )。
它是针对系统的部分状态或是部分状态的线性组合,且量测值中有随机误差(常称为量测噪声)。
将仅与部分状态有关的测量进行处理,得出从某种统计意义上讲误差最小的更多状态的估值,从而将混有噪声(干扰)的信号中噪声滤除、提取有用信号。
卡尔曼滤波是一种递推线性最小方差估计,以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。
现设线性时变系统的离散状态方程和观测方程为:()()()()()X k+1F k X k G k u k ()w k =•++()()()()k+1H k+1X k+1k+1Y v =•+其中()k X 和()k Y 分别是k 时刻的状态矩阵和测量矩阵()k F 为状态转移矩阵()k G 为系统控制项矩阵()k u 为k 时刻对系统的控制量()k w 为k 时刻动态噪声,其协方差()Q k()k H 为k 时刻观测矩阵()k v 为k 时刻测量噪声, 其协方差()R k则卡尔曼滤波的算法流程为:状态的一步预估计()()()()()ˆˆXk+1k F k X k k G k u k |=•|+ 一步预估计协方差矩阵()()()()()C k+1k F k C k k F k Q k '|=•|+'计算卡尔曼增益矩阵()()()()()S k+1H k+1C k+1k H k+1k 1R ''=|•++()()()()1K k+1C k+1k H k+1k 1S-'=|•+状态更新方程 ()()()()ˆX k+1k+1Xk+1k+1K k+1V k+1|=|+ ()()()ˆV k+1Z k+1Zk+1k =-| ()()()ˆˆZk+1k H k 1X k+1k |=+| 计算更新后估计协方差矩阵()()()()C k+1k+1I K k+1H k+1C k+1k |=-|⎡⎤⎣⎦或是()()()()()C k+1k+1C k+1k K k+1H k+1C k+1k |=|-|离散时间线性系统卡尔曼滤波算法流程2.卡尔曼滤波器(Kalman Filter)是一个最优化自回归数据处理算法(optimal recursive data processing algorithm)。
应用在很多领域,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。
卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。
它适合于实时处理和计算机运算。
特点:从混有噪声(干扰)的信号中滤除噪声、提取有用信号是滤波的基本目的。
在卡尔曼滤波出现以前,已经建立了采用最小二乘法处理观测数据和采用维纳滤波方法处理平稳随机过程的滤波理论。
但这些滤波方法或因功能不够,或因条件要求苛刻,而不便于实用。
卡尔曼滤波是在克服以往滤波方法的局限性的基础上提出来的,是滤波方法的重大演进。
卡尔曼滤波比维纳滤波有以下优点:①在卡尔曼滤波中采用物理意义较为直观的时间域语言,而在维纳滤波中则采用物理意义较为间接的频率域语言。
②卡尔曼滤波仅需要有限时间内的观测数据,而维纳滤波则需要用过去的半无限时间内的全部观测数据。
③卡尔曼滤波可使用比较简单的递推算法,而维纳滤波则需要求解一个积分方程。
④卡尔曼滤波可以推广到非平稳随机过程的情况,而维纳滤波只适用于平稳随机过程。
⑤卡尔曼滤波所需数据存储量较小,便于用计算机进行实时处理,而维纳滤波的计算复杂,步骤冗长,不便于实时处理。
在相同条件下,卡尔曼滤波能得出与维纳滤波相同的结果。
在实用上,卡尔曼滤波比维纳滤波功能强,用途广。
卡尔曼滤波已在航天技术、通信工程、工业控制等领域中得到比较广泛的应用。
卡尔曼滤波的局限性表现在只能用于线性的信号过程,即状态方程和观测方程都是线性的随机系统,而且噪声必须服从高斯分布。
虽然不少实际问题都可满足这些限制条件,但当实际系统的非线性特性稍强或者噪声特性偏离高斯分布较大时,卡尔曼滤波就不能给出符合实际的结果。
卡尔曼滤波是一种最优估计技术。
工程中,为了了解工程对象(滤波中称为系统)的各个物理量(滤波中称为状态)的确切数值,或为了达到对工程对象进行控制的目的,必须利用测量手段对系统的各个状态进行测量。
但是,量测值可能仅是系统的部分状态或是部分状态的线性组合,且量测值中有随机误差(常称为量测噪声)。
最优估计就是针对上述问题的一种解决方法。
它能将仅与部分状态有关的测量进行处理,得出从某种统计意义上讲误差最小的更多状态的估值。
误差最小的标准常称为估计准则,根据不同的的估计准则和估计计算方法,有各种不同的最优估计,卡尔曼滤波是一种递推线性最小方差估计。
现设线性时变系统的离散状态防城和观测方程为:X(k) = F(k,k-1)·X(k-1)+T(k,k-1)·U(k-1)Y(k) = H(k)·X(k)+N(k)其中X(k)和Y(k)分别是k时刻的状态矢量和观测矢量F(k,k-1)为状态转移矩阵U(k)为k时刻动态噪声T(k,k-1)为系统控制矩阵H(k)为k时刻观测矩阵N(k)为k时刻观测噪声则卡尔曼滤波的算法流程为:预估计X(k)^= F(k,k-1)·X(k-1)计算预估计协方差矩阵C(k)^=F(k,k-1)×C(k)×F(k,k-1)'+T(k,k-1)×Q(k)×T(k,k-1)'Q(k) = U(k)×U(k)'计算卡尔曼增益矩阵K(k) = C(k)^×H(k)'×[H(k)×C(k)^×H(k)'+R(k)]^(-1)R(k) = N(k)×N(k)'更新估计X(k)~=X(k)^+K(k)×[Y(k)-H(k)×X(k)^]计算更新后估计协防差矩阵C(k)~ = [I-K(k)×H(k)]×C(k)^×[I-K(k)×H(k)]'+K(k)×R(k)×K(k)'X(k+1) = X(k)~C(k+1) = C(k)~重复以上步骤3.卡尔曼滤波的应用斯坦利.施密特(Stanley Schmidt)首次实现了卡尔曼滤波器.卡尔曼在NASA埃姆斯研究中心访问时,发现他的方法对于解决阿波罗计划的轨道预测很有用,后来阿波罗飞船的导航电脑使用了这种滤波器. 关于这种滤波器的论文由Swerling (1958), Kalman (1960)与 Kalman and Bucy (1961)发表.目前,卡尔曼滤波已经有很多不同的实现.卡尔曼最初提出的形式现在一般称为简单卡尔曼滤波器.除此以外,还有施密特扩展滤波器,信息滤波器以及很多Bierman, Thornton 开发的平方根滤波器的变种.也行最常见的卡尔曼滤波器是锁相环,它在收音机,计算机和几乎任何视频或通讯设备中广泛存在.卡尔曼滤波的一个典型实例是从一组有限的,对物体位置的,包含噪声的观察序列预测出物体的坐标位置及速度. 在很多工程应用(雷达, 计算机视觉)中都可以找到它的身影. 同时,卡尔曼滤波也是控制理论以及控制系统工程中的一个重要话题.比如,在雷达中,人们感兴趣的是跟踪目标,但目标的位置,速度,加速度的测量值往往在任何时候都有噪声.卡尔曼滤波利用目标的动态信息,设法去掉噪声的影响,得到一个关于目标位置的好的估计。
这个估计可以是对当前目标位置的估计(滤波),也可以是对于将来位置的估计(预测),也可以是对过去位置的估计(插值或平滑).实例分析为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。
但是,他的5条公式是其核心内容。
结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那5条公式。
在介绍他的5条公式之前,先让我们来根据下面的例子一步一步的探索。
假设我们要研究的对象是一个房间的温度。
根据你的经验判断,这个房间的温度是恒定的,也就是下一分钟的温度等于现在这一分钟的温度(假设我们用一分钟来做时间单位)。
假设你对你的经验不是100%的相信,可能会有上下偏差几度。
我们把这些偏差看成是高斯白噪声(White Gaussian Noise),也就是这些偏差跟前后时间是没有关系的而且符合高斯分配(Gaussian Distribution)。
另外,我们在房间里放一个温度计,但是这个温度计也不准确的,测量值会比实际值偏差。
我们也把这些偏差看成是高斯白噪声。
好了,现在对于某一分钟我们有两个有关于该房间的温度值:你根据经验的预测值(系统的预测值)和温度计的值(测量值)。
下面我们要用这两个值结合他们各自的噪声来估算出房间的实际温度值。
假如我们要估算k时刻的是实际温度值。
首先你要根据k-1时刻的温度值,来预测k时刻的温度。
因为你相信温度是恒定的,所以你会得到k时刻的温度预测值是跟k-1时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度(5是这样得到的:如果k-1时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平方相加再开方,就是5)。
然后,你从温度计那里得到了k时刻的温度值,假设是25度,同时该值的偏差是4度。