一维卡尔曼滤波

卡尔曼滤波

基本概念

均值 μ \mu μ
期望值 E E E
方差 σ 2 \sigma^{2} σ2
σ 2 = 1 N − 1 ∑ n = 1 N ( x n − μ ) 2 \sigma^{2}=\frac{1}{N-1} \sum_{n=1}^{N}\left(x_{n}-\mu\right)^{2} σ2=N11n=1N(xnμ)2
标准差 σ \sigma σ
σ = 1 N − 1 ∑ n = 1 N ( x n − μ ) 2 \sigma=\sqrt{\frac{1}{N-1} \sum_{n=1}^{N}\left(x_{n}-\mu\right)^{2}} σ=N11n=1N(xnμ)2
高斯分布
f ( x ; μ , σ 2 ) = 1 2 π σ 2 e − ( x − μ ) 2 2 σ 2 f\left(x ; \mu, \sigma^{2}\right)=\frac{1}{\sqrt{2 \pi \sigma^{2}}} e^{\frac{-\left(x-\mu)^{2}\right.}{2 \sigma^{2}}} f(x;μ,σ2)=2πσ2 1e2σ2(xμ)2

测量噪声/测量误差/测量不确定度: 雷达系统的测量数值不是完全可靠,它包含随机误差(或者这类型的不确定性)。例如雷达自身的准确性,发射光束的宽度,返回信号强弱等等
处理噪声: 有很多外部因素会做成干扰,目标运动并不是完全按着运动方程。例如:风向,空气流动,驾驶策略等等
估计: 用来估算系统的不可见状态。测量或计算出的的参数都是估计值
准确度: 表示测量值与真实值的接近程度
精密度: 表示测量结果的再现性
测量值: 是一个由概率密度函数描述的随机变量
测量值的均值: 随机变量的期望值
测量值的均值和真实值的差: 偏差/系统误差/测量精度
分布的离散程度: 测量值的精密度/测量噪声/随机测量误差/测量不确定性
静态系统: 在相当一段时间内不改变状态的系统

x x x: 是重量的真实值
z n z_{n} zn: 是第 n n n 次称重的测量值
x ^ n , n \hat{x}_{n, n} x^n,n: 是第 n n n x x x估计值(测量出 z n z_{n} zn 后进行估算)
x ^ n , n − 1 \hat{x}_{n, n - 1} x^n,n1: 是 x x x先验估计值, 在时间 n − 1 n - 1 n1 时计算出
x ^ n + 1 , n \hat{x}_{n + 1, n} x^n+1,n: 是对未来 ( n + 1 ) (n + 1) (n+1) x x x估计

α − β − γ \alpha-\beta-\gamma αβγ 滤波器

例子1 – 金条重量(静态系统)

静态系统/状态外推方程:
x n + 1 , n = x n , n x_{n+1, n}=x_{n,n} xn+1,n=xn,n
推导:
x ^ N , N = 1 N ∑ n = 1 N ( z n ) = 1 N ( ∑ n = 1 N − 1 ( z n ) + z N ) = 1 N N − 1 N − 1 ∑ n = 1 N − 1 ( z n ) + 1 N z N = N − 1 N 1 N − 1 ∑ n = 1 N − 1 ( z n ) + 1 N z N = N − 1 N x ^ N − 1 , N − 1 + 1 N z N = x ^ N − 1 , N − 1 − 1 N x ^ N − 1 , N − 1 + 1 N z N = x ^ N − 1 , N − 1 + 1 N ( z N − x ^ N − 1 , N − 1 ) \begin{aligned} \hat{x}_{N, N}&=\frac{1}{N} \sum_{n=1}^{N}\left(z_{n}\right) \\ &=\frac{1}{N}\left(\sum_{n=1}^{N-1}\left(z_{n}\right)+z_{N}\right) \\ &=\frac{1}{N} \frac{N-1}{N-1} \sum_{n=1}^{N-1}\left(z_{n}\right)+\frac{1}{N} z_{N} \\ &=\frac{N-1}{N} \frac{1}{N-1} \sum_{n=1}^{N-1}\left(z_{n}\right)+\frac{1}{N} z_{N} \\ &=\frac{N-1}{N} \hat{x}_{N-1, N-1}+\frac{1}{N} z_{N} \\ &=\hat{x}_{N-1, N-1}-\frac{1}{N} \hat{x}_{N-1, N-1}+\frac{1}{N} z_{N} \\ &=\hat{x}_{N-1, N-1}+\frac{1}{N}\left(z_{N}-\hat{x}_{N-1, N-1}\right) \\ \end{aligned} x^N,N=N1n=1N(zn)=N1(n=1N1(zn)+zN)=N1N1N1n=1N1(zn)+N1zN=NN1N11n=1N1(zn)+N1zN=NN1x^N1,N1+N1zN=x^N1,N1N1x^N1,N1+N1zN=x^N1,N1+N1(zNx^N1,N1)
状态更新方程:
x ^ n , n = x ^ n , n − 1 + K n ( z n − x ^ n , n − 1 ) \hat{x}_{n, n}=\hat{x}_{n, n-1}+K_{n}\left(z_{n}-\hat{x}_{n, n-1}\right) x^n,n=x^n,n1+Kn(znx^n,n1)
卡尔曼增益: K n K_n Kn
观测残差: ( z n − x n , n − 1 ) \left(z_{n}-x_{n, n-1}\right) (znxn,n1)
初始猜测: 也就是第一个估计值

