卡尔曼滤波(一)

卡尔曼滤波,又名:

最优化、递归、数字处理算法,其实是【观测器】多一点。

主要是对【不确定性】的数据,进行分析和预测。

【不确定性】:

1. 不存在完美的数学模型。(例如:小车的运动轨迹不确定)

2. 系统的扰动不可控,很难建模。

3. 测量传感器存在误差。


 

例如:测量硬币

 

 

 测量一个硬币,共测量k次,硬币的直径,很自然就想到k次的均值。

如果将x^   变换一下,可以发现:

1. 第1~k的均值,可以由第k次的测量值【Zk 】、第1~k-1次的均值【xk-1】 ,进行表示。

2. 随着k的次数增多,1 / k * (Zk  - xk-1) 的作用越来越小,也就是继续测显得意义不大。

 


 

令 1 / k = Kk

 

 那么,可以得到如下结论:

1. 利用这种方式【求均值】,不需要知道前面所有的Zk,使用迭代方式求解,不用存储大量数据。

2. 只需要存储:【Z】【xk-1】  和 k,每次都更新这3个数值即可!

 


 

核心公式:

eEST:估计误差。(理解:应该是 【真实值X】-【估计值X^】)

eMEA:测量误差。(理解:应该是由【测量设备标称的测量误差】,或者  f(【测量设备标称的测量误差】),f是误差传播模型)

 

结论: 

1. 当 k - 1 时的【估计误差】>>【测量误差】(远大于),Kk接近1,那么Xk就接近【测量值】,或宁愿相信【测量值(Zk)】,也不相信【估计值(Xk-1)】。

2. 当 k - 1 时的【估计误差】<<【测量误差】(远小于),Kk接近0,那么Xk就接近【估计】,或宁愿相信【估计值(Xk-1)】,也不相信【测量值(Zk)】。

 


 

使用卡尔曼滤波进行估计

 

 

1. 计算【卡尔曼增益】Kk

2. 计算第k次的估计值(那么起码要第k-1次的初始值才行,k至少为2才能开始计算) 

3. 更新【第K次的模型误差(eEST-k)】

 

实际长度 :X = 50 (这个一般是未知的)

第0次估计: x^0 = 40 (这个可以使用经验值,或者更粗糙的观测方法得到)

第0次模型误差:eEST-0 = 5(这个可以随便给,一般也是靠经验,又或者叫【估计误差】)

第1次测量值:Z1 = 51

第1次测量误差:eMEA-k =  3 (这个测量误差,每次都是固定的,因为仪器一般是固定的,所以用MEA-k,不用特别区分次数)

 

 上表:

1. 只有Zk 是每次必须要真实测量的观测数据。

2. 其余列都是自动可以计算得到的。

 

蓝色是Zk,红色是X^k,可以看出,X^k越来越接近50了。

 


 

posted on 2022-06-24 09:41  耀礼士多德  阅读(26)  评论(0编辑  收藏  举报