卡尔曼滤波器(THE KALMAN FILTER)的数学原理

0、内容提要

这篇博客想试图证明卡尔曼滤波器(KALMAN FILTER),即就是说明KF(KALMAN FILTER)和EKF(EXTENDED KALMAN FILTER)算法中的步奏是怎么来的,为什么是这样的。
1. 卡尔曼滤波器(KALMAN FILTER)的数学原理
2. 扩展卡尔曼滤波器(EXTENDED KALMAN FILTER)简介

1、卡尔曼滤波器(KALMAN FILTER)的数学原理

1.1、多元正太分布和贝叶斯公式

在KF和EKF的证明中用到了贝叶斯公式和多元正太分布,下面我们简单回顾:
首先是贝叶斯公式:

1.png

由于 p(y) 并不是依赖于 x 的变量,所以我们就可将p(y)1写成一个归一化的参数 η

2.png

再看看多因素的贝叶斯公式

3.png

贝叶斯公式是后验概率,那么他的全概率公式就是:

4.png

但是上面个这个式子(2.24)并不能暗示任何概率独立的信息,即就是它推不出独立,独立也推不出它:

5.png

6.png

再来看看多元正态分布,他的表达式如下:

7.png

其中均值为 μ ,协方差矩阵为

1.2、卡尔曼滤波器描述

在这里我们简单的再说说卡尔曼滤波器的模型假设和算法步奏,一边更好的理解推导过程。下面分别介绍卡尔曼滤波器的过程模型和观察模型,过程模型主要描述的是相邻时刻状态转移关系。

8.png

公式中的 xt t 时刻的状态向量,At Bt 是两个矩阵, At nn 的, n 就是xt的维度; Bt nm 的, m 就是ut的维度, ut 是控制向量。 εt 是噪声项,服从 N(0,Rt) 。下面是 xt,ut 的具体形式:

12.png

由于 At,Bt 是矩阵,那么就可与正太分布相加,那么就可以得到 xt 的条件概率密度:

9.png

观察模型描述的是状态与观察结果之间的关系:

10.png

其中, zt 是一个 k 维向量,Ct是一个 kn 的矩阵, δt 是噪声项,服从 N(0,Qt) 。下面就是 zt 的条件概率密度:

11.png

最后我们再给出卡尔曼滤波器的算法描述:

13.png

可以看出卡尔曼滤波器算法是一个递归算法,那么他的第一状态向量怎么得到?

14.png

这就第一个状态向量的概率密度,服从 N(μ0,0) ,后面的证明中 bel(x)=p(x)

1.3、数学证明

卡尔曼滤波器算法步奏可以分成三部分,2、3行是预测部分,4行是求卡尔曼增益部分,5、6行是修正部分。下面我们以此证明这三个部分:
Part 1:预测,在证明过程中变量头顶有横线的都表示预测。首先利用全概率公式得到, t 时刻的状态概率表达式:

15.png

将其展开:

16.png

下面是他的简写形式:

17.png

其中:

18.png

Lt分解成如下两部分:

19.png

xt1 有关的都包含在了 Lt(xt1,xt) 中,有 Lt(xt) 无关,我们就可以将它移动到积分号外面:

20.png

积分是一个常数,我们既可以将它包含到参数 η 中。则上式就可以进一步简化:

21.png

下面分别对 Lt 进行一阶导和二阶导:

22.png

23.png

上式中, =: 表示记做。令一阶导数为零:

24.png

求解 xt1

25.png

那么我们就可得到 Lt(xt1,xt) 的表达式(这个我也没太看懂):

26.png

在将它带回高斯分布密度函数:

27.png

概率密度函数求和为1

28.png

移项之后:

29.png

可以看出这是一个与 xt 无关的量,那么:

30.png

中的 η 含有的与上式后面积分项有关的部分为常数。再利用前面的分解式(3.11)得到 Lt(xt) 的表达式:

31.png

Lt 的二阶导代替掉 Ψ ,参看(3.15)。其中 xt1 的一次项下划线为单线,二次项为双线。

32.png

上式是关于 xt 的函数,又由于他对应的高斯分布使用了参数 η ,所以可以将关于 xt1 的项直接删除掉。

33.png

在对其求导:

34.png

对上式使用Inversion Lemma:

35.png

下面是Inversion Lemma的证明:

36.png

Lt(xt) 的一阶导为零:

37.png

解得 xt :

38.png

这样我们就证明了算法的第2行。在对 Lt(xt) 求二阶导:

39.png

这是 Lt(xt) 的曲率,所以它的转置就是 bel¯¯¯¯(xt) 的协方差矩阵。这样我们就证明算法的第3行。

part 2:卡尔曼增益和参数修正。根据观察模型可得:

40.png

做如下简写:

41.png

其中:

42.png

并对 Jt 求一阶导和二阶导:

43.png

Jt 的二阶导数就是 bel(xt) 的协方差矩阵:

44.png

Jt 一阶导数为零:

45.png

对上式左端项进行凑项,然后使用分配率:

46.png

将上式带回(3.38)式:

47.png

因此:

48.png

现在定义卡尔曼增益:

49.png

便可以从(3.41)中解得:

51.png

这就证明了算法的第5行。下面给变换卡尔曼增益 Kt 的形式,使其方便的融入算法流程中:

52.png

这就证明了算法的第4行。最后再将(3.37)使用Inversion Lemma进一步变形:

53.png

至此我们就从数学上严格的证明了卡尔曼滤波器算法。

2、扩展卡尔曼滤波器(EXTENDED KALMAN FILTER)简介

卡尔曼滤波器是线性算法,我们可定想将它推广到非线性。下面给是EKF的描述:

54.png

他的证明与卡尔曼滤波器类似。


3、参考文献

Probabilistic Robotics http://download.csdn.net/detail/a_cainiao_a/9447292
end
这里写图片描述

  • 10
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值