例子2 - 匀速飞行器

动态模型/状态外推方程/过渡方程/预测方程:
x n + 1 = x n + Δ t x ˙ n x ˙ n + 1 = x ˙ n \begin{aligned} x_{n+1} &=x_{n}+\Delta t \dot{x}_{n} \\ \dot{x}_{n+1} &=\dot{x}_{n} \end{aligned} xn+1x˙n+1=xn+Δtx˙n=x˙n

速度的状态更新方程:
x ˙ ^ n , n = x ˙ ^ n , n − 1 + β ( z n − x ^ n , n − 1 Δ t ) \hat{\dot{x}}_{n, n}=\hat{\dot{x}}_{n, n-1}+\beta\left(\frac{z_{n}-\hat{x}_{n, n-1}}{\Delta t}\right) x˙^n,n=x˙^n,n1+β(Δtznx^n,n1)
位置的状态更新方程:
x ^ n , n = x ^ n , n − 1 + α ( z n − x ^ n , n − 1 ) \hat{x}_{n, n}=\hat{x}_{n, n-1}+\alpha\left(z_{n}-\hat{x}_{n, n-1}\right) x^n,n=x^n,n1+α(znx^n,n1)
α \alpha α β \beta β 的值取决于测量精度

例子3-匀加速直线运动

滞后误差/动态误差/系统误差/偏移误差/截断误差: 真实值或测量值与估计值之间存在一个固定的差值。

状态外推方程:
x ^ n + 1 , n = x ^ n , n + x ˙ ^ n , n Δ t + x ¨ ^ n , n Δ t 2 2 x ˙ ^ n + 1 , n = x ˙ ^ n , n + x ¨ ^ n , n Δ t x ¨ ^ n + 1 , n = x ¨ ^ n , n \begin{aligned} \hat{x}_{n+1, n}&=\hat{x}_{n, n}+\hat{\dot{x}}_{n, n} \Delta t+\hat{\ddot{x}}_{n, n} \frac{\Delta t^{2}}{2} \\ \hat{\dot{x}}_{n+1, n}&=\hat{\dot{x}}_{n, n}+\hat{\ddot{x}}_{n, n} \Delta t \\ \hat{\ddot{x}}_{n+1, n}&=\hat{\ddot{x}}_{n, n} \end{aligned} x^n+1,nx˙^n+1,nx¨^n+1,n=x^n,n+x˙^n,nΔt+x¨^n,n2Δt2=x˙^n,n+x¨^n,nΔt=x¨^n,n

状态更新方程:
x ^ n , n = x ^ n , n − 1 + α ( z n − x ^ n , n − 1 ) x ˙ ^ n , n = x ˙ ^ n , n − 1 + β ( z n − x ^ n , n − 1 Δ t ) x ¨ ^ n , n = x ¨ ^ n , n − 1 + γ ( z n − x ^ n , n − 1 0.5 Δ t 2 ) \begin{aligned} \hat{x}_{n, n} &=\hat{x}_{n, n-1}+\alpha\left(z_{n}-\hat{x}_{n, n-1}\right) \\ \hat{\dot{x}}_{n, n} &=\hat{\dot{x}}_{n, n-1}+\beta\left(\frac{z_{n}-\hat{x}_{n, n-1}}{\Delta t}\right) \\ \hat{\ddot{x}}_{n, n} &=\hat{\ddot{x}}_{n, n-1}+\gamma\left(\frac{z_{n}-\hat{x}_{n, n-1}}{0.5 \Delta t^{2}}\right) \end{aligned} x^n,nx˙^n,nx¨^n,n=x^n,n1+α(znx^n,n1)=x˙^n,n1+β(Δtznx^n,n1)=x¨^n,n1+γ(0.5Δt2znx^n,n1)

