惊艳好文分享:什么是卡尔曼滤波?

发布者:梦想学院最新更新时间:2020-10-12 来源: eefocus关键字:卡尔曼滤波  机器人  什么是卡尔曼滤波  传感器 手机看文章 扫描二维码
随时随地手机看文章

在网上看了不少与卡尔曼滤波相关的博客、论文,要么是只谈理论、缺乏感性,或者有感性认识,缺乏理论推导。能兼顾二者的少之又少,直到我看到了国外的一篇博文,真的惊艳到我了,不得不佩服作者这种细致入微的精神,翻译过来跟大家分享一下。

 

我不得不说说卡尔曼滤波,因为它能做到的事情简直让人惊叹!意外的是很少有软件工程师和科学家对对它有所了解,这让我感到沮丧,因为卡尔曼滤波是一个如此强大的工具,能够在不确定性中融合信息,与此同时,它提取精确信息的能力看起来不可思议。

 

什么是卡尔曼滤波?

你可以在任何含有不确定信息的动态系统中使用卡尔曼滤波,对系统下一步的走向做出有根据的预测,即使伴随着各种干扰,卡尔曼滤波总是能指出真实发生的情况。

 

在连续变化的系统中使用卡尔曼滤波是非常理想的,它具有占用内存小的优点(除了前一个状态量外,不需要保留其它历史数据),并且速度很快,很适合应用于实时问题和嵌入式系统

 

在 Google 上找到的大多数关于实现卡尔曼滤波的数学公式看起来有点晦涩难懂,这个状况有点糟糕。实际上,如果以正确的方式看待它,卡尔曼滤波是非常简单和容易理解的,下面我将用漂亮的图片和色彩清晰的阐述它,你只需要懂一些基本的概率和矩阵的知识就可以了。

 

我们能用卡尔曼滤波做什么?

用玩具举例:你开发了一个可以在树林里到处跑的小机器人,这个机器人需要知道它所在的确切位置才能导航。

 

我们可以说机器人有一个状态,表示位置和速度:

 

注意这个状态只是关于这个系统基本属性的一堆数字,它可以是任何其它的东西。在这个例子中是位置和速度,它也可以是一个容器中液体的总量,汽车发动机的温度,用户手指在触摸板上的位置坐标,或者任何你需要跟踪的信号。

 

这个机器人带有 GPS,精度大约为 10 米,还算不错,但是,它需要将自己的位置精确到 10 米以内。树林里有很多沟壑和悬崖,如果机器人走错了一步,就有可能掉下悬崖,所以只有 GPS 是不够的。

 

或许我们知道一些机器人如何运动的信息:例如,机器人知道发送给电机的指令,知道自己是否在朝一个方向移动并且没有人干预,在下一个状态,机器人很可能朝着相同的方向移动。当然,机器人对自己的运动是一无所知的:它可能受到风吹的影响,轮子方向偏了一点,或者遇到不平的地面而翻倒。所以,轮子转过的长度并不能精确表示机器人实际行走的距离,预测也不是很完美。

 

GPS 传感器告诉了我们一些状态信息,我们的预测告诉了我们机器人会怎样运动,但都只是间接的,并且伴随着一些不确定和不准确性。但是,如果使用所有对我们可用的信息,我们能得到一个比任何依据自身估计更好的结果吗?回答当然是 YES,这就是卡尔曼滤波的用处。

 

卡尔曼滤波是如何看到你的问题的

下面我们继续以只有位置和速度这两个状态的简单例子做解释。

 

 

我们并不知道实际的位置和速度,它们之间有很多种可能正确的组合,但其中一些的可能性要大于其它部分:

 

 

卡尔曼滤波假设两个变量(位置和速度,在这个例子中)都是随机的,并且服从高斯分布。每个变量都有一个均值 μ,表示随机分布的中心(最可能的状态),以及方差,表示不确定性。

 

 

在上图中,位置和速度是不相关的,这意味着由其中一个变量的状态无法推测出另一个变量可能的值。下面的例子更有趣:位置和速度是相关的,观测特定位置的可能性取决于当前的速度:

 

 

这种情况是有可能发生的,例如,我们基于旧的位置来估计新位置。如果速度过高,我们可能已经移动很远了。如果缓慢移动,则距离不会很远。跟踪这种关系是非常重要的,因为它带给我们更多的信息:其中一个测量值告诉了我们其它变量可能的值,这就是卡尔曼滤波的目的,尽可能地在包含不确定性的测量数据中提取更多信息!

这种相关性用协方差矩阵来表示,简而言之,矩阵中的每个元素表示第 i 个和第 j 个状态变量之间的相关度。(你可能已经猜到协方差矩阵是一个对称矩阵,这意味着可以任意交换 i 和 j)。协方差矩阵通常用“”来表示,其中的元素则表示为“”。

 

 

