卡尔曼滤波

系列文章目录


前言

最近在阅读概率机器人这本书,读到了卡尔曼滤波的相关内容,想要记录下来以供以后的复习。对书中的内容进行了翻译并加入了自己的理解。在看之前大家可以先了解一下贝叶斯滤波算法的基本思想和基本的数学公式的推导。


一、线性高斯系统

卡尔曼滤波的使用场景是在线性系统中用于连续状态的预测的滤波算法。在某一时刻t,卡尔曼滤波的可信度是由两个参数来表示,分别是均值\mu _{t}和协方差\Sigma _{t}。满足一下三个性质以及贝叶斯滤波中的马尔可夫性质即满足卡尔曼滤波后验,可以进行状态的预测。

1、在添加加性高斯噪声之后状态转移概率函数必须是一个线性函数,其数学表达式如下:

x_{t}=A_{t}x_{t-1}+B_{t}u_{t}+\varepsilon _{t}

其中x_{t}x_{t-1}都是n维的状态向量(列向量),A_{t}是状态转移矩阵,B_{t}是控制矩阵,\varepsilon _{t}是高斯噪声其均值是0,协方差矩阵是R_{t}。把这个公式带入到高斯分布的概率密度函数中去可以得到以下公式:

p(x_{t}|u_{t},x_{t-1})=det(2\pi R_{t})^{-1/2}exp\left \{ -\frac{1}{2}(x_{t}-A_{t}x_{t-1}-B_{t}u_{t})^{T}R_{t}^{-1}(x_{t}-A_{t}x_{t-1}-B_{t}u_{t}) \right \}

2、在添加加性高斯噪声之后,其观测概率密度函数也必须是线性函数,其数学表达式如下:

z_{t}=C_{t}x_{t}+\delta _{t} 

同样带入高斯分布的概率密度函数中去可以得到

p(z_{t}|x_{t})=det(2\pi Q_{t})^{-1/2}exp\left \{ -\frac{1}{2}(z_{t}-C_{t}x_{t})^{T}Q_{t}^{-1}(z_{t}-C_{t}x_{t}) \right \} 

 下面这个图是卡尔曼滤波状态量和协方差矩阵的更新流程。

3、 初始的bel(x_{0})必须是正态分布(normal distributed)。其数学表示为:

bel(x_{0})=p(x_{0})=det(2\pi \Sigma _{0})^{-1/2}exp\left \{ -\frac{1}{2}(x_{0}-\mu _{0})^{T}\Sigma _{0}^{-1}(x_{0}-\mu _{0}) \right \}

 满足以上这三个性质,就能够确保bel(x_{t})是一个高斯分布。

二、卡尔曼滤波算法

1.卡尔曼滤波算法的应用

下图是一个卡尔曼滤波算法在一维上的简单的定位的应用。假设机器人沿着横轴移动。机器人的先验定位由高斯分布给出如图 (a)。通过机器人安装的传感器来返回一个它的位置信息如图(b)中的黑体线的峰值。其峰值是由传感器预测得到的,曲线的宽度表明了观测的不确定度,再结合先验的测量,如图(c)的粗体线是由先验以及传感器的测量得到的。可以看出来它的均值位于两条曲线的均值之间,且不确定度比之前两条曲线的不确定度都要小。

下一时刻,假设机器人向右移动,由于下一个状态的不确定性是随机的,它的不确定性会变大,所以会比较宽。如图(d)中的黑体曲线,然后在该时刻接受传感器的观测如图(e)中的黑体线。结合先验和测量信息可以得到如图(f)中的黑体线,同样可以看出该曲线的均值在两条曲线之间,且不确定性也减小。

 

2.卡尔曼滤波的数学推导

1、预测部分的推导

 x_{t}的均值和方差分别是A_{t}x_{t-1}+B_{t}u_{t}R_{t},把这两个变量带入上面的公式可以得到下面这个公式:

 为了看起来简单一些,记为

其中

L_{t}=\frac{1}{2}(x_{t}-A_{t}x_{t-1}-B_{t}u_{t})^{T}R_{t}^{-1}(x_{t}-A_{t}x_{t-1}-B_{t}u_{t})+\frac{1}{2}(x_{t-1}-\mu _{t-1})^{T}\Sigma _{T-1}^{-1}(x_{t-1}-\mu _{t-1}) 

 

现在把L_{t}分解成两部分函数L_{t}(x_{t-1},x_{t})L_{t}(x_{t}),如下

L_{t}=L_{t}(x_{t-1},x_{t})+L_{t}(x_{t})

 把x_{t-1}这个变量全部集中在L_{t}(x_{t-1},x_{t})中,这样就可以把含有x_{t}变量的项移出积分的外部,所以可以得到下面这个公式:

上式积分的值与x_{t}无关,经过积分之后就可以得到:

 我们需要找到一个L_{t}(x_{t-1},x_{t}),关于x_{t-1}的二次函数(这个二次函数中也会有x_{t},但是并不影响我们的求解),为了确定这个函数,对L_{t}求两次导数分别得到:

\psi _{t}是函数的曲率,令一阶导数为0可以得到一个均值(注意我们是在求解x_{t-1}),

 我们就可以得到一个二次函数如下所示:

 这个函数不是唯一的,事实上

是关于变量x_{t-1}的高斯分布的密度函数,由概率密度函数的定义可得:

所以有:

由于积分的值和x_{t}无关所以,可以得到如下的公式: 

注意到等式两边的\eta是不一样的,但是没有加以区分,在原书中有说明。接下来我们继续求解函数L(x_{t}),注意到它和L_{t}是不一样的,由之前的定义可以得到:

 将\psi _{t}回带可以解得:

从上式中可以看出来L(x_{t})x_{t-1}无关,且是关于x_{t-1}的一个二次函数。也可以证明服从正态分布,对该函数分别求一阶导数和二阶导数可以得到均值和协方差。

由 inversion lemma 定理可得:

 令其一阶导数为零可以得到

 对其求二阶导数:

曲率的逆就是协方差矩阵。

2、观测部分的推导 

同样的从贝叶斯滤波出发有如下式子:

其中p(z_{t}|x_{t})也服从正态分布,均值是C_{t}x_{t},协方差是Q_{t}。故上式也可以表达为:

 其中

同样分别求一阶导数和二阶导数:

 对二阶导数取逆可以得到其协方差矩阵:

令一阶导数为0可以得到:

 上式的左侧可以写为:

把上式带入上上式可以得到: 

 接下来就会得到一系列式子:

 定义K:

 

 到这里数学公式的推导就结束了。因为是第一次看所以肯定有不对的地方,大家可以一起讨论。图片来自概率机器人书籍。


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值