卡尔曼滤波(二)

数据融合

有两个测量设备,分别有:

测量值:Z1 = 30 ,测量误差 σ1 = 2 

测量值:Z = 32,测量误差 σ2 = 4 

服从正态分布:

 

 如果将设备编号1、2视为测量次数,那么:

按照卡尔曼滤波的算法:

估计值 Z = Z1 + K(Z- Z1),K:卡尔曼增益

K∈ [ 0, 1 ](K在0~1之间)

若:

1. K = 0 , Z = Z,(换句话说,没有增益,那么就只相信上一次测的)

2. K  = 1, Z = Z2 ,(换句话说,只相信这次测的)

* K就很像一个概率,或者相信度之类的东西。


 

如何求K?

K有一个原则,要使得【估计值误差,或叫标准差( σZ^)】 最小。

σZ^最小 ,等价于 Var(Z^) , Var()就是求方差的函数。 (σZ^)2 = Var(Z^)

Var(Z^) = Var(Z1 + K(Z- Z1))

 

 相互独立,使用误差传播:

 

 要使得【估计值误差,或叫标准差( σZ^)】 最小,那么就是对K求导,使得导数为0得极值:

代入,得:

Z = Z1 + K(Z- Z1)= 30 .4 

Z^)2 = (1 - k )2 * σ12 + k* σ22  = 3.2

画图:

 结论:

1. 按照上一篇:卡尔曼滤波(一) - 耀礼士多德 - 博客园 (cnblogs.com)

    K的初始值,可以在测量到第二个数据的时候,得到。

2. 经过计算 Z^ ,发现的Z^ 误差σZ^,都要较前两次测量的要小。


 

两条公式放在一起看:

1. 

 

2. 

 

 模型误差的初始值、经验值是不是可以用测量误差近似估计???


 

协方差矩阵

普通版计算协方差

 

 

矩阵版计算协方差


卡尔曼滤波入门

理论上:

Xk=AXk-1+BUk+Wk-1 ......(1)

Zk=HXk+Vk   ......(2)

(之所以叫理论上,就像三角形的内角和理论上等于180°,实际上测量值如果代入理论公式,那么等号不成立 )

以房间温度为研究对象。

Xk:是k时刻的系统状态。  在此处,为第k时刻的房间温度。(当k=0时,X可以看做凭经验瞎猜的温度)

A:是系统参数、【状态转移矩阵】。假设温度是随着时间变化的,那么A矩阵中,就有K的存在(可能叫Ak比较合适吧?);如果温度是恒定的,那么A就是1,或单位矩阵。

Uk : 是k时刻对系统的控制量、【控制矩阵】。可不可以理解为加常数?类似于光照对温度的影响之类?由于系统中一般不太有控制量,所以B这个参数一般为0,也就是没有U(K)。

Wk:过程噪声。被假设成高斯白噪声。协方差分别是【Q】。(暂时无法理解过程噪声)

Zk:是k时刻的测量值。在此处,为第k时刻,用温度计测量房间的温度值。(Zk是有可能是多种测量值,写为列矩阵)

H:是测量系统的系数矩阵。在此处,因为Zk 和Xk都是温度,那么H=1。如果Xk 假设是汽车的里程,而Zk是轮胎圈数,那么H就有一个转换关系了。

Vk :是测量误差。协方差为【R】。

以小车运动为研究对象。 

Xt = [Pt,Vt]T

Pt:小车的里程。

Vt:小车的速度。

在第K时刻,小车的状态:

Pt = Pt-1 + Vt-1 * Δt +  1 / 2 * Ut * Δt2   .......Ut为t时刻的加速度

Vt = Vt-1  + Ut * Δt

(暂时忽略Wk)

形如:Xk=AXk-1+BUk

 以房间温度为研究对象:

卡尔曼滤波,就是以Xt-1(Xt-1已经是优化过的,不是单纯从X0直接按式子去推,稍后再看),去预测Xt

1. 假设屋子里的温度是恒定的。解读:那么A就变为单位矩阵,也就是,理论上:Xt = Xt-1 + Wt。(Wt 更多是一个象征意义,在计算的时候更加关注Wt 的协方差Q)

2. 假设温度X0(或者Xt-1)为23,假设噪声为3。

(t-1时刻,【最优温度偏差p(k-1|k-1)= 32,协方差矩阵)

4. 现在,假设 t = 2,X( t |t -1)X+ BU= 23 ,假设噪声为4,也就是Q = 42

(X( t |t -1)代表由 t -1 预测 t 时刻的值,之所以不用Xt,代表这个值还不是最优预测,否则就用Xt 或者【X(t|t)】代表【最优估计】,不加Wt 是因为它只是一个象征,不可知,只能知道其噪声)

5. 计算 P(k|k-1)=A*P(k-1|k-1)A' + Q ,在此处为 3*3 + 4*4 = 5*5。 

(P(t|t-1)代表由 t -1 预测 t 时刻的 温度偏差,因为还不是最优的,否则就用否则就用P或者P(t|t)代表【最优温度偏差】)

6. 然后,在温度计那里,读取温度值 Zk = 25,同时R = 42 

(相当于厂家标称温度计误差为)

7. 计算【卡尔曼增益】Kk2=P(k|k-1) * H' / ( H * P(k|k-1) * H ' + R ) ,此处:Kk 2= 5^2 / ( 5^2 + 4^2 )

8. 计算【最优估计】X(k|k) = X(k|k-1) + Kk* (Z-  H * X (k|k-1) ),此处:23 + 0.78 * (25-23)=24.56

9. 计算【最优偏差P(k|k)=( I - Kk *H ) * P(k|k-1),留给下一次测量时用


 

posted on   耀礼士多德  阅读(29)  评论(0编辑  收藏  举报

(评论功能已被禁用)
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示