使用矩阵来描述问题

我们基于高斯分布来建立状态变量,所以在时刻 k 需要两个信息:最佳估计(即均值,其它地方常用 μ 表示),以及协方差矩阵

 

(1)

 

(当然,在这里我们只用到了位置和速度,实际上这个状态可以包含多个变量,代表任何你想表示的信息)。接下来,我们需要根据当前状态(k-1 时刻)来预测下一状态(k 时刻)。记住,我们并不知道对下一状态的所有预测中哪个是“真实”的,但我们的预测函数并不在乎。它对所有的可能性进行预测,并给出新的高斯分布。

 

 

我们可以用矩阵来表示这个预测过程:

 

 

它将我们原始估计中的每个点都移动到了一个新的预测位置,如果原始估计是正确的话,这个新的预测位置就是系统下一步会移动到的位置。那我们又如何用矩阵来预测下一个时刻的位置和速度呢?下面用一个基本的运动学公式来表示:

 

 

现在,我们有了一个预测矩阵来表示下一时刻的状态,但是,我们仍然不知道怎么更新协方差矩阵。此时,我们需要引入另一个公式,如果我们将分布中的每个点都乘以矩阵 A,那么它的协方差矩阵会怎样变化呢?很简单,下面给出公式:

 

 

结合方程(4)和(3)得到:

 

 

外部控制量

我们并没有捕捉到一切信息,可能存在外部因素会对系统进行控制,带来一些与系统自身状态没有相关性的改变。

 

以火车的运动状态模型为例,火车司机可能会操纵油门,让火车加速。相同地,在我们机器人这个例子中,导航软件可能会发出一个指令让轮子转向或者停止。如果知道这些额外的信息,我们可以用一个向量来表示,将它加到我们的预测方程中做修正。

 

假设由于油门的设置或控制命令,我们知道了期望的加速度 a,根据基本的运动学方程可以得到:

 

 

以矩阵的形式表示就是:

 

 

称为控制矩阵,称为控制向量(对于没有外部控制的简单系统来说,这部分可以忽略)。让我们再思考一下,如果我们的预测并不是 100%准确的,该怎么办呢?

 

外部干扰

如果这些状态量是基于系统自身的属性或者已知的外部控制作用来变化的,则不会出现什么问题。

 

但是,如果存在未知的干扰呢?例如,假设我们跟踪一个四旋翼飞行器,它可能会受到风的干扰,如果我们跟踪一个轮式机器人,轮子可能会打滑,或者路面上的小坡会让它减速。这样的话我们就不能继续对这些状态进行跟踪,如果没有把这些外部干扰考虑在内,我们的预测就会出现偏差。

 

在每次预测之后,我们可以添加一些新的不确定性来建立这种与“外界”(即我们没有跟踪的干扰)之间的不确定性模型:

 

 

原始估计中的每个状态变量更新到新的状态后,仍然服从高斯分布。我们可以说的每个状态变量移动到了一个新的服从高斯分布的区域,协方差为。换句话说就是,我们将这些没有被跟踪的干扰当作协方差为的噪声来处理。

 

 

这产生了具有不同协方差(但是具有相同的均值)的新的高斯分布。

 

 

我们通过简单地添加得到扩展的协方差,下面给出预测步骤的完整表达式:

 

 

由上式可知,新的最优估计是根据上一最优估计预测得到的,并加上已知外部控制量的修正。

 

而新的不确定性由上一不确定性预测得到,并加上外部环境的干扰。

 

好了,我们对系统可能的动向有了一个模糊的估计,用来表示。如果再结合传感器的数据会怎样呢?

 

用测量值来修正估计值

我们可能会有多个传感器来测量系统当前的状态,哪个传感器具体测量的是哪个状态变量并不重要,也许一个是测量位置,一个是测量速度,每个传感器间接地告诉了我们一些状态信息。

 

 

注意,传感器读取的数据的单位和尺度有可能与我们要跟踪的状态的单位和尺度不一样,我们用矩阵来表示传感器的数据。

 

 

我们可以计算出传感器读数的分布,用之前的表示方法如下式所示:

 

 

卡尔曼滤波的一大优点就是能处理传感器噪声,换句话说,我们的传感器或多或少都有点不可靠,并且原始估计中的每个状态可以和一定范围内的传感器读数对应起来。

 

 

从测量到的传感器数据中,我们大致能猜到系统当前处于什么状态。但是由于存在不确定性,某些状态可能比我们得到的读数更接近真实状态。

 

 

我们将这种不确定性(例如:传感器噪声)用协方差表示,该分布的均值就是我们读取到的传感器数据,称之为

 

现在我们有了两个高斯分布,一个是在预测值附近,一个是在传感器读数附近。

 

 

我们必须在预测值(粉红色)和传感器测量值(绿色)之间找到最优解。

 

