This blog is translated from https://www.kalmanfilter.net/default.aspx.
It’s an excellent tutorial about Kalman Filter written by Alex Becker.

目录
卡尔曼滤波器(1) – 背景知识
卡尔曼滤波器(2) – α−β−γ滤波器(例1)
卡尔曼滤波器(3) – α−β−γ滤波器(例2)
卡尔曼滤波器(4) – α−β−γ滤波器(例3&例4&总结)
卡尔曼滤波器(5) – 一维卡尔曼滤波器(介绍)
卡尔曼滤波器(6) – 一维卡尔曼滤波器(例5&完整模型)
卡尔曼滤波器(7) – 一维卡尔曼滤波器(例6)
卡尔曼滤波器(8) – 一维卡尔曼滤波器(例7&例8)
卡尔曼滤波器(9) – 多维卡尔曼滤波器(前言&预备)
卡尔曼滤波器(10) – 多维卡尔曼滤波器(状态外推方程)
卡尔曼滤波器(11) – 多维卡尔曼滤波器(线性动态系统模型)
卡尔曼滤波器(12) – 多维卡尔曼滤波器(协方差外推方程)
卡尔曼滤波器(13) – 多维卡尔曼滤波器(测量方程)
卡尔曼滤波器(14) – 多维卡尔曼滤波器(简短总结)
卡尔曼滤波器(15) – 多维卡尔曼滤波器(状态更新方程)
卡尔曼滤波器(16) – 多维卡尔曼滤波器(协方差更新方程)
卡尔曼滤波器(17) – 多维卡尔曼滤波器(卡尔曼增益)
卡尔曼滤波器(18) – 多维卡尔曼滤波器(简化的协方差更新方程)
卡尔曼滤波器(19) – 多维卡尔曼滤波器(总结)
卡尔曼滤波器(20) – 多维卡尔曼滤波器(例9)


例2 - 在一维空间中追踪匀速飞行器

