0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详细了解卡尔曼滤波器的工作原理

汽车玩家 来源:人工智能遇见磐创 作者:人工智能遇见磐创 2020-05-05 08:25 次阅读

与我的朋友交谈时,我经常听到:“哦,卡尔曼(Kalman)滤波器……我经常学它,然后我什么都忘了”。好吧,考虑到卡尔曼滤波器(KF)是世界上应用最广泛的算法之一(如果环顾四周,你80%的技术可能已经在内部运行某种KF),让我们尝试将其弄清楚。

在这篇文章的结尾,你将对KF的工作原理,其背后的想法,为什么需要多个变体以及最常见的变体有一个直观而详细的了解。

状态估计

KF是所谓的状态估计算法的一部分。什么是状态估计?假设你有一个系统(让我们将其视为黑箱)。黑箱可以是任何东西:你的风扇,化学系统,移动机器人。对于这些系统中的每一个,我们都可以定义一个状态。状态是我们关心的变量向量,可以描述系统处于特定时间点的“状态”(这就是为什么将其称为状态)。“可以描述”是什么意思?这意味着,如果你了解当时的状态向量k和提供给系统的输入,则可以了解当时的k+1的系统状态(与此同时使用系统工作原理的一些知识)。

例如,假设我们有一个移动的机器人,并且我们关心其在空间中的位置(并且不在乎其方向)。如果我们将状态定义为机器人的位置(x, y)及其速度,($vx$, $vy$)并且我们有一个机器人如何运动的模型,那么就足以确定机器人的位置以及下一个时刻的位置。

因此,状态估计算法估计系统的状态。为什么要估算呢?因为在现实生活中,外部观察者永远无法访问系统的真实状态。通常有两种情况:你可以测量状态,但是测量结果会受到噪声的影响(每个传感器只能产生一定精度的读数,可能对你来说还不够),或者你无法直接测量状态。一个例子可能是使用GPS计算上述移动机器人的位置(我们将位置确定为状态的一部分),这可能会给你带来多达10米的测量误差,对于你可能想到的任何应用程序来说,这可能都不够精确。

通常,当你进行状态估计时,你可以放心地假设你知道系统的输入(因为是你给出的)和输出。由于测量了输出,因此它也会受到一定的测量噪声的影响。据此,我们将状态估计器定义为一个系统,该系统接收你要估计其状态的系统的输入和输出并输出系统状态的估计。

传统上,状态用表示x,输出用y或z,u是输入,$tilde_x$是估计状态。

详细了解卡尔曼滤波器的工作原理

卡尔曼滤波器

你可能已经注意到,我们已经讨论了一些有关误差的内容:

你可以测量系统的输出,但是传感器会给出测量误差

你可以估计状态,但是作为状态估计它具有一定的置信度。

除此之外,我说过,你需要某种系统知识,你需要了解系统“行为”的模型(稍后会详细介绍),你的模型当然并不完美,因此你将拥有另一个误差。

在KF中,你可以使用高斯分布来处理所有这些不确定性。高斯分布是表示你不确定的事物的一种好方法。你当前确定的东西可以用分布的均值表示,而标准差可以说明你对该确定的信心。

在KF中:

你的估计状态将是具有一定均值和协方差的高斯随机变量(它将告诉我们该算法“确定”其当前估计的程度)

你对原始系统的输出度量的不确定性将用均值为0和一定协方差的随机变量表示(这将告诉我们我们对度量本身的信任程度)

系统模型的不确定性将由均值为0和一定协方差的随机变量表示(这将告诉我们我们对使用的模型有多信任)。

让我们举一些例子来了解其背后的想法。

不良模型,好的传感器,让我们再次假设你要跟踪机器人的位置,并且你在传感器上花费了很多钱,它们为你提供厘米级的精度。另一方面,你根本不喜欢机器人技术,搜索了一下,发现了一个非常基本的运动模型:随机游走(基本上是一个仅由噪声给出运动的粒子)。很明显,你的模型不是很好,不能真正被信任,而你的测量结果却很好。在这种情况下,你可能将使用非常窄的高斯分布(小方差)来建模测量噪声,而使用非常宽的高斯分布(大方差)来建模不确定性。

