无人驾驶技术之Kalman Filter原理介绍

基本思想

  以K-1时刻的最优估计Xk-1为准,预测K时刻的状态变量Xk/k-1,同时又对该状态进行观测,得到观测变量Zk,再在预测与观之间进行分析,或者说是以观测量对预测量进行修正,从而得到K时刻的最优状态估计Xk。

具体实例

  设一个机器人有两个状态量,分别为位置P,速度V。在这里记为:

卡尔曼滤波假设两个变量(位置和速度,在这个例子中)都是随机的,并且服从高斯分布。每个变量都有一个均值μ,表示随机分布的中心(最可能的状态),以及方差 ,表示不确定性。其中,位置和速度之间可以是相关的也可以是不相关的。如果二者相关,那么这意味着可以由其中一个变量推出另一个变量的值。例如,我们基于旧的位置来估计新位置。如果速度过高,我们可能已经移动很远了。如果缓慢移动,则距离不会很远;如果二者不相关,则无法相互推出。它们这种相关性,可以用协方差矩阵来表示,简言之,矩阵中的每个元素Σij表示第i个和第j个状态变量之间的相关度。

预测方程

  下面我们用矩阵来表述此问题。基于高斯分布来建立状态变量,那么在时刻K需要两个信息:最佳估计以及协方差矩阵Pk

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

我们用基本的数学公式表示下一状态的预测:

                Pk=Pk-1+Δt*Vk-1

                Vk=              Vk-1

用矩阵表示即为:

现在,预测矩阵已经表示出下一时刻的状态,接下来表示协方差矩阵。在给出协方差矩阵前,我们需要了解一个简单的变换:

                         Cov(x)=Σ

                  Cov(Ax)=AΣAT

因此得到 Pk=FkPk-1FkT.

综上,我们得到预测方程为:

外部控制

  我们并没有捕捉到一切信息,可能存在外部因素会对系统进行控制,带来一些与系统自身状态没有相关性的改变。以汽车运动模型为例,汽车司机可能会控制油门,使得汽车加速行驶。同样地,机器人这个例子中,内部指令也可能使得轮子加速转动或者减速。我们可以将这些额外的控制信息,用一个向量 表示,将它们加到我们的预测方程中做修正。

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

                Pk=Pk-1+Δt*Vk-1+1/2*aΔt2

                Vk=              Vk-1+aΔt

用矩阵表示即为:

其中,Bk称为控制矩阵,称为控制向量(对于没有外部控制的简单系统来说,这部分可以忽略)。考虑了预测部分+外部控制后,我们还有一些因素需要考虑,例如噪声。

外部干扰

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

  由于原始估计中的每个状态变量更新到新的状态后,仍服从高斯分布。我们就可以说的每个状态变量移动到了一个新的服从高斯分布的区域,协方差为Qk。换句话说,我们就是将这些未跟踪到的干扰当做协方差为Qk的噪声处理。这就产生了具有不同协方差,但均值相同的新的高斯分布。我们可以通过简单地添加Qk得到扩展的协方差,下面给出预测步骤的完整表达式:

  由上式可知,新的最优估计是根据上一最优估计预测得到的,并加上已知的外部控制变量的修正。而新的不确定性由上一不确定性预测,并加上外部环境干扰得到的。

  以上就是我们给出Kalman Filter的预测部分的讲解,那么接下来我们说下Kalman Filter的另一个中部分---更新,即结合传感器数据对预测部分进行进一步的确定性增强。

用测量数据修正估计

  我们可能会有多个传感器来测量系统当前的状态,哪个传感器具体测量的是哪个状态变量并不重要,也许一个是测量位置,一个是测量速度,每个传感器间接地告诉了我们一些状态信息。但是需要注意的是,有些情况下,传感器读取的数据的单位尺度与我们跟踪状态的单位尺度不同,我们需要用矩阵Hk将我们预测的数据转换为与传感器读取的数据相同的单位尺度,以便进行数据融合。

