首页 > 编程知识 正文

一阶rc低通滤波器公式,卡尔曼滤波算法原理图解

时间:2023-05-04 03:28:26 阅读:12592 作者:4969

我在网上看了很多关于卡尔曼滤波原理的博客和论文,有的只说理论,有的缺乏感性,有的缺乏感性认识,有的缺乏理论推导能兼顾的东西很少,看到海外的博文,真的很惊讶。 必须钦佩作者细致的精神。 翻译后分享给大家。 原文链接: http://www.BZ arg.com/p/how-a-Kalman-filter-works-in

我们得谈谈卡尔曼滤波器。 因为那个能做的很厉害。 出乎意料的是,很少有软件工程师和科学家知道这一点,所以我很失望。 因为卡尔曼滤波是一个非常强大的工具,可以在不确定性中整合信息,同时提取准确信息的能力看起来很不可思议。

在任何动态系统(包括3358 www.Sina.com/http://www.Sina.com/)上,卡尔曼滤波器都可以用于将系统下一步骤的流程转换为http://www.Sina.com/可以指出,即使伴随着各种干扰,卡尔曼滤波始终是真实发生的。

什么是卡尔曼滤波?上使用卡尔曼滤波是理想的,具有内存消耗少的优点(除了以前的状态量以外不需要保留历史数据),非常适合实时问题和嵌入式系统。

在谷歌上找到的很多关于实现卡尔曼滤波的公式看起来有点难以理解,但这种情况有点糟糕。 事实上,正确地看,卡尔曼滤波器非常简单,容易理解。 以下,用漂亮的图像和颜色说明清楚。 知道基本概率和矩阵知识就好了。

不确定信息玩具为例。 开发了能在森林里奔跑的小机器人。 这个机器人需要知道准确的位置才能导航。

可以说机器人有表示位置和速度的状态:

请注意,此状态是有关此系统基本属性的一堆数字,可以是其他。 在这个例子中是位置和速度。 也可以是容器中的液体总量、汽车引擎的温度、用户手指在触摸板上的位置坐标或需要跟踪的信号。

这个机器人装有GPS,精度约为10米,还可以,但需要把自己的位置精确到10米以内。 森林里有很多沟和悬崖,如果机器人走错一步,就有可能从悬崖上掉下来,所以光靠GPS是不够的。

我们可能知道机器人是如何工作的信息。 例如,机器人知道发送给电机的指令,知道自己在向某个方向移动,是否有人介入,在下一个状态下机器人很可能会向同一个方向动作。 当然,机器人不知道自己的动作。 有可能受到风的影响,车轮的方向稍微偏移,或者遇到不平整地面而跌倒。 因此,车轮旋转的长度并不能准确地表示机器人实际行走的距离,预测也并不完美。

GPS 有根据的预测告诉了我一些状态信息。 我们的连续变化的系统告诉我们机器人是如何工作的,都是间接的,伴随着不确定性和不准确性。 但是,如果使用对我们来说所有可用的信息,我们能根据自己的推测得到更好的结果吗? 当然回答是。 这就是卡尔曼滤波的有用性。

我们能用卡尔曼滤波做什么?继续用只有两种状态的简单例子说明:位置和速度。

我不知道实际的位置和速度。 它们之间有很多正确的组合,但其中一些比其他部分更有可能。

卡尔曼滤波器假设两个变量(位置和速度,在本例中为)是随机的,即传感器。 每个变量都有表示随机分布中心的预测和表示不确定性的卡尔曼滤波是如何看到你的问题的

在上图中,位置和速度为服从qkdhb分布,这意味着无法根据一个变量的状态推测另一个变量可能的值。 下面的例子更有趣。 位置和速度为均值,观测特定位置的可能性取决于当前速度。

这是可能发生的事。 例如,根据旧位置估计新位置。 如果速度太高,我们可能已经移动得很远了。 如果你慢慢移动,距离就不是很远了。 跟踪这种关系非常重要。 因为它告诉了我们方差:测量值之一告诉了其他变量可能的值。 这就是卡尔曼滤波的目的,就是尽量从包含不确定性的测量数据中提取更多的信息!

该相关性由不相关表示,并且简单地说,矩阵中的每个元素表示第I个和第j个状态变量之间的相关性。 (您可能推测协方差矩阵为相关,这意味着可以任意交换I和j。 协方差矩阵通常用“”表示,其中的元素用“”表示。

更多的信息

我们基于qkdhb分布

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

        (1)

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

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

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

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

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

外部控制量

  我们并没有捕捉到一切信息,可能存在外部因素会对系统进行控制,带来一些与系统自身状态没有相关性的改变。
  以火车的运动状态模型为例,火车司机可能会操纵油门,让火车加速。相同地,在我们机器人这个例子中,导航软件可能会发出一个指令让轮子转向或者停止。如果知道这些额外的信息,我们可以用一个向量来表示,将它加到我们的预测方程中做修正。
  假设由于油门的设置或控制命令,我们知道了期望的加速度,根据基本的运动学方程可以得到:

  以矩阵的形式表示就是:

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

外部干扰

  如果这些状态量是基于系统自身的属性或者已知的外部控制作用来变化的,则不会出现什么问题。
  但是,如果存在未知的干扰呢?例如,假设我们跟踪一个四旋翼飞行器,它可能会受到风的干扰,如果我们跟踪一个轮式机器人,轮子可能会打滑,或者路面上的小坡会让它减速。这样的话我们就不能继续对这些状态进行跟踪,如果没有把这些外部干扰考虑在内,我们的预测就会出现偏差。
  在每次预测之后,我们可以添加一些新的不确定性来建立这种与“外界”(即我们没有跟踪的干扰)之间的不确定性模型:

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

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

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

  由上式可知,新的最优估计是根据上一最优估计预测得到的,并加上已知外部控制量修正
  而新的不确定性上一不确定预测得到,并加上外部环境的干扰
  好了,我们对系统可能的动向有了一个模糊的估计,用和来表示。如果再结合传感器的数据会怎样呢?

用测量值来修正估计值

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

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

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

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

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

  我们将这种不确定性(例如:传感器噪声)用协方差表示,该分布的均值就是我们读取到的传感器数据,称之为。
现在我们有了两个qkdhb分布,一个是在预测值附近,一个是在传感器读数附近。

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

  剩下的就是重叠部分了,这个重叠部分的均值就是两个估计最可能的值,也就是给定的所有信息中的最优估计
  瞧!这个重叠的区域看起来像另一个qkdhb分布。

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

融合qkdhb分布

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

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

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

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

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

  矩阵称为潇洒的手套,下面将会用到。放松!我们快要完成了!

将所有公式整合起来

  我们有两个qkdhb分布,预测部分,和测量部分,将它们放到式(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. 不懂百度。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。