看过很多关于卡尔曼滤波的资料,发现很多资料写的都很晦涩,初学者很难看懂。在网上找了很多资料之后,发现了 这篇博文 讲的非常清晰易懂,特此翻译记录,以备后用。为保证翻译的原滋原味,以下均用第一人称表述。
我不得不说一说卡尔曼滤波,因为它能做到的事情简直令人惊叹。
很可惜的是,很少有软件工程师和科学家对此有深入了解。这让我感到很沮丧,因为卡尔曼滤波是如此通用且强大的工具,它能在不确定情况下 组合信息 。有时,它提取准确信息的能力似乎几乎是不可思议的。如果听起来我讲的太多了,那么请看一下之前 发布的视频 ,其中演示了一个利用卡尔曼滤波观察自由浮动物体的速度来确定它的方向。真棒!
你可以在任何含有 不确定信息 的动态系统中的使用卡尔曼滤波,对系统的下一步动作做出 有根据的猜测 。即使伴随着各种干扰,卡尔曼滤波总是能指出真实世界发生的情况。它可以利用怪异现象之间的关联,你可能不会想到利用这些关联!
卡尔曼滤波对于持续变化的系统是理想的选择。由于卡尔曼滤波除了记忆前一个状态而不需要保留其他的历史记忆信息,因此卡尔曼滤波具有轻量化的特点,运行速度非常快,非常适合处理实时的问题和嵌入式系统。
你在Google上找到的大部分关于卡尔曼滤波的数学描述是晦涩难懂的。那是非常糟糕的状况!因为卡尔曼滤波能被简单和容易的方式所理解的。因此,本文是一个非常不错的文章主题,本文将尝试用许多清晰、美观的图片来阐明它。 本文的前提很简单,你仅仅需要对概率和矩阵有基本的了解。
本文将从一个简单的例子开始,说明卡尔曼滤波可以解决的问题。但如果你想直接接触精美的图片和数学,请随时跳转。
举一个简单的小例子:你已经做了一个能在丛林中游走的小机器人,为确保其能导航,机器人需要知道它所在的位置。
我们的机器人也有GPS传感器,精确大约10米,但它需要更精确地知道自己的位置。在树林中有很多沟壑和悬崖,如果机器人的误差超过几英尺,它可能会从悬崖上掉下去。所以仅依赖GPS进行定位是远远不够的。
我们可能还知道机器人是如何移动的:机器人知道发送给车轮马达的指令,如果它朝一个方向前进,没有任何干扰,下一刻它可能会继续朝同一方向前进。当然,它对自己的运动并不完全了解:它可能会受到风的冲击,车轮可能会打滑,或者在崎岖不平的地形上滚动;所以轮子转动的数量可能不能准确地代表机器人实际行走了多远,这个预测也不会完全准确。
GPS 传感器 告诉我们一些关于状态的信息,但只是间接的,带有一些不确定性而且并不精准。我们的 预测 告诉了机器人是如何移动的,但只是间接的,并且也是不确定和不精准的。
但是,如果我们利用所有可用的信息,我们能得到一个比这两个估计本身更好的答案吗?当然,答案是肯定的,这就是卡尔曼滤波器的作用。
让我们来看看我们想要诠释的一个场景。我们继续上一个例子,机器人仅仅包含一个位置和速度的简单状态。
更有趣的是下面的例子:位置和速度是呈 相关性 的。观察特定位置的可能性取决于你的速度:
这种关系非常重要,因为它给我们提供了更多的信息:一个测量值告诉我们其他测量值可能是什么。我们要尽可能多地从不确定的目标中压缩卡尔曼滤波器的信息!
这种相关性被称为 协方差矩阵 。简而言之,矩阵的每个元素
我们基于高斯分布来建立状态变量,所以在时间
接下来,我们需要某种方式来知道目前状态(时刻
对于上述所有的数学公式,你仅仅需要实现公式(7)、(18)和(19)。(如果你忘记了上述公式,你也能从公式(4)和(5)重新推导。)
这将允许你精确地建模任何线性系统。对于非线性系统,需要用到 扩展卡尔曼滤波 ,区别在于EKF多了一个把预测和测量部分进行线性化的过程。
一文轻松搞懂卡尔曼滤波(Kalman Filter)
卡尔曼滤波是一种递归算法,它在时刻k对z进行测量时,通过公式[公式]更新估计值。随着观测数据增多,测量值的影响力逐渐减弱,而依赖于先前估计值的系数[公式]则逐渐增强。核心公式是[公式],描述了当前估计值如何结合新的观测值和上一时刻的估计。滤波过程涉及两种误差:估计误差[公式]和测量误差[公式]。
卡尔曼滤波与IIR滤波区别
1. 工作原理: - 卡尔曼滤波是一种最优估计滤波方法,通过对系统状态的动态建模和测量数据的融合来估计未知量。它利用状态方程和观测方程,通过递归迭代的方式来估计真实状态,并通过方差最小化准则来估计状态和其不确定性。- IIR滤波是一种数字滤波器,通过对输入信号进行加权平均来得到输出信号。它基于...
卡尔曼滤波器 KalmanFilter
在处理各种信号处理问题时,一种常用的工具是卡尔曼滤波器(KalmanFilter)。它巧妙地利用了一个基本假设,即噪声在实际应用中通常遵循正态分布的特性,有效地进行噪声的削弱和信号的精确估计。在卡尔曼滤波器的运作中,有两个关键参数不可或缺:首先,R(均方误差协方差矩阵)的值为0.0003,这个参数决定...
卡尔曼滤波(Kalman filter) 含详细数学推导
卡尔曼滤波器是一种状态估计器,它通过融合传感器和信息来提升系统精度。在观测系统状态时,通常有两种方法:一种是通过状态转移方程,结合上一时刻的状态预测下一时刻的状态;另一种是借助辅助系统(如量测系统)的测量来获取系统状态。这两种方法都存在不确定性,卡尔曼滤波通过加权平均这两种方法,使估计...
无迹卡尔曼滤波原理
无迹卡尔曼滤波(Unscented Kalman Filter,UKF)是一种非线性滤波器,它结合了卡尔曼滤波(Kalman Filter)和粒子滤波(Particle Filter)的优点,能够有效地处理非线性系统。其原理可以简单概括为以下几个步骤:1. 状态预测:通过状态转移方程,根据上一个时刻的状态估计值和当前时刻的控制输入,预测当前...
个人学习总结--卡尔曼滤波(Kalman Filter)
卡尔曼滤波是一种数据融合算法,旨在整合不同传感器的测量数据,特别是那些具有不同单位、同时针对相同测量目标的数据。其核心优势在于能利用前一时刻的状态和可能的测量结果,以较小的计算量提供当前状态的最优估计。然而,卡尔曼滤波的局限性在于它只能适用于线性高斯系统,对于非线性系统则需要采用扩展卡尔...
怎样才叫真正理解卡尔曼滤波kalmanfilter?
卡尔曼滤波,一种在动态系统预测和状态估计领域广泛使用的算法。理解卡尔曼滤波,首先要明确其核心目的,即在存在测量误差和系统不确定性的环境下,通过融合预测和测量信息,以提高状态估计的精度。对于使用多个传感器的场景,卡尔曼滤波提供了一种“加权平均”的策略。不同传感器可能因精度差异而表现不同,...
卡尔曼滤波器(Kalman filter)的具体用法
卡尔曼滤波器的基本操作分为预测和更新两个阶段。在预测阶段,滤波器根据上一状态的估计值来预测当前状态。而在更新阶段,则通过观测值对预测值进行优化,以获得更精确的估计。卡尔曼滤波器的核心参数包括状态矩阵X、状态协方差矩阵P、状态转移矩阵F、状态转移协方差矩阵Q、测量值Z、观测矩阵H和观测噪音...
卡尔曼滤波的详细原理
是由kalman filter考虑时间非线性的动态系统,常应用于目标跟踪系统。状态估计 状态估计是卡尔曼滤波的重要组成部分。一般来说,根据观测数据对随机量进行定量推断就是估计问题,特别是对动态行为的状态估计,它能实现实时运行状态的估计和预测功能。比如对飞行器状态估计。状态估计对于了解和控制一个系统具有...
克尔曼(卡尔曼滤波器的发明者)
克尔曼滤波器的原理 克尔曼滤波器是一种基于贝叶斯概率理论的算法,它通过对系统的状态进行估计和修正,实现对系统状态的预测和控制。具体来说,克尔曼滤波器将系统状态表示为一个向量,其中包含系统的位置、速度、加速度等信息,然后通过传感器获取系统的测量值,并将测量值与预测值进行比较,从而得出一个...