我们通过预测数据计算出传感器读数分布如下式所示:

                      

  卡尔曼滤波的一大优点就是能处理传感器噪声,换句话说,我们的传感器或多或少都有点不可靠,并且原始估计中的每个状态可以和一定范围内的传感器读数对应起来。 从测量到的传感器数据中,我们大致能猜到系统当前处于什么状态。但是由于存在不确定性,某些状态可能比我们得到的读数更接近真实状态。 我们将这种不确定性(例如:传感器噪声)用协方差Rk表示,该分布的均值就是我们读取到的传感器数据,称之为

  现在我们得到两个高斯分布,一个是在预测值附近,一个是在传感器读数附近。 我们必须通过这两个高斯分布找到最优解。那么,最有可能的状态是什么呢?对于任何可能的值,有两种情况:(1)传感器的测量值;(2)由前一状态得到的预测值。那么如果得到这两种情况都可能发生的概率,将这两个高斯分布相乘就可以了。 就可到满足二者共同的部分,那么这个重叠部分也就是两个估计最优可能的值,即所有信息中的最优估计。

  把两个具有不同均值和方差的高斯分布相乘,你会得到一个新的具有独立均值和方差的高斯分布!推导如下:

假设预测部分满足N(x;μ0,σ02),测量部分满足N(x;μ1,σ12),那么N(x;μ0,σ02)*N(x;μ1,σ12)=?N(x;μ‘,σ‘2)

通过将高斯分布概率密度公式带入,并进行归一化使得总概率为一,可以得到:

                             

将上式相同部分用K表示:

                       

将上式进一步写成矩阵形式,用Σ表示高斯分布的协方差,表示每个维度的均值,则:

                      

其中矩阵K称为卡尔曼增益。

下面整理所有公式,推导更新步骤。


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

                  

将式(1)(2)带入K的等式中得到卡尔曼增益为:

                        

将(1)(2)的两式同时左乘矩阵的逆Hk-1(注意K中有Hk)约掉Hk,再将式(2)右边同时右乘矩阵HKT的逆得到下式:

  上式给出了完整的更新步骤。就是最优估计,我们可以将它和Pk‘放到下一次预测和更新方程中不断迭代。以上所有公式你只需用到式(0)(4)(5)(6)。

总结:

  想象一下,你在一辆装有外部传感器的汽车里。 汽车传感器可以检测移动的物体:例如,传感器可能检测到行人,甚至是自行车。 对于多样性,让我们以自行车示例逐步执行卡尔曼滤波算法。
卡尔曼滤波器算法将执行以下步骤:

  • 第一次测量 - 滤波器将接收自行车相对于汽车位置的初始测量值。 这些测量将来自雷达或激光雷达传感器;
  • 初始化状态和协方差矩阵 - 滤波器将根据第一次测量初始化自行车的位置;
  • 然后汽车将在一段时间Δt后接收另一个传感器测量值;
  • 预测 - 算法将预测自行车在一段时间Δt后的位置。 在Δt之后预测自行车位置的一种基本方法是假设自行车的速度是恒定的; 因此,自行车移动距离为速度* Δt。 在扩展卡尔曼滤波器中,我们假设速度是恒定的; 在无迹的卡尔曼滤波器中,我们将介绍一个更复杂的运动模型;
  • 更新 - 滤波器将“预测”位置与传感器测量值所示的位置进行比较。 将预测的位置和测量的位置组合以给出更新的位置。 卡尔曼滤波器将根据每个值的不确定性对预测位置或测量位置施加更多权重。
  • 然后汽车将在一段时间Δt后接收另一个传感器测量值。 然后该算法执行另一个预测和更新步骤。

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

  本期的无人驾驶技术之Kalman Filter就介绍到这里,下一期介绍扩展卡尔曼滤波技术,敬请期待。

  

  

                

              

                    

  

原文地址:https://www.cnblogs.com/andjsmile/p/9459598.html

时间: 2024-08-03 14:53:34

无人驾驶技术之Kalman Filter原理介绍的相关文章

卡尔曼滤波(Kalman Filter)原理与公式推导

一.背景---卡尔曼滤波的意义 随着传感技术.机器人.自动驾驶以及航空航天等技术的不断发展,对控制系统的精度及稳定性的要求也越来越高.卡尔曼滤波作为一种状态最优估计的方法,其应用也越来越普遍,如在无人机.机器人等领域均得到了广泛应用. 对于Kalman Filter的理解,用过的都知道"黄金五条"公式,且通过"预测"与"更新"两个过程来对系统的状态进行最优估计,但完整的推导过程却不一定能写出来,希望通过此文能对卡尔曼滤波的原理及状态估计算法有更一

