精华内容
下载资源
问答
  • 基于卡尔曼滤波数据融合算法的智能钓鱼竿系统.pdf
  • 卡尔曼滤波数据融合算法

    万次阅读 多人点赞 2017-11-10 14:06:43
  • 针对目前国内市场智能钓鱼竿功能不足的问题,本文通过四元数法对鱼竿姿态解算,利用基于卡尔曼滤波数据融合算法,并以微处理器STM32为核心搭建uC/OS-II操作系统,结合多种环境传感器和串级PID控制方法,设计了一种...
  • 使用了扩展卡尔曼,完成了UWB和惯导的数据融合,并实现了仿真。代码几乎都有注释,可以很好的起到事例作用。
  • 卡尔曼滤波实现数据融合、模式识别、函数逼近等功能。
  • 详解卡尔曼滤波原理

    万次阅读 多人点赞 2017-03-18 13:54:15
    详解卡尔曼滤波原理 在网上看了不少与卡尔曼滤波相关的博客、论文,要么是只谈理论、缺乏感性,或者有感性认识,缺乏理论推导。能兼顾二者的少之又少,直到我看到了国外的一篇博文,真的惊艳到我了,不得不佩服作者...

    详解卡尔曼滤波原理

      在网上看了不少与卡尔曼滤波相关的博客、论文,要么是只谈理论、缺乏感性,或者有感性认识,缺乏理论推导。能兼顾二者的少之又少,直到我看到了国外的一篇博文,真的惊艳到我了,不得不佩服作者这种细致入微的精神,翻译过来跟大家分享一下,原文链接:http://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/
      我不得不说说卡尔曼滤波,因为它能做到的事情简直让人惊叹!意外的是很少有软件工程师和科学家对对它有所了解,这让我感到沮丧,因为卡尔曼滤波是一个如此强大的工具,能够在不确定性中融合信息,与此同时,它提取精确信息的能力看起来不可思议。

    什么是卡尔曼滤波?

      你可以在任何含有不确定信息的动态系统中使用卡尔曼滤波,对系统下一步的走向做出有根据的预测,即使伴随着各种干扰,卡尔曼滤波总是能指出真实发生的情况。
      在连续变化的系统中使用卡尔曼滤波是非常理想的,它具有占用内存小的优点(除了前一个状态量外,不需要保留其它历史数据),并且速度很快,很适合应用于实时问题和嵌入式系统。
      在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多了一个把预测和测量部分进行线性化的过程。

    (ps: 第一次用Markdown,添加图片和公式心累啊,什么时候能直接拖拽就好了~~)

    附Markdown使用技巧:
    1. 改变文本字体、字号与颜色。参考链接:(http://blog.csdn.net/testcs_dn/article/details/45719357/)
    2. 在线公式编辑器,编辑好了右键“复制图片地址”,当作图片来添加。
     链接:(http://private.codecogs.com/latex/eqneditor.php)
    3. 段落首行缩进,按Shift+Space将输入法切换到全角状态,然后敲空格即可,一个空格代表一个汉字的间隔。
    4. 设置图片大小及居中显示。参考链接:(http://blog.csdn.net/soindy/article/details/50427079)
    5. 不懂百度。

    展开全文
  • 基于卡尔曼滤波数据融合算法,主要用于对陀螺仪和加速度计的数据融合
  • 由于研究需要,最近在看卡尔曼滤波,做个小总结。 最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科学家Kолмогоров等人的研究工作,后人统称为维纳滤波理论。从理论上说,维纳滤波的最大缺点是必须...

    由于研究需要,最近在看卡尔曼滤波,做个小总结。
    最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科学家Kолмогоров等人的研究工作,后人统称为维纳滤波理论。从理论上说,维纳滤波的最大缺点是必须用到无限过去的数据,不适用于实时处理。为了克服这一缺点,60年代Kalman把状态空间模型引入滤波理论,并导出了一套递推估计算法,后人称之为卡尔曼滤波理论。卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻的估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。它适合于实时处理和计算机运算。
    首先通过一个例子了解什么是卡尔曼滤波:

    例1

    这个例子来自于百度百科,或者也可以参考下面的这个博客,其中给出了更详细的解答:

    https://blog.csdn.net/baidu_38172402/article/details/82289998
    

    假设我们要研究的对象是一个房间的温度。根据你的经验判断,这个房间的温度是恒定的,也就是下一分钟的温度等于现在这一分钟的温度(假设我们用一分钟来做时间单位)。假设你对你的经验不是100%的相信,可能会有上下偏差几度。我们把这些偏差看成是高斯白噪声(White Gaussian Noise),也就是这些偏差跟前后时间是没有关系的而且符合高斯分布(Gaussian Distribution)。另外,我们在房间里放一个温度计,但是这个温度计也不准确的,测量值会比实际值偏差。我们也把这些偏差看成是高斯白噪声。
    好了,现在对于某一分钟我们有两个有关于该房间的温度值:你根据经验的预测值(系统的预测值)和温度计的值(测量值)。下面我们要用这两个值结合他们各自的噪声来估算出房间的实际温度值。
    假如我们要估算k时刻的实际温度值。首先你要根据k-1时刻的温度值,来预测k时刻的温度。因为你相信温度是恒定的,所以你会得到k时刻的温度预测值是跟k-1时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度(5是这样得到的:如果k-1时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平方相加再开方,就是5)。然后,你从温度计那里得到了k时刻的温度值,假设是25度,同时该值的偏差是4度。
    由于我们用于估算k时刻的实际温度有两个温度值,分别是23度和25度。究竟实际温度是多少呢?相信自己还是相信温度计呢?究竟相信谁多一点,我们可以用他们的协方差(covariance)来判断。因为Kg=52/(52+4^2),所以Kg=0.61,我们可以估算出k时刻的实际温度值是:23+0.61*(25-23)=24.22度。可以看出,因为温度计的协方差(covariance)比较小(比较相信温度计),所以估算出的最优温度值偏向温度计的值。
    现在我们已经得到k时刻的最优温度值了,下一步就是要进入k+1时刻,进行新的最优估算。到现在为止,好像还没看到什么自回归的东西出现。对了,在进入k+1时刻之前,我们还要算出k时刻那个最优值(24.22度)的偏差。算法如下:((1-Kg)*52)0.5=3.12。这里的5就是上面的k时刻你预测的那个23度温度值的偏差,得出的3.12就是进入k+1时刻以后k时刻估算出的最优温度值的偏差(对应于上面的3)。
    就是这样,卡尔曼滤波器就不断的把协方差(covariance)递归,从而估算出最优的温度值。他运行的很快,而且它只保留了上一时刻的协方差(covariance)。上面的Kg,就是卡尔曼增益(Kalman Gain)。
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    如果只是想了解卡尔曼滤波是什么东西的话差不多到这里就可以了,如果还想要深入理解的话可以继续往下看:

    例2

    这个例子来源于一篇知乎的文章,给出了一个更接近于实际的分析:

    https://zhuanlan.zhihu.com/p/77327349
    

    首先卡尔曼滤波要解决的问题是什么?我以我军发射一枚导弹攻击敌方某固定位置目标为例,导弹需要每隔一秒开雷达测量下离目标的距离。然后由于雷达有误差,所以需要融合自己上个时刻的位置、速度等信息来更准确的确定当前时刻离目标的距离。这就是卡尔曼滤波需要解决的事。

    从直观理解卡尔曼滤波是怎么解决这个问题的呢?

    首先导弹已知“当前这秒雷达测量的导弹离目标的距离(我们称它为观测值,比如雷达直接测量导弹离目标距离7m)”,“上个时刻导弹离目标距离”和“导弹自己当前时刻的速度”这三个数据。而根据“上个时刻导弹离目标距离”和“导弹自己当前时刻的速度”可以估算出当前导弹离目标的距离(我们称它为估计值)。比如:上一秒离目标10m,速度是4m/s,那么现在这秒估计就离目标距离是6m。这个速度数据可以从传感器里面读取也可以从发动机那获得。
    那么问题来了,导弹离目标的距离现在既有个观测值7m,又有个估计值6m。到底相信哪个?单纯相信观测值万一雷达被敌方干扰了呢?单纯相信估计值那么万一上个时刻的距离估计值或者速度不准呢?所以,我们要根据观测值和估计值的准确度来得到最终导弹离目标的距离估计值。准确度高的就最终结果比重高,准确度低就占比低。如果雷达测量的那个7m准确度是49%,根据速度估计出的那个6m准确度是1%,那么最终的距离估计结果就是
    在这里插入图片描述
    卡尔曼滤波怎么做的?

    我们先回顾总结下直观理解中是怎么做的:
    1、根据上一秒导弹的位置 和 导弹的的速度估计出当前时刻导弹的位置粗略估计值。
    2、将雷达测得导弹位置测量值和我们计算出的导弹位置粗略估计值根据这两种数据可信度来进行线性加权和得到准确的导弹位置估计值。
    在前面我们也提到了导弹的位置和雷达测量值都是有误差的。所以卡尔曼想用概率来衡量数据的可信度。
    比如:雷达测量的数据它就不只是一个数字了。而是说测量发现导弹有0.8的概率在7m那个位置,有0.1的概率在7.2m那个位置。有0.1的概率在6.9m那个位置。这些数据就叫做概率分布。概率分布的意思就是很多个值还有它们各自出现的概率多大所组成的数据就叫做概率分布。
    卡尔曼认为导弹速度、导弹位置、雷达测距的测量值这些都服从正态分布
    我们知道正态分布可以这么表示 N(均值,方差)。
    现在我们是已知:
    在这里插入图片描述
    在前面我们知道了卡尔曼滤波算法为了融合雷达测量值和上个时刻的导弹状态数据来减少误差,需要实施“两步走”战略:
    1、根据上一秒导弹的位置 和 导弹的速度估计出当前时刻导弹的位置粗略估计值。
    2、将雷达测得导弹位置测量值和我们计算出的导弹位置粗略估计值根据这两种数据可信度来进行线性加权和得到准确的导弹位置估计值。

    我们来看看具体怎么做的:
    1、计算粗略估计值(这个是做了一个硬假设:导弹是保持匀速运动),大家可以对比着看下直观理解是怎么做的:
    在这里插入图片描述
    2、根据 粗略估计值的概率分布与雷达的测量值概率分布得到精确估计值的概率分布。现在我们是用概率分布来计算。所以和直观理解中的计算方式有不同。因为直观理解中的计算方式是相当于粗略估计值这个概率分布的均值与雷达测量值的概率分布的均值进行加权和得到精确估计值的概率分布的均值。由于正态分布是均值那个地方的概率最大,所以当前时刻导弹位置的精确估计值就是它概率分布的均值。但是现在我们还是没有回答怎么根据粗略估计值的概率分布与雷达的测量值概率分布得到精确估计值的概率分布。其实这个也很简单。直接把这两个概率分布相乘即可。这是由贝叶斯滤波所推导得到的。所以我们得到当前时刻导弹位置的精确估计是 :
    在这里插入图片描述
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    如果仔细看这两个例子其实会发现它们其实是有点区别的,主要在于计算协方差以及卡尔曼增益上面。对于两个正态分布的总的协方差,温度的例子中的计算其实是有问题的,如果你去推导一下会发现它的计算结果永远都更加偏向于观测值,而实际上卡尔曼滤波应该既有可能偏向于观测值也可能偏向于预测值,当测量协方差趋向于零时结果会偏向于测量值,当预测协方差偏向于零时结果会偏向于预测值。下面的链接视频中通过一个观测器很好的阐述了卡尔曼滤波的原理以及卡尔曼增益与测量协方差以及预测协方差直接的关系:

    https://www.bilibili.com/video/BV1D441167Qz/?spm_id_from=333.788.videocard.0
    

    所以第一个例子更多的给与一个很直观的理解什么是卡尔曼滤波以及它的工作原理,第二个例子算是一个比较合理的应用。对于正态分布的均值方差概念可以参考:

    https://www.cnblogs.com/DemonHunter/p/10740124.html
    

    另外下面的这篇文章对于卡尔曼滤波讲的其实也很好,有兴趣的也可以看一下:

    https://blog.csdn.net/u012411498/article/details/82887417
    

    以及它的英文版:

    http://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/
    

    这里面关于协方差的计算跟例二是相同的,只是这里没有使用具体的数值而是以公式的形式表达了。
    顺便放两个关于贝叶斯滤波的链接:

    https://blog.csdn.net/varyshare/article/details/97642209
    
    https://blog.csdn.net/wq1psa78/article/details/105849353
    

    EKF

    卡尔曼滤波的前提是它认为系统都是线性的,如果状态转移函数是线性的,那么在经历线性变换之后,分布保持其高斯特性;如果状态转移函数是非线性的,那么在经历线性变换之后,那么得到的状态分布可能不是高斯分布。因此,卡尔曼滤波算法可能会不收敛。在这种情况下,可以使用扩展卡尔曼滤波算法(EKF),它把非线性函数在当前估算状态的平均值附近进行线性化,每一个时间步执行线性化,然后将得到的雅克比矩阵用于预测和更新卡尔曼滤波算法。当系统是非线性,并且可以通过线性化很好的近似时,那么扩展卡尔曼滤波算法是状态估算的一个很好的选择。
    简单的说,由于系统通常是非线性的,于是我用近似线性化的方法,对所求时刻的函数进行一阶泰勒展开得到一个近似的线性化方程,在此基础上运用卡尔曼滤波算法求解。
    关于扩展卡尔曼滤波可以参考下面的几个链接:

    https://zhuanlan.zhihu.com/p/67138271
    
    https://www.cnblogs.com/alexgl2008/articles/12866501.html
    
    https://www.jianshu.com/p/f0650a18430e
    

    然而,它有以下的缺点:
    1、由于复杂的导数,可能难以解析计算雅克比矩阵;
    2、而以数值方式计算它们可能需要很高的计算成本;
    3、扩展卡尔曼滤波算法不适用于具有不连续模型的系统,因为系统不可微分时雅克比矩阵不存在
    4、高度非线性系统的线性化效果不好。

    UKF

    为了解决上述这些问题,后面提出了无迹卡尔曼滤波算法(UKF),它并不像扩展卡尔曼那样近似非线性函数,无迹卡尔曼是解决非线性卡尔曼滤波的另一种思路,不用均值和方差来表示随机变量,而是用采样点来表示。有点类似于粒子滤波,但是区别于粒子滤波,粒子滤波的采样是随机的,但是无迹卡尔曼滤波的采样遵循了一定的采样规律。
    从Input Distribution进行点采样,采样点距离Input Distribution的mean距离是标准差的倍数,因此这些采样点也被称为Sigma Point。Unscented Transform有时也被称为Sigma Point Transform。
    参考于:

    https://www.jianshu.com/p/128ec52c9f5f
    
    https://zhuanlan.zhihu.com/p/41767489
    
    展开全文
  • MPU6050_Kalman_PWM_remote 基于卡尔曼滤波的多传感器测量数据融合 MPU6050_卡尔曼滤波 KF算法流程 自平衡小车 双轮自平衡小车设计报告 陀螺仪+加速度计卡尔曼
  • 卡尔曼滤波-数据融合

    2021-08-13 10:24:08
    数据融合数据融合讲解 数据融合讲解 举个简单的例子:使用两个秤称东西,两个秤都有误差,那么两个秤都测不准物品的重量。但是我们可以知道物品真实值

    一、数据融合讲解

      举个简单的例子:使用两个秤秤东西,两个秤都有误差(符合高斯正态分布),那么两个秤都测不准物品的重量。但是我们可以知道物品真实值大概率分布在测量的数据附近。那么就可以使用数据融合将两个测量的数据合成一个数据,使其对物品的重量预测更精确。

      数据表示:已知两秤秤一物品,秤一秤得物品重 z1 = 30g,秤一标准差为 σ1 = 2g,秤二秤得物品重 z2= 32g,秤二标准差为 σ2 = 4g。则他俩对应高斯正态分布应如图
    正态分布
    如果这时让我们把预测的数据加入图中,那么不难设想,均值在30g与32g之间,且高斯正态分布更为集中。如图请添加图片描述

    二、计算方法

      已经可以画出大致图形,呢么如何确定其均值和标准差,从而求出预测数据呢?

    1.确定联立公式


    Z3 = Z1 +K(Z2 - Z1)    K∈[0,1];
    K = 0时,Z3 = Z1. K = 1时,Z3 =Z2

    2.确定k值(Z3方差最小)


    Z3是一个正态分布,要求其越集中越好,当方差最小时最集中。
    Var(Z3) = Var(Z1 + K(Z2 - Z1)) = Var((1 - K)Z1 + KZ2) = (1 - K)²Var(Z1) + K²Var(Z2)

    求Var(Z3)最小就是找极值处。求导并将Var(Z1), Var(Z2)带入:
    -2 * (1-k) * 4 + 2k * 16 = 0
    k = 0.2

    代回 Var(Z3) = Var( Z1 + K(Z2 - Z1)) ,并将 Var(Z1), Var(Z2)带入:
    Var(Z3) = 3.2,即σ3 = 1.79

    代回 Z3 = Z1 +K(Z2 - Z1) ,并将 Z1, Z2均值带入:
    Z1 均值为30.4

    可以得到 Z1 均值为30.4,σ3 = 1.79。与我们预估的图像(均值在30g与32g之间,且高斯正态分布更为集中)相符合。

    请添加图片描述

    展开全文
  • 下面进入正题:卡尔曼滤波对两个传感器的数据进行融合 卡尔曼滤波主要是运用5个方程(推导就不给出了):两个预测方程和3个更新方程。 预测方程: 更新方程: 卡尔曼滤波器在线性系统中产生最优估计...
  • 能得到最优姿态角度的问题,建立陀螺仪和加速度计误差的数学模型,采用卡尔曼滤波方法,实现数据融合,有效地提高了姿态检测系统的检测精度.该方法被成功应用于四旋翼飞行器的飞行姿态角度控制中,验证了其良好的噪声抑制...
  • 最近需要做一个空中飞鼠(AirMouse)项目,其中对六轴陀螺仪回传的...其中我着重学习了卡尔曼滤波和扩展卡尔曼滤波,并对扩展卡尔曼滤波进行实现。 1. 卡尔曼滤波学习 卡尔曼滤波算法是卡尔曼(Kalman)等人在20世纪
  • 卡尔曼滤波与航迹融合

    千次阅读 2020-11-29 21:47:15
    文章目录卡尔曼滤波与航迹融合前言一、航迹数据仿真二、卡尔曼滤波器1.举例说明2.卡尔曼滤波算法.总结 前言 这是我雷达信号处理课的一个作业,有些知识我也是新学的,原理也不是很懂. 所谓的航迹融合,就是将各传感器...
  • 卡尔曼滤波与扩展卡尔曼滤波

    千次阅读 2018-04-22 10:51:43
    背景介绍 卡尔曼滤波(Kalman filtering)...目前在机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等应用较广。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测...
  • 车辆稳定性控制系统能够提高...对于质心侧偏角的估算国内外学者也有进行不同程度的探索,但是大多采用的是积分算法、卡尔曼滤波算法等等,但是在工程实际应用中却很少。 质心侧偏角通常定义为侧向车速与纵向车速的...
  • 数据融合 data fusion flyfish z=w1∗z1+w2∗z2z=w_1*z_1+w_2*z_2z=w1​∗z1​+w2​∗z2​ w1+w2=1w_1+w_2=1w1​+w2​=1 z=(1−w2)∗z1+w2∗z2z=(1-w_2)*z_1+w_2*z_2z=(1−w2​)∗z1​+w2​∗z2​ z=z1−w2∗z1+w2∗...
  • 多尺度无味卡尔曼滤波方法的自适应融合设计用于多传感器数据融合
  • 在《无人驾驶技术入门(十三)| 手把手教你写卡尔曼滤波器》的分享中,我以激光雷达的数据为例介绍了卡尔曼滤波器(KF)的七个公式,并用C++代码实现了激光雷达障碍物的跟踪问题;在《无人驾驶技术入门(十八)| ...
  • 本文将用MATLAB模拟加速度计得到的加速度和陀螺仪的到的角速度进行卡尔曼滤波数据融合,得到更为精确的输出。 一、用卡尔曼滤波的数据融合算法的原因 加速度求解的数学原理是三角函数关系。通过将测得的加速度矢量...
  • 在集中式滤波结构和联邦式滤波结构的基础上,设计了一种基于自适应容积卡尔曼滤波算法的多传感器系统混合式组合滤波结构,并给出了融合各传感器的局部滤波信息以得到全局滤波估计的计算方法。以对车辆的定位导航为...
  • 前段时间由于项目关系需要实现基于卡尔曼滤波的姿态解算,也就是说融合加速度计、陀螺仪及磁罗盘进行AHRS姿态解算,得到机器人的姿态角。 本文的学习需要有一定的卡尔曼滤波器基础,可以参考白巧克力亦唯心的卡尔曼...
  • 一文理清卡尔曼滤波,从传感器数据融合开始谈起

    千次阅读 多人点赞 2019-05-19 10:50:29
    一文理清卡尔曼滤波,从传感器数据融合开始谈起 5/19,'19 FesianXu 前言 最近在一个项目中接触到了卡尔曼滤波,并且对此进行了学习,发现其是一个很有意思的信息融合的算法,可以结合多种传感器的信息(存在噪声...
  • 注:这恐怕是全网有关卡尔曼滤波最简单易懂的解释,如果你认真的读完本文,你将对卡尔曼滤波有一个更加清晰的认识,并且可以手推卡尔曼滤波。原文作者使用了漂亮的图片和颜色来阐明它的原理(读起来并不会因公式多而...
  • 卡尔曼滤波与扩展卡尔曼滤波(EKF)

    千次阅读 2019-10-31 16:40:40
    图说卡尔曼滤波,一份通俗易懂的教程:https://zhuanlan.zhihu.com/p/39912633 在此之上的一个解释:https://zhuanlan.zhihu.com/p/81404580 1. 基础概念 当物体在运动时,根据当前时刻的位置,和运动方程,可以...
  • 卡尔曼滤波应用及其matlab实现

    万次阅读 多人点赞 2018-02-11 20:32:18
    线性卡尔曼滤波 卡尔曼滤波在温度测量中的应用 X(k)=A*X(k-1)+T*W(k-1) Z(k)=H*X(k)+V(k) 房间温度在25摄氏度左右,测量误差为正负0.5摄氏度,方差0.25,R=0.25。Q=0.01,A=1,T=1,H=1。 假定快时刻...
  • 详解卡尔曼滤波原理  在网上看了不少与卡尔曼滤波相关的博客、论文,要么是只谈理论、缺乏感性,或者有感性认识,缺乏理论推导。能兼顾二者的少之又少,直到我看到了国外的一篇博文,真的惊艳到我了,不得不佩服...
  • 基于卡尔曼滤波融合的改进神经网络油菜成熟度预测方法.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,145
精华内容 1,258
关键字:

卡尔曼滤波数据融合