估计误差: 目标可以通过转弯突然改变飞行方向,真实的目标动态模型可能包括一个突然加速(改变加速度)

常见的 α − β − ( γ ) \alpha-\beta-(\gamma) αβ(γ) 滤波器

  • 最小二乘法滤波
  • 卡尔曼滤波
  • 拓展卡尔曼滤波
  • 无迹卡尔曼滤波

一维卡尔曼滤波器

无过程噪声的一维卡尔曼滤波器

测量不确定度/测量误差: γ = σ 2 \gamma=\sigma^2 γ=σ2
要么被厂商提供,要么通过校准程序得出
估计不确定度/估计误差: p p p
但是可以评估出估计不确定度

卡尔曼增益方程

K n =  Uncertainty in Estimate   Uncertainty in Estimate  +  Uncertainty in Measurement  = p n , n − 1 p n , n − 1 + r n p n , n − 1 是 外 推 估 计 不 确 定 度 r n 是 测 量 不 确 定 度 K_{n}=\frac{\text { Uncertainty in Estimate }}{\text { Uncertainty in Estimate }+\text { Uncertainty in Measurement }}=\frac{p_{n, n-1}}{p_{n, n-1}+r_{n}} \\ p_{n, n-1} 是外推估计不确定度 \\ r_{n} 是测量不确定度 Kn= Uncertainty in Estimate + Uncertainty in Measurement  Uncertainty in Estimate =pn,n1+rnpn,n1pn,n1rn

状态更新方程修改为:
x ^ n , n = x ^ n , n − 1 + K n ( z n − x ^ n , n − 1 ) = ( 1 − K n ) x ^ n , n − 1 + K n z n \hat{x}_{n, n}=\hat{x}_{n, n-1}+K_{n}\left(z_{n}-\hat{x}_{n, n-1}\right)=\left(1-K_{n}\right) \hat{x}_{n, n-1}+K_{n} z_{n} x^n,n=x^n,n1+Kn(znx^n,n1)=(1Kn)x^n,n1+Knzn
k n k_n kn 是测量的权重, ( 1 − K n ) (1-K_n) (1Kn) 是估计的权重。

协方差更新方程

p n , n = ( 1 − K n ) p n , n − 1 p n , n − 1 是 在 先 前 滤 波 器 估 计 期 间 计 算 的 估 计 不 确 定 性 p n , n 是 当 前 状 态 的 估 计 不 确 定 性 p_{n, n}=\left(1-K_{n}\right) p_{n, n-1} \\ p_{n, n-1} 是在先前滤波器估计期间计算的估计不确定性 \\ p_{n, n} 是当前状态的估计不确定性 pn,n=(1Kn)pn,n1pn,n1pn,n

协方差外推方程

静态系统:
p n , n = ( 1 − K n ) p n , n − 1 p_{n, n}=\left(1-K_{n}\right) p_{n, n-1} pn,n=(1Kn)pn,n1
匀速直线运动:
p n + 1 , n x = p n , n x + Δ t 2 ⋅ p n , n v p n + 1 , n v = p n , n v \begin{aligned} p_{n+1, n}^{x}&=p_{n, n}^{x}+\Delta t^{2} \cdot p_{n, n}^{v} \\ p_{n+1, n}^{v}&=p_{n, n}^{v} \end{aligned} pn+1,nxpn+1,nv=pn,nx+Δt2pn,nv=pn,nv

卡尔曼滤波过程
  1. 初始化
    初始系统状态 ( x ^ 0 , 0 ) \left(\hat{x}_{0,0}\right) (x^0,0)
    初始估计不确定度 ( p 0 , 0 ) \left(p_{0,0}\right) (p0,0)
  2. 测量
    测量系统状态 z n z_n zn
    测量不确定度 r n r_n rn
  3. 状态更新
    卡尔曼增益 K n K_n Kn
    当前系统状态估计值 ( x ^ n , n ) \left(\hat{x}_{n, n}\right) (x^n,n)
    当前状态估计不确定度 ( p n , n ) \left(p_{n, n}\right) (pn,n)
  4. 预测
    下一个系统状态 ( x ^ n + 1 , n ) \left(\hat{x}_{n+1,n}\right) (x^n+1,n)
    下一个估计不确定度 ( p n + 1 , n ) \left(p_{n+1,n }\right) (pn+1,n)

有过程噪声的的一维卡尔曼滤波器

过程噪声: 动态模型的不确定性,过程噪声会产生估计误差
过程噪声方差: q q q
协方差外推公式:
p n + 1 , n = p n , n + q n p_{n+1,n}=p_{n,n}+q_n pn+1,n=pn,n+qn

可以解决滞后误差通过设置一个高的过程不确定性

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值