卡尔曼看波不滤波
0.前言
读研究生时,不知听谁说过:研究滤波算法毕业足够了。这句话足够证明滤波算法在控制领域扮演着一个重要的角色,因为如果一个优秀的滤波算法得到应用,即使pid算法的控制性能也能吊打很多当前热门的如mpc、滑膜、反步法、深度学习等智能控制算法。什么是卡尔曼滤波算法,它作用是啥,应用领域是啥,它的优缺点是啥,限制条件是啥,发展瓶颈是啥,当前的研究焦点是啥,接下来请各位读者与我一起进入卡尔曼的其妙世界去探索答案吧…
1. 感性认识卡尔曼滤波
(1)有一辆小车,在一个水平轴上向右行驶,它的初始位置我是用脚测量的,非常不准,但我能确定这个位置在一个高斯分布的范围内,如图:
(2)此外,我还可以用眼睛大概看出来小车的速度,现在我就可以根据我刚刚用脚测得的位置和我目测的速度,大概估计下一秒它的位置,它大概运动到了这个位置:
(3)这个估计的新位置,也服从高斯分布,但方差变大了,因为这是我估计出来的位置,脚测量和眼睛测量的误差叠加在一起所以导致我估计的这个位置的精度更加不准确,所以它是一个更加“肥胖”的高斯分布,但没关系,我再用脚测量一下当前的新位置用来修正我估计得到的新位置:
(4)黄色的是我估计的位置分布,蓝色的是我此时用脚重新测量的位置分布,那小车真实的位置在哪里呢?不知道,我永远不会知道,但是我可以同时相信这两个位置分布,然后估计出一个最优的位置分布,这里蓝色的高斯分布更加瘦,所以就更加值得我信赖,所以我会信它更多一点,那我们最终确定小车的位置就在这里:
(5)图中绿色的部分就是我现在能信任的最准确的小车的位置,它是由我估计出来和测量出来的值共同估计出的,也就是卡尔曼滤波的输出值,而下一步我会根据这个最优估计值进行估计,然后再用脚测量一次,然后根据两个值的“可信赖度”去决定我信谁更加多一点,然后估计出一个最优估计值,那你就会问了,我怎么知道我该信谁多少呢?具体要信多大的量呢?这也就是卡尔曼最tm牛逼的地方,他给出了卡尔曼增益,告诉了大家每次估计完成之后应该更偏向于哪个值具体多少。
2.摘要
优点:?
缺点:?
应用场景:?
限制条件:?
卡尔曼滤波的使用条件主要包括以下几点:
线性系统:卡尔曼滤波适用于线性系统。如果系统不是线性的,可以使用扩展卡尔曼滤波(EKF)来线性化系统,但这种方法可能会引入高阶误差。
高斯白噪声:系统噪声必须符合高斯白噪声的假设。这意味着噪声的统计特性应该是已知的,且噪声之间不相关。
卡尔曼滤波的基本原理:它利用线性系统状态方程和观测数据,通过系统输入输出观测数据,对系统状态进行最优估计。由于观测数据中包含噪声和干扰,卡尔曼滤波通过最小化估计误差来提供最优估计。
应用领域:卡尔曼滤波在通信、导航、制导与控制等多个领域得到了广泛应用,因为它能够实时处理和更新现场采集的数据,并且便于计算机编程实现。
衍生算法:扩展卡尔曼…
本质:测量值(传感器)+ 预测值(被控对象数学模型)····> 真实值
3. 理论储备
一些概念
-
样本空间
在某个随机事件中,所有可能结果的集合称为样本空间。 -
样本点
样本空间中的元素称为样本点。 -
例如,对于抛掷硬币试验,样本空间 = { 正面,反面 },正面就是此样本空间的一个样本点。
-
随机变量
随机变量是样本空间的数学表达;
随机变量是样本空间的数字空间映射;
可以说随机变量就是数学化的样本空间;
这样做的目的是方便引入高等数学的方法来研究随机现象。可以说,随机变量是“数值化”的实验结果。 将样本空间中的每一个可能的试验结果关联到一个特定的数,这种试验结果与数的对应关系就形成了 随机变量。
-
离散随机变量、连续随机变量
例如抛掷硬币事件,样本空间 = { 正面,反面 },可以用离散随机变量表示该样本空间: X = x 1 , x 2 X={x_1, x_2} X=x1,x2。
例如测量中国人体重事件,样本空间是一个连续的实数空间,可以用连续随机变量表示该样本空间: x 1 < X < x 2 x_1<X<x_2 x1<X<x2。 -
频率与概率
伯努利认为,在试验不变的条件下,重复试验多次,随机事件的频率近似于它的概率,这就是大名鼎鼎的 “大数定律”。
例如离散随机变量 X X X, X X X的取值范围是 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3;
P ( X = x 1 ) P(X=x_1) P(X=x1)表示 X = x 1 X=x_1 X=x1的概率,即:在试验中,事件 x 1 x_1 x1发生的概率。 -
概率函数
描述随机变量取值可能性大小的一种数学函数,函数表示随机事件发生的概率。
以下是几种常见的概率函数类型:- 概率质量函数(Probability Mass Function, PMF)
用于离散随机变量;
表示随机变量取特定值的概率;
记为 P ( X = x ) P(X=x) P(X=x),其中 X X X 是随机变量, x x x 是其可能取值。
例子:在掷一枚公平骰子的情况下,随机变量 X 可以取值 1,2,3,4,5,6,每个值出现的概率都是1/6。 - 概率密度函数(Probability Density Function, PDF)
用于连续随机变量;
与离散随机变量的PMF不同,连续随机变量取特定值的概率通常为0,概率密度函数给出的是随机变量在特定范围内的概率密度。
记为 f ( x ) f(x) f(x),对于连续随机变量 X,其在区间 [a,b] 内取值的概率可以通过积分计算: P ( a ≤ X ≤ b ) = ∫ a b f ( x ) d x P(a≤X≤b)=\int_a^b f(x) dx P(a≤X≤b)=∫abf(x)dx,例如正态分布。 - 累积分布函数(Cumulative Distribution Function, CDF):
无论是离散随机变量还是连续随机变量,CDF都适用。
CDF表示随机变量取值小于或等于特定值的概率。
记为 F ( x ) F(x) F(x),定义为 F ( x ) = P ( X ≤ x ) F(x)=P(X≤x) F(x)=P(X≤x)。对于离散随机变量,CDF是PMF的累积和;对于连续随机变量,CDF是PDF的积分。
- 概率质量函数(Probability Mass Function, PMF)
-
概率函数在统计学、概率论、机器学习、数据分析等领域有着广泛的应用,是理解和分析随机现象的基础工具。
-
随机变量的统计特征和度量方法:期望、方差
期望和方差是描述随机变量特性的两个基本统计量。期望提供了随机变量的平均水平,而方差则反映了随机变量的波动程度。 -
期望(Expectation)
期望是个常数!
期望,也称为数学期望或均值,是随机变量所有可能取值的加权平均,其中权重是各个取值出现的概率。-
离散型随机变量的期望:
如果随机变量 X X X 可以取值为 x 1 , x 2 , … , x n x_1, x_2, \ldots, x_n x1,x2,…,xn,且对应的概率为 p 1 , p 2 , … , p n p_1, p_2, \ldots, p_n p1,p2,…,pn,则 X X X 的期望 E ( X ) E(X) E(X) 定义为:
E ( X ) = ∑ i = 1 n x i p i E(X) = \sum_{i=1}^{n} x_i p_i E(X)=∑i=1nxipi -
连续型随机变量的期望:
如果随机变量 X X X 有概率密度函数 f ( x ) f(x) f(x),则 X X X 的期望 E ( X ) E(X) E(X) 定义为:
E ( X ) = ∫ − ∞ ∞ x f ( x ) d x E(X) = \int_{-\infty}^{\infty} x f(x) \, dx E(X)=∫−∞∞xf(x)dx
期望反映了随机变量的“平均”水平或“中心”位置,是描述随机变量特性的一个重要指标。
-
-
方差(Variance)
方差也是个常数!,方差是一个特殊随机变量的期望,是随机变量 ( X − E ( X ) ) 2 (X - E(X))^2 (X−E(X))2的期望值!
方差用于衡量随机变量与其期望之间的离散程度,即随机变量取值的波动大小。方差是各个取值与期望之差的平方的期望(或平均值)。- 离散型随机变量的方差:
如果随机变量 X X X 的期望为 E ( X ) E(X) E(X),则 X X X 的方差 V a r ( X ) Var(X) Var(X) 定义为:
V a r ( X ) = E [ ( X − E ( X ) ) 2 ] = ∑ i = 1 n [ x i − E ( X ) ] 2 p i Var(X) = E[(X - E(X))^2] = \sum_{i=1}^{n} [x_i - E(X)]^2 p_i Var(X)=E[(X−E(X))2]=∑i=1n[xi−E(X)]2pi - 连续型随机变量的方差:
如果随机变量 X X X 有概率密度函数 f ( x ) f(x) f(x),且期望为 E ( X ) E(X) E(X),则 X X X 的方差 V a r ( X ) Var(X) Var(X) 定义为:
V a r ( X ) = ∫ − ∞ ∞ [ x − E ( X ) ] 2 f ( x ) d x Var(X) = \int_{-\infty}^{\infty} [x - E(X)]^2 f(x) \, dx Var(X)=∫−∞∞[x−E(X)]2f(x)dx
方差的值总是非负的,且方差越大,说明随机变量的取值越分散;方差越小,说明随机变量的取值越集中。
- 离散型随机变量的方差:
-
离散分布
-
连续分布
概率密度函数:
某正态分布(高斯分布)的概率密度函数曲线:
一些结论
在概率统计学中:
- 期望是个常数!
- 方差也是个常数!因为方差是随机变量 ( X − E ( X ) ) 2 (X - E(X))^2 (X−E(X))2的期望!
- 期望是随机变量的平均数,方差用于衡量随机变量与其期望之间的离散程度。
- 一维方差、二维协方差、多维协方差:
方差 (Variance): 衡量单个随机变量围绕其自身均值的离散程度。它就是 X 与 X 自身的协方差,即 Var(X) = Cov(X, X)。
协方差 (Covariance): 衡量两个随机变量 X 和 Y 之间线性关系的方向和强度。它表示两个变量如何共同变化。
正相关:如果 X 和 Y 倾向于同时大于或小于各自的均值(正相关),这些乘积大多是正数,累加后得到正的协方差。
负相关:如果当一个变量大于其均值时,另一个变量倾向于小于其均值(负相关),这些乘积大多是负数,累加后得到负的协方差。
无关:如果两个变量的变化没有明显的关联(不相关),正负乘积会相互抵消,协方差接近零。
协方差矩阵的意义:
对角线是方差,非对角线是元素间的相关性,越大相关度越大! - 方差:var
协方差:cov
var(x) == cov(x,x) - 正态分布
期望 μ \mu μ
方差 σ 2 \sigma^2 σ2
条件
高斯分布
线性系统
把系统状态量定义为随机变量
系统状态量满足高斯分布
在EK理论中:
(1)在k时刻,某传感器的测量结果就是一个随机事件,测得的所有可能结果就是样本空间!
(2)在k时刻,通过系统状态空间方程得到的系统状态预测值也是随机变量,因为过程噪声满足正态分布。
超参数?
如何调节参数?
4. KF推导
我们永远无法得到真实值
我们无法得到任何物理量的绝对真实值,因为:
-
测量工具的精度限制
任何测量工具都存在一定的精度范围,即其能够准确测量的最小单位或误差范围。这意味着,即使是最精密的测量工具,也无法保证测量结果完全等同于被测量对象的真实值。 -
测量过程中的不确定性
测量过程中总会存在各种不确定性因素,如环境条件的微小变化、测量者的操作差异、测量工具的稳定性等。这些因素都会导致测量结果与实际真实值之间存在一定的偏差。 -
被测对象的复杂性
许多被测对象本身具有复杂的结构和特性,这使得对其进行精确测量变得尤为困难。例如,对于微观粒子或高速运动的物体,传统的测量方法可能无法准确捕捉其真实状态。 -
理论模型的局限性
我们用于解释和预测测量结果的理论模型往往存在一定的局限性。这些模型可能无法完全反映被测对象的真实情况,或者在某些特定条件下失效。因此,基于这些模型得出的测量结果也可能与实际真实值存在偏差。 -
真实值的定义问题
“真实值”本身是一个相对模糊的概念。在哲学和物理学等领域,关于真实值的定义和存在性一直存在争议。一些人认为,真实值可能是一个无法准确达到的理想状态,而我们只能无限接近它。 -
观测者的主观性
在某些情况下,测量结果的解读和记录可能受到观测者主观因素的影响。例如,在视觉测量中,观测者的视觉差异和判断标准可能导致测量结果的不同。 -
测量系统的非线性
许多测量系统是非线性的,这意味着它们对输入信号的处理和响应不是简单的线性关系。这种非线性可能导致测量结果的失真或偏差。
综上所述,由于测量工具的精度限制、测量过程中的不确定性、被测对象的复杂性、理论模型的局限性、真实值的定义问题、观测者的主观性以及测量系统的非线性等多重因素的影响,我们无法得到任何度量的绝对真实值。然而,通过不断改进测量工具和方法、提高测量精度和可靠性、以及深入研究和理解被测对象的特性和行为规律,我们可以逐步逼近真实值,为科学研究和技术应用提供更为准确和可靠的数据支持。
目的和意义
记“研究对象”的状态向量为 x \boldsymbol x x。
记“研究对象”的输出向量为 y \boldsymbol y y。
研究对象:控制系统、目标跟踪系统等。
最初目的:在传感器噪声和系统模型不确定性的双重干扰下,我们无法获得 x \boldsymbol x x 的真实值 x ∗ \boldsymbol x^* x∗。
退而求其次:寻求 x \boldsymbol x x 的最优估计值 x ^ \hat {\boldsymbol x} x^, x ^ → 无限逼近 x ∗ \hat {\boldsymbol x } \xrightarrow{无限逼近} \boldsymbol x^* x^无限逼近x∗。
卡尔曼滤波利用概率统计工具解决了含噪声动态系统的最优状态估计问题:
- 用传感器数据来修正先验估计,得到最优估计!即噪声环境下的状态复原。
均方误差最小化准则。
后验估计 ∝ 先验估计 × 观测似然
- 实现多传感器数据融合,实现"1+1>2"的感知增强效果。
融合结果 = f(IMU动态模型, GPS位置观测, 视觉特征...)
因为我们始终无法通过测量手段或理论模型来获得“研究对象”状态向量 x \boldsymbol x x的真实值 x ∗ \boldsymbol x^* x∗,所以我们可以把这种“不确定性”或“不可预测性”的物理量当作随机变量来研究,即通过概率论进行量化和研究“不确定性”问题。
预测模型(过程模型)
本质:理论模型、数学模型、机理建模。
“研究对象”的预测模型,一般用离散状态空间表达式表示:
{ 过程模型: x k = A x k − 1 + B u k − 1 + w k 观测模型: y k = C x k \begin{equation} \begin{cases} 过程模型: x_k=Ax_{k-1}+Bu_{k-1}+w_k\\ 观测模型: y_k=Cx_k\\ \end{cases} \end{equation} {
过程模型:xk=Axk−1+Buk−1+wk观测模型:yk=Cxk
其中:
- w k w_k wk是过程噪声,如系统内扰动、系统未知模型等。
- 先决条件:过程噪声 w k w_k wk的统计特性必须是已知的。例如 w k w_k wk服从高斯分布,那么 w k ~ N ( 0 , δ 2 ) w_k \text{\textasciitilde} N(0,\delta^2) wk~N(0,δ2)。
- x k x_k xk是系统状态向量。
- u k u_k uk是控制向量。
- y k y_k yk是观测向量(与传感器数据维度对应),或称输出向量。
- A A A是状态转移矩阵, B B B是控制矩阵, C C C是输出矩阵(观测矩阵)。
- 下标 k k k 表示 k k k 时刻。
扩展卡尔曼滤波的预测模型只需将非线性模型在k时刻进行线性化(雅可比矩阵,求偏导)即可得到:
{ x ˙ = g ( x , u ) + w → x k = x k − 1 + g ( x k − 1 , u k − 1 ) Δ t + w Δ t 离散化 x k = f ( x k − 1 , u k − 1 ) + w k y = h ( x ) → 离散化 y k = h ( x k ) 线性化 ( 求雅可比矩阵、求偏导 ) : A = ∂ f ∂ x = I + ∂ g ∂ x Δ t , B = ∂ f ∂ u , C = ∂ h ∂ x \begin{equation} \begin{cases} \dot x=g(x,u)+w \xrightarrow[x_k=x_{k-1}+g(x_{k-1},u_{k-1}) \Delta t+w \Delta t]{离散化} x_k=f(x_{k-1},u_{k-1})+w_k\\[3mm] y=h(x) \xrightarrow{离散化} y_k=h(x_k)\\[3mm] 线性化(求雅可比矩阵、求偏导):A=\frac{\partial f}{\partial x}=I+\frac{\partial g}{\partial x}\Delta t,B=\frac{\partial f}{\partial u},C=\frac{\partial h}{\partial x} \end{cases} \end{equation} ⎩
⎨
⎧<