那么,我们最有可能的状态是什么呢?对于任何可能的读数,有两种情况:(1)传感器的测量值;(2)由前一状态得到的预测值。如果我们想知道这两种情况都可能发生的概率,将这两个高斯分布相乘就可以了。

 

 

剩下的就是重叠部分了,这个重叠部分的均值就是两个估计最可能的值,也就是给定的所有信息中的最优估计。

 

瞧!这个重叠的区域看起来像另一个高斯分布。

 

 

如你所见,把两个具有不同均值和方差的高斯分布相乘,你会得到一个新的具有独立均值和方差的高斯分布!下面用公式讲解。

 

融合高斯分布

先以一维高斯分布来分析比较简单点,具有方差和 μ 的高斯曲线可以用下式表示:

 

 

如果把两个服从高斯分布的函数相乘会得到什么呢?

 

 

将式(9)代入到式(10)中(注意重新归一化,使总概率为 1)可以得到:

 

 

将式(11)中的两个式子相同的部分用 k 表示:

 

 

下面进一步将式(12)和(13)写成矩阵的形式,如果 Σ 表示高斯分布的协方差,表示每个维度的均值,则:

 

 

矩阵称为卡尔曼增益,下面将会用到。放松!我们快要完成了!

 

将所有公式整合起来

我们有两个高斯分布,预测部分,和测量部分,将它们放到式(15)中算出它们之间的重叠部分:

 

 

由式(14)可得卡尔曼增益为:

 

 

将式(16)和式(17)的两边同时左乘矩阵的逆(注意里面包含了)将其约掉,再将式(16)的第二个等式两边同时右乘矩阵的逆得到以下等式:

 

 

上式给出了完整的更新步骤方程。就是新的最优估计,我们可以将它和放到下一个预测和更新方程中不断迭代。

 

 

总结

以上所有公式中,你只需要用到式(7)、(18)、(19)。(如果忘了的话,你可以根据式(4)和(15)重新推导一下)

 

我们可以用这些公式对任何线性系统建立精确的模型,对于非线性系统来说,我们使用扩展卡尔曼滤波,区别在于 EKF 多了一个把预测和测量部分进行线性化的过程。

关键字:卡尔曼滤波  机器人  什么是卡尔曼滤波  传感器 引用地址:惊艳好文分享:什么是卡尔曼滤波?

上一篇:加速工业物联网应用开发(二):工业物联网传感器部署
下一篇:实时控制、安全,如何加速实现未来工厂落地?

推荐阅读最新更新时间:2024-10-29 07:55

ABB推出第三代Foundry Prime铸造机器人
ABB在慕尼黑国际机器人及自动化技术贸易博览会(AUTOMATICA 2018)上推出了面向严苛工业环境高压水射流清洗应用的IRB 6790 FoundryPrime机器人。作为全球领先的机器人技术供应商,ABB在该应用行业拥有超过13年的经验,此次推出的第三代Foundry Prime铸造机器人提升了可靠性,并延长了系统正常运行时间,同时将维修成本降低60%。 IRB 6790具备高柔性,可在同一工作站内清洗不同形状的零件,无需换线,方便汽车制造商、原始设备制造商及其供应商进行大规模定制化生产。除了提升柔性和生产效率外,该解决方案还提升了生产速度,并将生产节拍平均缩短了5%。其设计主要着眼于确保生产稳定性和系统正常运行时间,同时
[机器人]
集成数字传感器接口:拯救生命的车辆安全测试技术
在汽车行业里,车辆测试具有至关重要的作用,是验证车辆动力、轮胎、耐用性、安全性等关键指标的必要程序。车辆进行量产前,制造商必须确保整车及各个组件具有较高的安全性和适应力。车辆制造商和原始设备制造商(OEMs)一般会耗用大量时间对主要物理指标参数进行测试,通过评估这些指标参数来改进当前的车辆研发工作。 在车辆测试工作中,首要的是必须保证测量数据的精确,为此,测试配置与测试设备必须满足严苛标准。作为一家瑞士家族企业,奇石乐从1959年起就开始研发自己的 传感器技术 ,通过这项开创性的技术,可轻松、精确地采集压力、力量、扭矩、加速度等数据。如今,奇石乐开发的测量与数据采集整体解决方案在世界范围内得到了广泛应用。 奇石乐DTI技术可确
[汽车电子]
集成数字<font color='red'>传感器</font>接口:拯救生命的车辆安全测试技术
NXP获得Crocus先进TMR磁传感器技术授权
  据麦姆斯咨询报道,TMR(隧道磁电阻) 磁传感器 技术及嵌入式MRAM(磁随机存储器)全球领先开发商Crocus Technology近日宣布,将其先进的TMR磁技术相关专利授权给汽车半导体解决方案全球领导者 NXP  Semiconductors(恩智浦半导体)。TMR技术将帮助实现动力转向和电子节气门控制(ETC)等下一代应用。下面就随传感器小编一起来了解一下相关内容吧。   有趣的是,在2011年,Crocus曾宣布收购了 NXP 的一系列MRAM专利。在收购之前,Crocus的大部分专利都是自主研发或通过其合作伙伴,位于法国Grenoble的Spintec研发中心获得的。   随着各类应用的自动化程度越来越高,对智能
