分享
卡尔曼滤波器(Kalman Filter)
输入“/”快速插入内容
卡尔曼滤波器(Kalman Filter)
递归
算法
卡尔曼滤波器是最优化递归的数字处理
算法
,卡尔曼滤波的一个典型实例是从一组有限的,包含噪声的,对物体位置的观察序列(可能有偏差)预测出物体的位置的坐标及速度。在很多工程应用(如雷达、
计算机视觉
)中都可以找到它的身影。
同时,卡尔曼滤波也是控制理论以及控制系统工程中的一个重要课题。例如,对于雷达来说,人们感兴趣的是其能够跟踪目标。但目标的位置、速度、加速度的测量值往往在任何时候都有噪声。卡尔曼滤波利用目标的动态信息,设法去掉噪声的影响,得到一个关于目标位置的好的估计。这个估计可以是对当前目标位置的估计(滤波),也可以是对于将来位置的估计(预测),也可以是对过去位置的估计(插值或平滑)。
❤️
由于生活的世界中存在着大量不确定性,当我们描述一个系统时,不确定性主要表现在以下三个方面:
•
不存在完美的数学模型。
•
系统扰动不可控,也很难建模。
•
测量传感器存在误差。
我们经常使用的利用平均值估计真实值的方法也是一个递归
算法
,这里考虑一个不同人测量硬币直径的例子,用
表示第k次的测量结果,
估计硬币的真实值即求多次测量的平均值,这里用
表示估计值
由此便可以得到
,对该式子进行分析,可以很容易看出当
增加,
。这时
,也就是说随着k的增加,测量的结果对估计值的影响不再重要。
令
转换为
,上述公式就可以写为:
即为当前估计值=上一次的估计值+系数x(当前测量值-上一次的测量值),这里的
便是增益系数。通过此公式可以很容易的看出新的估计值与上一次的估计值有关,上一次的估计值与上上次的有关,这就是一种递归的思想。
数据融合(Data Fusion)
这里考虑一个测量物体重量的例子,分别用两个称秤同一个物体的重量,得到两个结果分别是
测量结果
标准差
这里的测量误差都符合正态分布,利用这两个结果来估算真实值,通过上一节所讲到的公式有
那么如何求解合适的
,使得
的方差最小呢?首先将
的误差进行公式表达
对
的方差进行求导,找到合适的
使得估计值的方差最小
可得
,现在可以对真实值进行一个比较准确的预测,预测结果为
,相应的方差为
。
卡尔曼增益(Kalman Gain)
首先我们通过状态空间方程来描述一个系统的响应,
其中
为状态变量,
为状态矩阵,
为控制矩阵,
是控制的输入,
是过程噪声(不可测的)。这里我们一般假设噪声符合正态分布
,
为协方差矩阵。同样的
是测量噪声,符合正态分布
。
我们根据状态空间方程对状态的先验估计值为
。通过测量方程
,可得到测量的状态变量
。但是算出的估计值与测出的估计值都不具备噪声项,因此得出的结果都是不准确的,而卡尔曼滤波器的作用就是通过两个不太准确的结果得出一个准确的结果。
根据上节的数据融合概念进行后验估计
,现在我们的目标就是寻找一个合适的
(Kalam Gain),使得误差最小,即使
。
现在我们来对误差进行量化,引入误差
,
其中
,
,误差的方差越小,便意味着估计值与实际值越接近,因此我们寻找合适的
使得
最小。迹(trace)