下面来看一个动态系统,它的状态是随时间改变的。在这个例子中,我们用 α\color{#bd5d38}\alphaα-β\color{#bd5d38}\betaβ 滤波器在一维空间中追踪匀速飞行的飞行器。

假设有个一维空间,有一架飞行器正在向远离雷达(或朝向雷达)的方向飞行。在一维空间中,雷达的角度不变,飞行器的高度不变,如下图所示。

xnx_nxn​ 代表飞行器在 nnn 时刻的航程,这里系统状态就是它。
飞行器速度定义为航程相对于时间的变化率,即为距离的导数:
x˙=v=dxdt\dot{x} = v = \frac{dx}{dt}x˙=v=dtdx​

雷达以恒定频率向目标方向发射追踪波束,周期为 Δt\Delta tΔt,即雷达每隔 Δt\Delta tΔt 测一次。

假设飞行器速度恒定,系统的动态模型可以用两个运动方程来描述 (状态外推方程)
{xn+1=xn+Δtx˙nx˙n+1=x˙n\left\{ \begin{aligned} x_{n+1} &= x_n + \Delta t \dot{x}_n \\ \dot{x}_{n+1} &= \dot{x}_n \\ \end{aligned} \right. {xn+1​x˙n+1​​=xn​+Δtx˙n​=x˙n​​这个例子的飞机速度是恒定的,因此有 x˙n+1=x˙n\dot{x}_{n+1}=\dot{x}_nx˙n+1​=x˙n​,即下一个周期的速度等于当前速度。

上述方程组称为状态外推方程(State Extrapolation Equation)
或者叫做过渡方程(Transition Equation)
或者叫做预测方程(Prediction Equation)

其实在例子1里有用到状态外推方程,只不过静态系统中系统状态(金条重量)没有改变。

状态外推方程一般用矩阵的形式表示,这个后面再讲。

为了方便理解,上面这组方程也是特定用于我们的例子的,不是方程的一般形式。先大概弄明白它的意思和作用。

注:目前我们已经学习了卡尔曼滤波五个方程中的2个:

  • 状态更新方程
  • 状态外推方程

现在,我们将在本例中修改状态更新方程。

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

设雷达的探测间隔(Δt\Delta tΔt) 为 555 秒。假设在 nnn 时刻,飞行器的估计航程为 30,000m30,000m30,000m,估计速度为 40m/s40m/s40m/s。
使用状态外推方程,可以预测
(1)n+1n+1n+1 时目标的位置:
x^n+1,n=x^n,n+Δtx˙n,n=30000+5×40=30200m\begin{aligned} \hat{x}_{n+1,n} &= \hat{x}_{n,n} + \Delta t \dot{x}_{n,n} \\ &= 30000+5 \times 40 \\ &= 30200m \end{aligned} x^n+1,n​​=x^n,n​+Δtx˙n,n​=30000+5×40=30200m​

(2)n+1n+1n+1 时刻目标的速度:x˙^n+1,n=x˙^n,n=40m/s\hat{\dot{x}}_{n+1,n}=\hat{\dot{x}}_{n,n}=40m/sx˙^n+1,n​=x˙^n,n​=40m/s
然而,nnn 时刻雷达测量的航程(znz_nzn​)是 30,110m30,110m30,110m,并不是预测的 30,200m30,200m30,200m,预期(预测)航程和测量航程之间有 90m90m90m 的偏差,造成这种偏差的可能原因有两个:

  1. 雷达测量不准确
  2. 飞行器速度改变了,新的速度为 30110−300005=22m/s\dfrac{30110-30000}{5}=22m/s530110−30000​=22m/s

哪个才是正确原因?让我们写一下速度的状态更新方程:

x˙^n,n=x˙^n,n−1+β(zn−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​​)

系数 β\betaβ 的取值取决于雷达的精确程度。

假设雷达 1σ1\sigma1σ 的精度为 20m20m20m,更可能是飞行器的速度变化导致了预测航程和测量航程之间的 90m90m90m 的偏差。这种情况下我们把系数 β\betaβ 调高,β\betaβ 设为 0.90.90.9,则估计速度为:

x˙^n,n=x˙^n,n−1+β(zn−x^n,n−1Δt)=40+0.9(30110−302005)=23.8m/s\begin{aligned} \hat{\dot{x}}_{n,n} &= \hat{\dot{x}}_{n,n-1}+\beta \left( \frac{z_n-\hat{x}_{n,n-1}}{\Delta t} \right)\\ &= 40+0.9\left( \frac{30110-30200}{5}\right) \\ &= 23.8m/s \end{aligned} x˙^n,n​​=x˙^n,n−1​+β(Δtzn​−x^n,n−1​​)=40+0.9(530110−30200​)=23.8m/s​

假设雷达 1σ1\sigma1σ 的精度为 150m150m150m,则更有可能是雷达的测量误差造成了这 90m90m90m 的偏差。这种情况下我们把 β\betaβ 调低,β\betaβ 设为 0.10.10.1,则估计速度为:
x˙^n,n=x˙^n,n−1+β(zn−x^n,n−1Δt)=40+0.1(30110−302005)=38.2m/s\begin{aligned} \hat{\dot{x}}_{n,n} &= \hat{\dot{x}}_{n,n-1}+\beta \left( \frac{z_n-\hat{x}_{n,n-1}}{\Delta t} \right)\\ &= 40+0.1\left( \frac{30110-30200}{5}\right) \\ &= 38.2m/s \end{aligned} x˙^n,n​​=x˙^n,n−1​+β(Δtzn​−x^n,n−1​​)=40+0.1(530110−30200​)=38.2m/s​

从 β\betaβ 的取值可以看出:我们更相信雷达,还是更相信飞机速度的变化。

飞行器位置的状态更新方程与上一个例子中推导的方程类似:
x^n,n=x^n,n−1+αn(zn−x^n,n−1)\hat{x}_{n,n} = \hat{x}_{n,n-1} + \alpha_n \left( z_n - \hat{x}_{n,n-1} \right) x^n,n​=x^n,n−1​+αn​(zn​−x^n,n−1​)

与之前不同的是,例子1中每次迭代需要重新计算系数 α(αn=1N)\alpha(\alpha_n=\frac{1}{N})α(αn​=N1​),而现在 α\alphaα 是一个常数。

α\alphaα 的大小取决于雷达的精度,高精度的雷达选择高的 α\alphaα,这将给测量带来很高的权重。
如果 α=1\alpha=1α=1,则估计航程等于测量航程:
x^n,n=x^n,n−1+1(zn−x^n,n−1)=zn\begin{aligned} \hat{x}_{n,n} &= \hat{x}_{n,n-1} + 1 \left( z_n - \hat{x}_{n,n-1} \right) \\ &= z_n \end{aligned} x^n,n​​=x^n,n−1​+1(zn​−x^n,n−1​)=zn​​
如果 α=0\alpha=0α=0,则测量航程不起作用:
x^n,n=x^n,n−1+0(zn−x^n,n−1)=x^n,n−1\begin{aligned} \hat{x}_{n,n} &= \hat{x}_{n,n-1} + 0 \left( z_n - \hat{x}_{n,n-1} \right) \\ &= \hat{x}_{n,n-1} \end{aligned} x^n,n​​=x^n,n−1​+0(zn​−x^n,n−1​)=x^n,n−1​​

于是,我们得到了雷达追踪器的状态更新方程组,他们被称为α\color{#bd5d38}\alphaα-β\color{#bd5d38}\betaβ 轨迹更新方程( α\color{#bd5d38}\alphaα-β\color{#bd5d38}\betaβ track update equations),或者叫做α\color{#bd5d38}\alphaα-β\color{#bd5d38}\betaβ 轨迹滤波方程( α\color{#bd5d38}\alphaα-β\color{#bd5d38}\betaβ track filtering equations)

位置(航程)状态更新方程:
x^n,n=x^n,n−1+αn(zn−x^n,n−1)\hat{x}_{n,n} = \hat{x}_{n,n-1} + \alpha_n \left( z_n - \hat{x}_{n,n-1} \right)x^n,n​=x^n,n−1​+αn​(zn​−x^n,n−1​)
速度状态更新方程:
x˙^n,n=x˙^n,n−1+β(zn−x^n,n−1Δt)\hat{\dot{x}}_{n,n} = \hat{\dot{x}}_{n,n-1}+\beta \left( \dfrac{z_n-\hat{x}_{n,n-1}}{\Delta t} \right)x˙^n,n​=x˙^n,n−1​+β(Δtzn​−x^n,n−1​​)

注:有一些文章里 α\alphaα - β\betaβ 滤波器被叫做 g - h 滤波器,字母换了,含义是一样的。

注:在本例中,我们用测量航程得出飞机速度 ( x^=ΔxΔt\hat{x} = \frac{\Delta x}{\Delta t}x^=ΔtΔx​ ),现代雷达可以利用多普勒效应直接测量径向速度,但我的目的是解释卡尔曼滤波器而不是雷达操作。为了提高通用性,在我们的例子中,会一直用测量航程来推导飞行速度。

估计算法

下图描述了本例中使用的估计算法。


与上一个例子不同的是,这个例子给出了增益值 α\alphaα 和 β\betaβ。
在卡尔曼滤波中,会用卡尔曼增益来替代 α\alphaα 和 β\betaβ,而且每次迭代都会更新,这个后面会讲到。

实例

飞行器在一维空间中,正在径向远离雷达(或朝向雷达)飞行。
α\alphaα - β\betaβ 滤波的参数为:

  • α=0.2\alpha=0.2α=0.2
  • β=0.1\beta=0.1β=0.1

雷达每 555 秒探测一次。

注意:在这个例子中,为了得到便于理解的结果,我们使用的是非常不精确的雷达和低速无人机(UAV)。在现实生活中,雷达通常更精确,被追踪目标的速度也更快。

第零次迭代

初始化

在时间 n=0n=0n=0 时,初始条件如下:
x^0,0=30000m\hat{x}_{0,0}=30000mx^0,0​=30000mx˙^0,0=40m/s\hat{\dot{x}}_{0,0}=40m/sx˙^0,0​=40m/s

注:追踪初始化(Track Initiation)(如何获得初始条件)是一个非常重要的主题,稍后将讨论。现在我们的目标是了解基本的 α−βα−βα−β 滤波器操作,假设初始条件是由其他人给出的。

预测

用状态外推方程将初始猜测外推到第一个周期 (n=1)(n=1)(n=1):

航程的外推 x^n+1,n=x^n,n+Δtx˙^n,n\hat{x}_{n+1,n} = \hat{x}_{n,n} + \Delta t \hat{\dot{x}}_{n,n}x^n+1,n​=x^n,n​+Δtx˙^n,n​ :x^1,0=x^0,0+Δtx˙^0,0=30000+5×40=30200m\begin{aligned} \hat{x}_{1,0} &= \hat{x}_{0,0} + \Delta t \hat{\dot{x}}_{0,0} \\ &= 30000 + 5 \times 40 \\ &= 30200m \end{aligned} x^1,0​​=x^0,0​+Δtx˙^0,0​=30000+5×40=30200m​

速度的外推 x˙n+1=x˙n\dot{x}_{n+1} = \dot{x}_nx˙n+1​=x˙n​ :x˙1,0=x˙0,0=40m/s\begin{aligned} \dot{x}_{1,0} &= \dot{x}_{0,0} \\ &= 40m/s \end{aligned} x˙1,0​​=x˙0,0​=40m/s​

第一次迭代

在第一个周期 (n=1)(n=1)(n=1),初始的猜测是上一次的估计值:
x^n,n−1=x^1,0=30200m\hat{x}_{n,n-1} = \hat{x}_{1,0} = 30200mx^n,n−1​=x^1,0​=30200mx˙^n,n−1=x˙^1,0=40m/s\hat{\dot{x}}_{n,n-1}=\hat{\dot{x}}_{1,0}=40m/sx˙^n,n−1​=x˙^1,0​=40m/s

步骤1

测量。雷达测量飞行器的距离:z1=30110mz_1=30110mz1​=30110m

步骤2

更新。使用状态更新方程计算当前估计值。

航程状态更新:
x^1,1=x^1,0+α(z1−x^1,0)=30200+0.2(30110−30200)=30182m\begin{aligned} \hat{x}_{1,1} &= \hat{x}_{1,0} + \alpha \left( z_1 - \hat{x}_{1,0} \right) \\ &= 30200+0.2(30110-30200) \\ &= 30182m \end{aligned} x^1,1​​=x^1,0​+α(z1​−x^1,0​)=30200+0.2(30110−30200)=30182m​

速度状态更新:
x˙^1,1=x˙^1,0+β(z1−x^1,0Δt)=40+0.1(30110−302005)=38.2m/s\begin{aligned} \hat{\dot{x}}_{1,1} &= \hat{\dot{x}}_{1,0} + \beta \left( \dfrac{z_1-\hat{x}_{1,0}}{\Delta t} \right) \\ &= 40+0.1\left( \frac{30110-30200}{5} \right) \\ &= 38.2m/s \end{aligned} x˙^1,1​​=x˙^1,0​+β(Δtz1​−x^1,0​​)=40+0.1(530110−30200​)=38.2m/s​

步骤3

外推。使用状态外推方程计算下一次的状态预测值。

航程状态外推:x^2,1=x^1,1+Δtx˙^1,1=30182+5×38.2=30373m\begin{aligned} \hat{x}_{2,1} &= \hat{x}_{1,1} + \Delta t \hat{\dot{x}}_{1,1} \\ &= 30182+ 5 \times 38.2\\ &= 30373m \end{aligned} x^2,1​​=x^1,1​+Δtx˙^1,1​=30182+5×38.2=30373m​

速度状态外推:x˙^2,1=x˙^1,1=38.2m/s\hat{\dot{x}}_{2,1} = \hat{\dot{x}}_{1,1} = 38.2m/sx˙^2,1​=x˙^1,1​=38.2m/s

第二次迭代

一个周期后,上一次迭代的预测值变成当前迭代的先验估计值:x^2,1=30373mx˙^2,1=38.2m/s\begin{aligned} \hat{x}_{2,1} &= 30373m\\ \hat{\dot{x}}_{2,1} &= 38.2m/s \end{aligned} x^2,1​x˙^2,1​​=30373m=38.2m/s​

步骤1

测量。雷达测量飞行器的距离:z2=30265mz_2=30265mz2​=30265m

步骤2

更新。使用状态更新方程计算当前估计值。

航程状态更新:
x^2,2=x^2,1+α(z2−x^2,1)=30373+0.2(30265−30373)=30351.4m\begin{aligned} \hat{x}_{2,2} &= \hat{x}_{2,1} + \alpha \left( z_2 - \hat{x}_{2,1} \right) \\ &= 30373+0.2(30265-30373) \\ &= 30351.4m \end{aligned} x^2,2​​=x^2,1​+α(z2​−x^2,1​)=30373+0.2(30265−30373)=30351.4m​

速度状态更新:
x˙^2,2=x˙^2,1+β(z2−x^2,1Δt)=38.2+0.1(30265−303735)=36m/s\begin{aligned} \hat{\dot{x}}_{2,2} &= \hat{\dot{x}}_{2,1} + \beta \left( \dfrac{z_2-\hat{x}_{2,1}}{\Delta t} \right) \\ &= 38.2+0.1\left( \frac{30265-30373}{5} \right) \\ &= 36m/s \end{aligned} x˙^2,2​​=x˙^2,1​+β(Δtz2​−x^2,1​​)=38.2+0.1(530265−30373​)=36m/s​

步骤3

外推。使用状态外推方程计算下一次的状态预测值。

航程状态外推:x^3,2=x^2,2+Δtx˙^2,2=30351.4+5×36=30531.6m\begin{aligned} \hat{x}_{3,2} &= \hat{x}_{2,2} + \Delta t \hat{\dot{x}}_{2,2} \\ &= 30351.4+ 5 \times 36 \\ &= 30531.6m \end{aligned} x^3,2​​=x^2,2​+Δtx˙^2,2​=30351.4+5×36=30531.6m​

速度状态外推:x˙^3,2=x˙^2,2=36m/s\hat{\dot{x}}_{3,2} = \hat{\dot{x}}_{2,2} = 36m/sx˙^3,2​=x˙^2,2​=36m/s

第三次迭代
z3=30740z_3=30740z3​=30740x^3,3=30531.6+0.2(30740−30531.6)=30573.3m\hat{x}_{3,3}=30531.6+0.2(30740 −30531.6)=30573.3mx^3,3​=30531.6+0.2(30740−30531.6)=30573.3mx^˙3,3=36+0.1(30740−30531.65)=40.2m/s\dot{\hat{x}}_{3,3}=36+0.1\left( \frac{30740 −30531.6}{5} \right)=40.2m/sx^˙3,3​=36+0.1(530740−30531.6​)=40.2m/sx^4,3=30573.3+5×40.2=30774.3m\hat{x}_{4,3}=30573.3+5\times40.2=30774.3m x^4,3​=30573.3+5×40.2=30774.3mx˙^4,3=40.2m/s\hat{\dot{x}}_{4,3} = 40.2m/sx˙^4,3​=40.2m/s

第四次迭代
z4=30750z_4=30750z4​=30750x^4,4=30774.3+0.2(30750−30774.3)=30769.5m\hat{x}_{4,4}=30774.3+0.2(30750−30774.3)=30769.5mx^4,4​=30774.3+0.2(30750−30774.3)=30769.5mx^˙4,4=40.2+0.1(30750−30774.35)=39.7m/s\dot{\hat{x}}_{4,4}=40.2+0.1\left( \frac{30750−30774.3}{5} \right)=39.7m/sx^˙4,4​=40.2+0.1(530750−30774.3​)=39.7m/sx^5,4=30769.5+5×39.7=30968.1m\hat{x}_{5,4}=30769.5+5\times39.7=30968.1m x^5,4​=30769.5+5×39.7=30968.1mx˙^5,4=39.7m/s\hat{\dot{x}}_{5,4} = 39.7m/sx˙^5,4​=39.7m/s

第五次迭代
z5=31135z_5=31135z5​=31135x^5,5=30968.1+0.2(31135−30968.1)=31001.5m\hat{x}_{5,5}=30968.1+0.2(31135−30968.1)=31001.5mx^5,5​=30968.1+0.2(31135−30968.1)=31001.5mx^˙5,5=39.7+0.1(31135−30968.15)=43.1m/s\dot{\hat{x}}_{5,5}=39.7+0.1\left( \frac{31135−30968.1}{5} \right)=43.1m/sx^˙5,5​=39.7+0.1(531135−30968.1​)=43.1m/sx^6,5=31001.5+5×43.1=31216.8m\hat{x}_{6,5}=31001.5+5\times43.1=31216.8m x^6,5​=31001.5+5×43.1=31216.8mx˙^6,5=43.1m/s\hat{\dot{x}}_{6,5} = 43.1m/sx˙^6,5​=43.1m/s

第六次迭代
z6=31135z_6=31135z6​=31135x^6,6=31216.8+0.2(31015−31216.8)=31176.4m\hat{x}_{6,6}=31216.8+0.2(31015−31216.8)=31176.4mx^6,6​=31216.8+0.2(31015−31216.8)=31176.4mx^˙6,6=43.1+0.1(31015−31216.85)=39m/s\dot{\hat{x}}_{6,6}=43.1+0.1\left( \frac{31015−31216.8}{5} \right)=39m/sx^˙6,6​=43.1+0.1(531015−31216.8​)=39m/sx^7,6=31176.4+5×39=31371.5m\hat{x}_{7,6}=31176.4+5\times39=31371.5m x^7,6​=31176.4+5×39=31371.5mx˙^7,6=39m/s\hat{\dot{x}}_{7,6} = 39m/sx˙^7,6​=39m/s

第七次迭代
z7=31180z_7=31180z7​=31180x^7,7=31371.5+0.2(31180−31371.5)=31333.2m\hat{x}_{7,7}=31371.5+0.2(31180−31371.5)=31333.2mx^7,7​=31371.5+0.2(31180−31371.5)=31333.2mx^˙7,7=39+0.1(31180−31371.55)=35.2m/s\dot{\hat{x}}_{7,7}=39+0.1\left( \frac{31180−31371.5}{5} \right)=35.2m/sx^˙7,7​=39+0.1(531180−31371.5​)=35.2m/sx^8,7=31333.2+5×35.2=31509.2m\hat{x}_{8,7}=31333.2+5\times35.2=31509.2m x^8,7​=31333.2+5×35.2=31509.2mx˙^8,7=35.2m/s\hat{\dot{x}}_{8,7} = 35.2m/sx˙^8,7​=35.2m/s

第八次迭代
z8=31180z_8=31180z8​=31180x^8,8=31509.2+0.2(31610−31509.2)=31529.4m\hat{x}_{8,8}=31509.2+0.2(31610−31509.2)=31529.4mx^8,8​=31509.2+0.2(31610−31509.2)=31529.4mx^˙8,8=35.2+0.1(31610−31509.25)=37.2m/s\dot{\hat{x}}_{8,8}=35.2+0.1\left( \frac{31610−31509.2}{5} \right)=37.2m/sx^˙8,8​=35.2+0.1(531610−31509.2​)=37.2m/sx^9,8=31529.4+5×37.2=31715.4m\hat{x}_{9,8}=31529.4+5\times37.2=31715.4m x^9,8​=31529.4+5×37.2=31715.4mx˙^9,8=37.2m/s\hat{\dot{x}}_{9,8} = 37.2m/sx˙^9,8​=37.2m/s

第九次迭代
z9=31960z_9=31960z9​=31960x^9,9=31715.4+0.2(31960−31715.4)=31764.3m\hat{x}_{9,9}=31715.4+0.2(31960−31715.4)=31764.3mx^9,9​=31715.4+0.2(31960−31715.4)=31764.3mx^˙9,9=37.2+0.1(31960−31715.45)=42.1m/s\dot{\hat{x}}_{9,9}=37.2+0.1\left( \frac{31960−31715.4}{5} \right)=42.1m/sx^˙9,9​=37.2+0.1(531960−31715.4​)=42.1m/sx^10,9=31764.3+5×42.1=31974.8m\hat{x}_{10,9}=31764.3+5\times42.1=31974.8m x^10,9​=31764.3+5×42.1=31974.8mx˙^10,9=42.1m/s\hat{\dot{x}}_{10,9} = 42.1m/sx˙^10,9​=42.1m/s

第十次迭代
z10=31865z_{10}=31865z10​=31865x^10,10=31974.8+0.2(31865−31974.8)=31952.9m\hat{x}_{10,10}=31974.8+0.2(31865−31974.8)=31952.9mx^10,10​=31974.8+0.2(31865−31974.8)=31952.9mx^˙10,10=42.1+0.1(31865−31974.85)=39.9m/s\dot{\hat{x}}_{10,10}=42.1+0.1\left( \frac{31865−31974.8}{5} \right)=39.9m/sx^˙10,10​=42.1+0.1(531865−31974.8​)=39.9m/sx^11,10=31952.9+5×39.9=32152.4m\hat{x}_{11,10}=31952.9+5\times39.9=32152.4m x^11,10​=31952.9+5×39.9=32152.4mx˙^11,10=39.9m/s\hat{\dot{x}}_{11,10} = 39.9m/sx˙^11,10​=39.9m/s

下表总结了我们的测量和估计:

nnn 1 2 3 4 5 6 7 8 9 10
znz_nzn​ 30110 30265 30740 30750 31135 31015 31180 31610 31960 31865
x^n,n\hat{x}_{n,n}x^n,n​ 30182 30351.4 30573.3 30769.5 31001.5 31176.4 31333.2 31529.4 31764.3 31952.9
x˙^n,n\hat{\dot{x}}_{n,n}x˙^n,n​ 38.2 36 40.2 39.7 43.1 39 35.2 37.2 42.1 39.9
x^n+1,n\hat{x}_{n+1,n}x^n+1,n​ 30373 30531.6 30774.3 30968.1 31216.8 31371.5 31509.2 31715.4 31974.8 32152.4
x˙^n+1,n\hat{\dot{x}}_{n+1,n}x˙^n+1,n​ 38.2 36.0 40.2 39.7 43.1 39 35.2 37.2 42.1 39.9

下表比较了真实值、测量值和估计值:

可以看到估计算法对估计结果有平滑作用,并且估计结果趋近真实值。

使用高 α\alphaα 和 β\betaβ

下图描述了 α=0.8,β=0.5\alpha=0.8,\beta=0.5α=0.8,β=0.5 的真实值、测量值和估计值:

这个滤波器的“平滑度”要低得多,“当前估计值”与测量值非常接近,预测误差较大。

那么我们应该一直选择低 α\alphaα 和 β\betaβ 吗?
答案是否定的。 α\alphaα 和 β\betaβ 的值取决于测量精度。

  • 如果我们使用非常精准的设备,比如激光雷达,我们会倾向 α\alphaα 和 β\betaβ ,测量值权重更高,在这种情况下,滤波器会对目标的速度变化作出快速响应。
  • 反之,如果测量精度较低,我们会选择较 α\alphaα 和 β\betaβ ,在这种情况下,滤波器将降低测量中的不确定性(误差),然而,滤波器对目标速度变化的反应会慢得多。

α\alphaα 和 β\betaβ 的计算是一个重要的课题,稍后会进行更详细的讲解。

案例总结

在这个例子中,我们推导了 α\alphaα 和 β\betaβ 滤波器状态更新方程,还学习了状态外推方程。并且设计了一种基于 α\alphaα 和 β\betaβ 滤波器的一维动态系统估计算法,求解了匀速目标的一个数值案例。

卡尔曼滤波器(3) -- α−β−γ滤波器(例2)相关推荐

  1. 卡尔曼滤波器(2) -- α−β−γ滤波器(例1)

    This blog is translated from https://www.kalmanfilter.net/default.aspx. It's an excellent tutorial a ...

  2. 卡尔曼滤波器(4) -- α−β−γ滤波器(例3例4总结)

    This blog is translated from https://www.kalmanfilter.net/default.aspx. It's an excellent tutorial a ...

  3. 有源滤波器——Salley滤波器

    此文提供关于Salley-Key有源滤波器计算参考,仅作参考,请谨慎处理,如果问题请大家指摘. 有源滤波器 有源滤波器一般不适用体积大.价格高的低频线圈L,而是由RC和放大电路网络构成滤波器.其中的放 ...

  4. Pytorch----卷积神经网络(CNN,图像边缘检测 , Sobel滤波器 , Scharr滤波器)--入门级小实例(逐行注释)---学习笔记

    题目:对任意图片进行简单卷积操作,并提取图片的边缘信息 文章目录 小练习~卷积实例 小练习~边缘特征提取实例 关于边缘检测的原理 Sobel滤波器 Scharr滤波器 本次使用图片: 小练习~卷积实例 ...

  5. [运放滤波器]5_滤波器的分类

    [运放滤波器]4_积分微分电路 [动态系统的建模与分析]15_伯德图,bode图,为什么是20logM?分贝又是什么? [动态系统的建模与分析]9_一阶系统的频率响应_低通滤波器 [动态系统的建模与分 ...

  6. [就酱的新征程]数字处理仿真与应用实验二:模拟低通 Butterworth 滤波器 IIR 滤波器(Matlab)

    @数字处理仿真与应用实验二:模拟低通 Butterworth 滤波器 IIR 滤波器(Matlab) 这学期数字处理仿真与应用实验的记录 不多说,进入正题吧~ 实验要求 利用模拟滤波器原型设计 IIR ...

  7. 线性滤波器非线性滤波器

    前言 采用线性滤波和非线性滤波是在空间域上处理图像最常用的滤波方法.matlab在处理图像滤波方面拥有可调用的函数,十分便利.我们可以根据自己的需要自行选择滤波方式对图像进行滤波.值得一提的是,图像锐 ...

  8. opencv图像处理中的一些滤波器+利用滤波器提取条形码(解析二维码)+公交卡倾斜矫正+物体尺寸丈量

    一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时图像中的细节信息也主要集中在其高频部分,因此,如何去掉高频干扰同时又保持细节信息是关键.为了去除噪声,有必要对图像进行平滑,可 ...

  9. 滤波器原理及其作用计算机网络,什么是滤波器?滤波器原理及其作用是什么?...

    波形滤波器表示呈现和/或捕获波形格式的数字音频数据的设备.应用程序通常通过DirectSound API或Microsoft Windows多媒体waveOut Xxx和waveIn Xxx函数来访问 ...

最新文章

  1. HarmonyOS Unknown HarmonyOS XML attribute
  2. eeglab中文教程系列(11)-使用ICA分解数据
  3. Java 装饰器模式详解
  4. 后勤管理系统_教育信息化2.0,2019年校园智慧后勤管理系统五大品牌
  5. 前端开发知识点解答-问题-面试问题
  6. C++ 面向对象与面向过程的区别与联系
  7. Hadoop HIVE 创建表
  8. python闭包小例子
  9. 为什么git的“ pull request”不称为“ push request”?
  10. C++高级进阶教程之STL 教程
  11. 调用新浪微博显示用户信息
  12. 重载,重写(覆盖)和隐藏的区别
  13. python对象转为字符串
  14. 使用的设备标识号已超出本地系统范围 VMware Workstation
  15. 【深度学习】cs224n 自然语言处理
  16. 奔图3305_奔图Pantum P3305DN打印机驱动官方版
  17. 如何在CentOS 7上安装Elasticsearch,Logstash和Kibana(ELK堆栈)
  18. 【融职教育】Web全栈开发就业班核心优势
  19. 清华大学用6个无线传感器搞定全身动作捕捉,可跑可跳可打滚
  20. Windows10系统安装Oracle 11gR2

热门文章

  1. python educoder 第3关:列表基本操作
  2. 中职生计算机应用基础随堂练,计算机应用基础随堂练习.doc
  3. pdf怎么压缩的小一点?pdf压缩大小如何压缩?
  4. [答疑]调拨资金,需要双方账号。那么设置账号的用例,属于调拨资金用例的扩展么
  5. kconfig常用语法,入门必看
  6. 魅族手机使用鸿蒙系统,魅族正式宣布接入鸿蒙系统
  7. IDEA查询控制台打印的历史数据
  8. 小学计算机课都不上,小学信息技术教学中存在的问题及解决对策
  9. 管理自己[Managing Oneself]
  10. Unity火炬之光进度