[传感器]
机器人的应用使创建高级材料变得更加容易
(文章来源:教育新闻网) 由罗格斯(Rutge)领导的工程师团队已开发出一种自动生产聚合物的方法,从而可以更轻松地创建旨在改善人类健康的先进材料。 对于想通过组织工程研究化学和生物应用(例如药物和再生医学)的大型聚合物库(包括塑料和)的研究人员而言,这项创新是突破极限的关键一步。虽然人类研究人员一天可以生产几种聚合物,但新的自动化系统(具有定制和液体处理机器人)可以一次创建多达384种不同的聚合物,这比当前的方法有了巨大的增长。 根据《高级智能系统》杂志的一项研究,聚合物被广泛用于具有特殊性能的高级材料中,并且它们的不断发展对新技术至关重要。此类技术包括诊断,医疗设备,设备,,机器人和照明设备。 “通常,研究
[机器人]
节卡全球累计部署逾万台协作机器人的背后
广告摘要声明广告 撰文 |  潘敏瑶 2021年10月,节卡机器人宣布获得了 3万小时MTBF(平均无故障时间)可靠性认证 ,成为目前协作机器人行业首家通过该项测试并获得认证的厂商。 据介绍,MTBF是衡量一个产品的可靠性指标。节卡机器人获得MTBF认证,不单单是对其产品正常运作多长时间才会出现一次故障的评判,更多还是对于节卡机器人工艺水平、生产质量管理水平等因素的综合认可。 创立于2014年的节卡机器人,目前已拥有2个重点研发中心,即节卡-上海交通大学智能装备研发中心、节卡-上海交通大学创新设计联合研究中心;5大研发和生产基地,分布在上海、常州、深圳、天津和日本名古屋。 节卡机器人坚持技术突破与创新, 积累了300多项国家专利技术
[机器人]
餐饮行业变革,机器人带来全新机遇
机器人已经在制造业得到了成熟的应用,前年全球工业机器人销售量增长了3成,未来几年将保持高增长的趋势。除了制造业,物流、安防、医疗、餐饮等领域都开始出现机器换人的需求,其主要原因是人力成本持续上涨。近几年,机器人技术不断进步,产品成本进一步降低,中小企业乐于使用机器人去提升经济效益。 近日,海底捞国际控股有限公司与日本松下达成了合作协议,计划在北京开设一家全自动厨房,这将是中国餐饮行业迈向全自动的重要里程碑。作为亚洲最大的餐饮企业之一,海底捞成立于1994年,并于2018年在香港上市,是一家主打川味火锅的大型跨省直营餐饮品牌火锅店,其连锁店已遍布中国、韩国、日本、新加坡、美国等国家。 全自动化厨房将使用机器人,从接受订单到准备食物,
[机器人]
意法半导体推广新数字时代
中国,2016年9月30日 在日前举行的德国慕尼黑电子元器件及设备博览会印度站中,横跨多重电子应用领域、全球领先的半导体供应商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)展出其最新的智能驾驶、智慧城市、智能家居和智能硬件技术产品。 意法半导体的智能驾驶解决方案的核心是,利用先进驾驶辅助技术提高汽车驾驶安全性,利用绿色驾驶技术提高发动机燃油效率,加快汽车电动化进程,利用联网驾驶技术提高驾驶舒适性和便利性。同样地,意法半导体的智慧城市和智能家居概念通过应用高能效电源和能源管理、智能照明(LED)和家庭自动化技术,提高能源在其生命周期内的能效。今天,在家、办公室、街道和汽车里有无数个智能硬
[物联网]
基于82527的CAN总线智能传感器节点设计
引言     CAN(Controller Area Network,控制局域网)属于工业现场总线,是德国Bosch公司20世纪80年代初作为解决现代汽车中众多的控制与测试仪器间的数据交换而开发的一种通信协议。1993年11月,ISO正式颁布了高速通信控制局域网(CAN)的国际标准(ISO11898)。CAN总线系统中现场数据的采集由传感器完成,目前,带有CAN总线接口的传感器种类还不多,价格也较贵。本文给出一种由8051单片机和82527独立CAN总线控制器为核心构成的智能节点电路,在普通传感器基础上形成可接收8路模拟量输入和智能传感器节点。 1 独立CAN总线控制器82527介绍     82527是Int
[工业控制]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved