卡尔曼滤波(七)——非线性系统

非线性系统卡尔曼滤波,又叫“扩展卡尔曼滤波”

模型公式:

Xk=AXk-1+BUk+Wk-1 

Zk = HXk + Vk

p(w) ~ N(0,Q)

p(v) ~ N(0,R)

 

预测:

先验值:X-k = AX^k-1 + BUk-1 

先验协方差:P-k =  A Pk-1 AT   + Qk-1

 

校正:

卡尔曼增益:K= P-kH/ (HP-kH+  R)

后验值:X^= X-+ K(Zk - HX-K)

后验协方差:Pk = (I - KkH)P-k


 

对于非线性系统,没办法用【Xk=AXk-1+BUk+Wk-1 】表达

只能表达成:xk = f(xk-1,uk-1,wk-1)

zk = h(xk,vk)

p(w) ~ N(0,Q)

p(v) ~ N(0,R)

 

正态分布的随机变量,通过非线性系统后,就不是正态分布了。

线性正态分布:

 

 y = kx,x正态,y也是正态

非线性正态分布:

y = f(x) 

 

 


 

线性化,泰勒一阶展开(当X0非常接近要求的X时,而X不可知,所以X相当于初始值,靠猜或用低精度仪器测,但是不能太离谱):

f(x)  = f(x0) + δf / δx ( x - x0)

对于高维度,要用到【雅可比矩阵】

 

 

 

 f(x)  = f(x0) + J*(X-X0)


 

 对于模型来说,Xk = f(xk-1,uk-1,wk-1) 泰勒展开:

那么,使用Xk 初始值  = X^k-1   (第K-1次后验值)

 Xk = f(x^k-1,uk-1,wk-1) + J (Xk - X^k-1) + WkWk-1

疑问:按照泰勒公式,为不是J (Xk-1 - X^k-1)??难道是Xk-1 - X^k-1 与Xk - X^k-1 相当接近??

疑问:WkWk-1 是怎么来的?这个是对Wk-1进行求导的项,在W=0处对Wk-1的偏导

 理解起来 

1.  f(x^k-1,uk-1,wk-1)  为 f(x0)

2.  J (Xk - X^k-1) 应该为 J (Xk - Xk初始值 )

3. J = δf / δx,将(X^k-1 , Uk-1 代进去)

 

 4. 那么J,或者A矩阵,每一步都是变化的,每次都要重新算。

因为wk-1 一般不可以知道,假设为0,那么:

 

Xk = f(x^k-1,uk-1,0) + J (Xk - X^k-1) + Wwk-1

 

同理,对于【Zk = HXk + Vk】,令X~k = f(x^k-1,uk-1,0) ,因为模型算出的X~,比起X^k-1更加接近真实的Xk

Zk = h(Xk , Vk)

Zk =  h(X~k,0) + H (Xk - X~k)  + Vvk

H = δh / δx (用X~k 代 Xk)

V = δh / δv (用X~k 代 Xk)

 令:Z~k = h(X~k,0) 

整理,得到:

Xk = X~k + J (Xk - X^k-1) + Wkwk-1

Zk =  Z~ + H (Xk - X~k)  + Vvk

 

p(w) ~ N(0,Q)

p(Ww) ~ N(0,WQWT)


 

预测:

X-k = f( X^k-1 , uk-1,0)  

P-k= A Pk-1A+ WQWT

 

矫正:

Kk = P-k HT / (HP-kHT + VRVT)

X^k = X-k + Kk(Zk - h(X-k,0))

Pk = (I - KkH) P-k

 

posted on   耀礼士多德  阅读(140)  评论(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

统计

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