卡尔曼滤波笔记

       卡尔曼滤波处理信息的过程一般为预估和纠正,他对多传感信息融合技术的作用中不仅是个简单具体的算法,而且也是一种非常有用的系统处理方案。事实上,它与很多系统处理信息数据的方法类似,它利用数学上迭代递推计算的方法为融合数据提供行之有效的统计意义下的最优估计,但是对存储的空间和计算要求很小,适合于对数据处理空间和速度有限制的环境下。

       卡尔曼滤波主要用于融合低层的实时动态多传感器冗余数据。滤波器的递推特性使得它特别适合在那些不具备大量数据存储能力的系统中使用。

######示例:温度测量

准确测量某个房间任意时刻的温度。
条件:
1、房间可认为是大概恒温的,但实际存在少许偏差;
2、有一个不太靠谱的温度计,即测量误差较大。
假设:
1、房间温度上下波动值服从高斯分布,即可认为是高斯白噪声;
2、温度计测量误差也是服从高斯分布的随机误差。
方法:
       根据经验的预测值(系统的预测值)和温度计的值(测量值),并结合他们各自的噪声来估算出房间的实际温度值。

具体过程:
       假如我们要估算k时刻的是实际温度值。首先你要根据k-1时刻的温度值,来预测k时刻的温度。因为你相信温度是恒定的,所以你会得到k时刻的温度预测值是跟k-1时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度(5是这样得到的:如果k-1时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平方相加再开方,就是5)。然后,你从温度计那里得到了k时刻的温度值,假设是25度,同时该值的偏差是4度。

       由于我们用于估算k时刻的实际温度有两个温度值,分别是23度和25度。究竟实际温度是多少呢?相信自己还是相信温度计呢?究竟相信谁多一点,我们可以用他们的协方差covariance来判断。因为Kg2=52/(52+42),所以Kg=0.78,我们可以估算出k时刻的实际温度值是:23+0.78*(25-23)=24.56度。可以看出,因为温度计的协方差比较小(比较相信温度计),所以估算出的最优温度值偏向温度计的值。

       现在我们已经得到k时刻的最优温度值了,下一步就是要进入k+1时刻,进行新的最优估算。到现在为止,好像还没看到什么自回归的东西出现。对了,在进入k+1时刻之前,我们还要算出k时刻那个最优值(24.56度)的偏差。算法如下:((1-Kg)*52)0.5=2.35。这里的5就是上面的k时刻你预测的那个23度温度值的偏差,得出的2.35就是进入k+1时刻以后k时刻估算出的最优温度值的偏差(对应于上面的3)。

       就是这样,卡尔曼滤波器就不断的把协方差递归,从而估算出最优的温度值。他运行的很快,而且它只保留了上一时刻的协方差。上面的Kg,就是卡尔曼增益(Kalman Gain)。他可以随不同的时刻而改变他自己的值 。

######原理表述:

       首先,我们先要引入一个离散控制过程的系统。该系统可用一个线性随机微分方程来描述:
                        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)分别表示过程和测量的噪声。他们被假设成高斯白噪声,他们的协方差分别是Q,R 。

1、首先我们要利用系统的过程模型,来预测下一状态的系统。假设现在的系统状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态:
              X(k|k-1)=A X(k-1|k-1)+B U(k)        ①
式①中,X(k|k-1)是利用上一状态预测的结果,X(k-1|k-1)是上一状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。

2、到现在为止,我们的系统结果已经更新了,可是,对应于X(k|k-1)的协方差还没更新。我们用P表示协方差:
              P(k|k-1)=A P(k-1|k-1) A’+Q        ②
式②中,P(k|k-1)是X(k|k-1)对应的协方差,P(k-1|k-1)是X(k-1|k-1)对应的协方差,A’表示A的转置矩阵,Q是系统过程的协方差。式子①,②就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。

3、现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。结合预测值和测量值,我们可以得到现在状态(k)的最优化估算值X(k|k):
              X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1))         ③
其中Kg为卡尔曼增益(Kalman Gain):
              Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R)        ④

4、到现在为止,我们已经得到了k状态下最优的估算值X(k|k)。但是为了要另卡尔曼滤波器不断的运行下去直到系统过程结束,我们还要更新k状态下X(k|k)的协方差:
              P(k|k)=(I-Kg(k) H) P(k|k-1)         ⑤
其中I 为1的矩阵,对于单模型单测量,I=1。当系统进入k+1状态时,P(k|k)就是式子②的P(k-1|k-1)。这样,算法就可以自回归的运算下去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值