传感器质量差,模型好,如果传感器质量不好(例如GPS),但是你花费大量时间对系统进行建模,则情况恰好相反。在这种情况下,你可能将使用非常窄的高斯分布(小方差)来建模模型不确定性,而使用非常宽的高斯分布(大方差)来建模噪声。

详细了解卡尔曼滤波器的工作原理

估计的状态不确定性如何?

KF将根据估计过程中发生的事情进行更新,你唯一要做的就是将其初始化为足够好的值。“足够好”取决于你的应用程序,你的传感器,你的模型等。通常,KF需要一点时间才能收敛到正确的估计值。

KF如何工作?

正如我们所说,要让KF正常工作,你需要对系统有“一定的了解”。特别是对于KF,你需要两个模型:

状态转换模型:某些函数,给定时间步k的状态和输入,给出时间步k+1的状态。

测量模型:某个函数,给定时间步k的状态,即可为你提供同一时间的测量结果

稍后,我们将了解为什么需要这些功能,让我们首先查看一些示例以了解它们的含义。

状态转换模型

该模型告诉你系统如何随时间变化(如果你还记得的话,我们之前曾谈到状态必须具有足够的描述性以及时推断系统行为)。这在很大程度上取决于系统本身以及你对系统的关心。如果你不知道如何对系统建模,则可以使用一些Google搜索来提供帮助。对于运动的物体(如果以适当的采样率测量),可以使用恒速模型(假定物体以恒定的速度运动),对于车辆,可以使用单轮脚踏车模型,等等……让我们假设一种或另一种方式,我们建立了一个模型。我们在这里做出一个重要的假设,这对于KF的工作是必要的:你的当前状态仅取决于先例。换句话说,系统状态的“历史”会压缩为先前的状态,也就是说,给定先例状态,每个状态都独立于过去。这也称为马尔可夫假设。如果这不成立,你将无法仅根据先例来表达当前状态。

测量模型(Measurement model)

测量模型告诉你如何将输出和状态联系在一起。直观上,你需要这样做,因为你知道测量的输出,并且想要在估计期间从中推断出状态。同样,此模型因情况而异。例如,在移动机器人示例中,如果你的状态是位置并且你拥有GPS,则你的模型就是单位函数(identity function),因为你已经在知道了状态的有噪声版本。

每个步骤的数学公式和解释如下:

详细了解卡尔曼滤波器的工作原理

那么,KF实际如何运作?该算法分两个步骤工作,称为预测和更新。假设我们在时间步k,并且那时我们具有估计状态。首先,我们使用状态转换模型,并使估计状态预测到下一个时刻。这相当于说:鉴于我目前对状态的信念,我所拥有的输入以及对系统的了解,我希望我的下一个状态是这样。这是预测步骤。

现在,由于我们还具有输出和测量模型,因此我们实际上可以使用实际测量“校正”预测。在更新步骤中,我们采用预期状态,我们计算输出(使用测量模型)(2),并将其与实际测量的输出进行比较。然后,我们以“智能方式”使用两者之间的差异来校正状态估计(3)。

通常,我们在校正之前用apex -表示状态的估计,它来自于预测步骤。K是卡尔曼增益。这就是巧妙之处:K取决于我们对度量的信任程度,取决于我们对当前估计的信任程度(这取决于我们对模型的信任程度),根据这些信息,K“决定”预测的估计在多大程度上被测量纠正。如果我们的测量噪声与我们对来自预测步骤的估计的信任程度相比是“小”的,我们将使用测量对估计进行大的校正,如果相反,我们将对其进行最小程度的校正。

注意:为简单起见,我写方程式时就好像在处理普通变量一样,但是你必须考虑到在每一步中我们都在处理随机的高斯变量,因此我们还需要通过函数传播变量的协方差,而不仅仅是均值。

