卡尔曼滤波
卡尔曼滤波算法介绍
一、 滤波简介
滤波:通过一定的算法将信号中特定波段频率滤除,排除可能的随机干扰,提高检测精度的一种手段。
功能:平滑、预测,微分、积分、信号分离和噪声抑制等功能。
信号种类:
a) 数字滤波:使用软件编程/可编程逻辑器件设计
b) 模拟滤波:采用电容,电阻和电感的组合来完成。
算法(频域/时域):
a) 经典滤波:信号和噪声处于不同的频段。高通、低通、带通、带阻滤波器。
b) 现代滤波:利用信号和噪声的随机统计特性。维纳滤波,Kalman滤波,自适应滤波,小波变换等。
二、 状态估计原理简介
状态估计是卡尔曼滤波的重要组成部分。
估计问题: 观测数据(可以直接得到)-> 定量判断 -> 随机状态量(很难直接得到)
状态估计:观测数据(输入输出:外部特性)-> 定量判断 ->内部状态量(动态规律,很难直接得到)< --- >信号平滑/插值(过去)信号的滤波(现在)信号的预测(将来)
状态估计对于了解和控制一个系统具有重要意义。
状态估计方法:最小二乘估计,线性最小方差估计、最小方差估计、递推最小二乘估计等。
卡尔曼滤波算法即为递推最优估计理论,采用状态空间描述法,以线性最小均方误差为估计准则来得到对状态变量的最优估计。
三、 卡尔曼滤波引例
卡尔曼滤波:是一种高效率的递归滤波器(自回归滤波器),它能够从一系列完全包含噪声的测量中,估计动态系统的状态。
基本思想:采用信号与噪声的状态空间模型,利用前一时刻的估计值和现时刻的观测值来更新对状态变量的估计,求出现在时刻的估计值。它适合于实时处理和计算机运算。
实质:由测量值重构系统的状态向量。它以“预测—实测—修正”的顺序递推,根据测量值来消除随机干扰,再现系统的状态。
卡尔曼滤波的两个重要假设:
- 被建模的系统是线性的:K时刻的系统状态可以用某个矩阵与k-1时刻的系统状态的乘积表示。
- 影响测量的噪声属于高斯分布的白噪声:噪声与时间不相关,且只用均值和协方差就可以准确地建模。
问题描述
已知条件: 房间温度的当前感觉值 都带有误差
房间温度计的当前读数
希望得到 · 五分钟以后房间温度的实际值
感觉值+测量值 ?= 未来时刻的真实值
l 预测:根据K-1时刻温度的最优估计值预测K仕客德温度为23度,其高斯噪声的偏差是5度(设K-1时刻温度的最优估算的偏差是3,自己预测的不确定度是4度,它们平方相加再开方,就是5)。
l 预测:从温度计那里得到K时刻的温度值,假设是25度,同时刻值的偏差是4度。
l 更新:根据预测误差和观测误差的协方差有kg^2=5^2/(5^2+4^2),即kg=0.78,则可估算出K时刻的实际温度值(最优估计)是:23+0.78*(25-23)=24.56度。
递推关键:由此可知,进行K+1时刻的最优估计,需要K时刻的最优估计值和其偏差。偏差计算:((1-kg)*5^2)^0.5=2.35。这里的5就是上面K时刻温度预测为23度时的偏差,得出2.35就是K时刻估算出的最优温度值的偏差(对应上面的3)。
卡尔曼滤波器不断的把covariance递归,从而估算出最优的温度值。其运行的很快,只保留了上一时刻的covariance。