Kalman Filter、Extended Kalman Filter以及Unscented Kalman Filter介绍

模型定义 如上图所示,卡尔曼滤波(Kalman Filter)的基本模型和隐马尔可夫模型类似,不同的是隐马尔科夫模型考虑离散的状态空间,而卡尔曼滤波的状态空间以及观测空间都是连续的,并且都属于高斯分布,因此卡尔曼滤波又称为linear Gaussian Markov model,它的数学定义如下:$$\underbrace{s_{t}=C s_{t-1}+G h_{t}+\gamma_{t}}_{\text { latent process }}, \quad \underbrace{x_{t}

GMM+Kalman Filter+Blob 目标跟踪

转 http://www.cnblogs.com/YangQiaoblog/p/5462453.html ==========图片版============================================================================== ===================================================================================== 最近学习了一下多目标跟踪,看了看Mat

卡尔曼滤波(Kalman Filter) 的进一步讨论

我们在上一篇文章中通过一个简单的例子算是入门卡尔曼滤波了,本文将以此为基础讨论一些技术细节. 卡尔曼滤波(Kalman Filter) http://blog.csdn.net/baimafujinji/article/details/50646814 在上一篇文章中,我们已经对HMM和卡尔曼滤波的关联性进行了初步的讨论.参考文献[3]中将二者之间的关系归结为下表. 上表是什么意思呢?我们其实可以下面的式子来表示,其中,w 和 v 分别表示状态转移 和 测量 过程中的不确定性,也即是噪声,既然是

卡尔曼滤波器 Kalman Filter (转载)

在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”.跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人! 卡 尔曼全名Rudolf Emil Kalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯.1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位.1957年于哥 伦比亚大学获得博士学位.我们现在要学习的卡尔曼滤波器,正是源于他的博士论文和1960年发表的论文<A New Approach to Linear Fil

(二). 细说Kalman滤波:The Kalman Filter

本文为原创文章,转载请注明出处,http://www.cnblogs.com/ycwang16/p/5999034.html 前面介绍了Bayes滤波方法,我们接下来详细说说Kalman滤波器.虽然Kalman滤波器已经被广泛使用,也有很多的教程,但我们在Bayes滤波器的框架上,来深入理解Kalman滤波器的设计,对理解采用Gaussian模型来近似状态分布的多高斯滤波器(Guassian Multi-Hyperthesis-Filter)等都有帮助. 一. 背景知识回顾 1.1 Bayes滤

Kalman滤波器原理和实现

Kalman滤波器原理和实现 kalman filter Kalman滤波器的直观理解[1] 假设我们要测量一个房间下一刻钟的温度.据经验判断,房间内的温度不可能短时大幅度变化,也就是说可以依经验认为下一刻钟的温度等于现在的温度.但是经验是存在误差的,下一刻的真实温度可能比我们预测温度上下偏差几度,这个偏差可以认为服从高斯分布.另外我们也可以使用温度计测量温度,但温度计测量的是局部空间的温度,没办法准确的度量整间房子的平均温度.测量值和真实值得偏差也认为服从高斯分布. 现在希望由经验的预测温度和

Kalman Filter的数学推导

关于Kalman Filter,有一篇很好的入门文章,建议先通读: Understanding the Basis of the Kalman Filter Via a Simple and ... 不过这篇文章只推导了一元分布的情况,对多元分布的情况只是简单地写出结论.因此这里给出推导过程. 预备知识1:多元正态分布 多元正态分布$N(\mu,\Sigma)$的分布密度函数为: $p(x)=\frac{1}{(2\pi)^{\frac{k}{2}}|\Sigma|^{\frac{1}{2}}}

卡尔曼滤波(Kalman Filter)在目标边框预测中的应用

1.卡尔曼滤波的导论 卡尔曼滤波器(Kalman Filter),是由匈牙利数学家Rudolf Emil Kalman发明,并以其名字命名.卡尔曼出生于1930年匈牙利首都布达佩斯.1953,1954年分别获得麻省理工学院的电机工程学士以及硕士学位.1957年于哥伦比亚大学获得博士学位.卡尔曼滤波器是其在博士期间的研究成果,他的博士论文是<A New Approach to Linear Filtering and Prediction Problem>[1]. 卡尔曼滤波器是一个最优化自回归