卡尔曼滤波
基本概念
均值
μ
\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=N−11n=1∑N(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}}
σ=N−11n=1∑N(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πσ21e2σ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,n−1: 是
x
x
x 的先验估计值, 在时间
n
−
1
n - 1
n−1 时计算出
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=1∑N(zn)=N1(n=1∑N−1(zn)+zN)=N1N−1N−1n=1∑N−1(zn)+N1zN=NN−1N−11n=1∑N−1(zn)+N1zN=NN−1x^N−1,N−1+N1zN=x^N−1,N−1−N1x^N−1,N−1+N1zN=x^N−1,N−1+N1(zN−x^N−1,N−1)
状态更新方程:
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,n−1+Kn(zn−x^n,n−1)
卡尔曼增益:
K
n
K_n
Kn
观测残差:
(
z
n
−
x
n
,
n
−
1
)
\left(z_{n}-x_{n, n-1}\right)
(zn−xn,n−1)
初始猜测: 也就是第一个估计值
例子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,n−1+β(Δtzn−x^n,n−1)
位置的状态更新方程:
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,n−1+α(zn−x^n,n−1)
α
\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,n−1+α(zn−x^n,n−1)=x˙^n,n−1+β(Δtzn−x^n,n−1)=x¨^n,n−1+γ(0.5Δt2zn−x^n,n−1)
估计误差: 目标可以通过转弯突然改变飞行方向,真实的目标动态模型可能包括一个突然加速(改变加速度)
常见的 α − β − ( γ ) \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,n−1+rnpn,n−1pn,n−1是外推估计不确定度rn是测量不确定度
状态更新方程修改为:
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,n−1+Kn(zn−x^n,n−1)=(1−Kn)x^n,n−1+Knzn
k
n
k_n
kn 是测量的权重,
(
1
−
K
n
)
(1-K_n)
(1−Kn) 是估计的权重。
协方差更新方程
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=(1−Kn)pn,n−1pn,n−1是在先前滤波器估计期间计算的估计不确定性pn,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=(1−Kn)pn,n−1
匀速直线运动:
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+Δt2⋅pn,nv=pn,nv
卡尔曼滤波过程
- 初始化
初始系统状态 ( x ^ 0 , 0 ) \left(\hat{x}_{0,0}\right) (x^0,0)
初始估计不确定度 ( p 0 , 0 ) \left(p_{0,0}\right) (p0,0) - 测量
测量系统状态 z n z_n zn
测量不确定度 r n r_n rn - 状态更新
卡尔曼增益 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) - 预测
下一个系统状态 ( 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
可以解决滞后误差通过设置一个高的过程不确定性