让我们举例说明。假设我们正在(再次)跟踪一个机器人的位置。实际位置显示为灰色,k时刻我们认为机器人处于绿色位置,估计协方差表示为一个椭圆。粗略地说,你可以从椭圆的形状看出,我们的过滤器在这一步对横向定位比在向前运动方向的定位更“自信”。在使用状态转换模型让系统演进的预测步骤之后,我们认为新的位置是红色的。由于椭圆在横向上变大了,我们现在对新的估计位置不太确定(例如,因为我们不太相信模型)。然后我们读取GPS,得到黑色的位置。在更新步骤中,实际的位置估计将是深绿色的虚线部分。如果我们更信任模型(与测量噪声协方差相比,协方差更小),估计值将更接近红色;如果我们更信任测量(与模型不确定性相比,噪声测量协方差更小),估计值将更接近红色。

详细了解卡尔曼滤波器的工作原理

KF家族

根据所使用的模型类型(状态转换和测量),可以将KF分为两个大类:如果模型是线性的,则具有线性卡尔曼滤波器,而如果它们是非线性的,则具有非线性卡尔曼滤波器。

为什么要区分?好吧,KF假设你的变量是高斯变量,当通过线性函数传递时,高斯变量仍然是高斯变量,如果通过非线性函数传递,则不正确。这打破了卡尔曼假设,因此我们需要找到解决方法。

历史上,人们发现了两种主要的方法:利用模型作弊和利用数据作弊。如果你在模型上做了弊你基本上是将当前估计周围的非线性函数线性化,这样你就回到了线性的情况下。这种方法称为扩展卡尔曼滤波(EKF)。这种方法的主要缺点是必须能够计算f()和h()的雅可比矩阵。或者,如果你在数据上作弊,你使用非线性函数,然后你尝试“高斯化”(如果这个词存在的话)你做出的非高斯分布。这是通过一种叫做无损变换的智能采样技术实现的。这个变换允许你用平均值和协方差来描述(近似地)一个分布(只有高斯分布才能被前两个矩完全描述)。这种方法称为无损卡尔曼滤波(UKF)。理论上,UKF优于EKF,因为无损变换比线性化模型得到的近似更接近结果分布。在实践中,你必须有相当大的非线性才能真正看到大的区别。

实际中的KF

由于我谈到了很多有关带GPS的移动机器人的内容,因此我就此情况作了简短的演示(如果要使用它,可以在这里找到代码)。机器人的运动是使用单轮模型生成的。用于KF的状态转换模型是等速模型,其状态包含x和y位置,转向角及其导数。

机器人会及时移动(实际位置显示为黑色),在每个步骤中,你都会得到非常嘈杂的GPS测量值,该测量值给出x和y(红色)并估算位置(蓝色)。你可以使用不同的参数,看看它们如何影响状态估计。如你所见,我们可以进行非常嘈杂的测量,并对实际位置进行很好的估算。

详细了解卡尔曼滤波器的工作原理

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 滤波器
    +关注

    关注

    161

    文章

    7811

    浏览量

    178085
  • 算法
    +关注

    关注

    23

    文章

    4612

    浏览量

    92869
收藏 人收藏

    评论

    相关推荐

    卡尔滤波在信号处理中的应用分析

    卡尔滤波在信号处理中的应用十分广泛,其强大的滤波和预测能力使其成为信号处理领域的一种重要工具。以下是对卡尔
    的头像 发表于 12-16 09:14 525次阅读

    卡尔滤波在图像处理中的应用实例 如何调优卡尔滤波参数

    卡尔滤波在图像处理中的应用实例 卡尔滤波在图像处理中主要应用于目标跟踪、噪声消除和图像恢复等
    的头像 发表于 12-16 09:11 323次阅读

    卡尔滤波在机器人导航中的应用

    卡尔滤波的基本原理 卡尔滤波是一种基于贝叶斯滤波
    的头像 发表于 12-16 09:08 206次阅读

    卡尔滤波器的特性及仿真

    我们前一篇关于人物识别跟踪的文章《视频连续目标跟踪实现的两种方法和示例(更新)》里讲到,视频图像中物体的识别和跟踪用到了卡尔滤波器(KF)。这里对这个话题我们稍微对这个卡尔
    的头像 发表于 11-04 11:36 343次阅读
    <b class='flag-5'>卡尔</b><b class='flag-5'>曼</b><b class='flag-5'>滤波器</b>的特性及仿真

    有源滤波器工作原理,以及结构

    有源滤波器工作原理基于频率选择性网络,它能够根据输入信号的频率成分进行放大或衰减。这种滤波器的主要特点是它需要外部电源供电,以实现其功能。有源滤波器
    的头像 发表于 10-18 14:59 1353次阅读

    有源陷波滤波器的定义和工作原理

    有源陷波滤波器(Active Notch Filter)是一种特殊的电子滤波器,它能够在特定的频率上显著衰减信号的幅度,而对其他频率的信号影响较小。这种滤波器在通信、音频处理、生物医学工程等领域有着广泛的应用。本文将
    的头像 发表于 09-27 15:09 854次阅读
    有源陷波<b class='flag-5'>滤波器</b>的定义和<b class='flag-5'>工作原理</b>

    emi滤波器工作原理是什么

    EMI滤波器,即电磁干扰滤波器,是一种用于抑制电磁干扰(EMI)的电子设备。在现代电子设备中,EMI滤波器被广泛应用于电源、通信、医疗、工业控制等领域。 一、EMI滤波器
    的头像 发表于 08-25 14:36 1022次阅读

    卡尔滤波的优缺点有哪些

    卡尔滤波(Kalman Filter)是一种线性动态系统的状态估计算法,广泛应用于信号处理、导航、控制等领域。 卡尔
    的头像 发表于 08-01 15:24 1591次阅读

    无源滤波器工作原理和应用

    供电,其工作原理主要依赖于电容和电感的物理特性,因此具有设计简单、成本低廉、失真小、噪声小等优点。然而,无源滤波器也存在一些局限性,如无法增益信号、带宽受限等。
    的头像 发表于 07-09 17:57 2172次阅读
    无源<b class='flag-5'>滤波器</b>的<b class='flag-5'>工作原理</b>和应用

    RC无源带通滤波器工作原理与特性

    在电子工程领域,滤波器是不可或缺的重要元件。其中,RC无源带通滤波器作为一种常见的滤波器类型,在信号处理、通信、测量等领域有着广泛的应用。本文将详细探讨RC无源带通
    的头像 发表于 05-24 14:54 2473次阅读

    低通滤波器的概念、工作原理及分类

    在电子信号处理和通信系统中,滤波器扮演着至关重要的角色。其中,低通滤波器(Low-pass Filter, LPF)作为一种基础的电子滤波器,广泛应用于音频处理、图像处理、通信系统等多个领域。本文将对低通
    的头像 发表于 05-12 17:43 7729次阅读

    什么是低通滤波器?低通滤波器有什么作用?

    在电子工程领域中,滤波器是一种用于信号处理的重要元件。而低通滤波器作为滤波器的一种类型,具有其独特的频率响应特性。本文维爱普电源滤波器小编将详细
    的头像 发表于 04-08 16:30 3545次阅读
    什么是低通<b class='flag-5'>滤波器</b>?低通<b class='flag-5'>滤波器</b>有什么作用?

    滤波器工作原理和分类及应用领域?

    滤波器工作原理和分类及应用领域?|深圳比创达电子EMC
    的头像 发表于 03-08 09:56 1836次阅读
    <b class='flag-5'>滤波器</b>:<b class='flag-5'>工作原理</b>和分类及应用领域?

    卡尔滤波算法c语言实现方法

    卡尔滤波(Kalman Filter)是一种用于估计状态的算法,最初由R.E. Kalman在1960年提出。它是一种线性高斯滤波器,常用于处理包含误差噪声的动态系统。
    的头像 发表于 01-17 10:51 2980次阅读

    卡尔滤波家族

    本文对于扩展卡尔滤波、无迹卡尔滤波仅仅做了一些简要介绍,不再想上次的文章那样做
    的头像 发表于 01-14 14:29 903次阅读
    <b class='flag-5'>卡尔</b><b class='flag-5'>曼</b><b class='flag-5'>滤波</b>家族