SLAM7-后端的卡尔曼滤波器推导、理解以及扩展

1、为什么需要后端
前面的视觉里程计虽然通过非线性优化获得了理想的T,但是还是有一定的误差,随着距离的逐渐增加,误差也会进行累计,所以需要用后端把这些误差每隔一定的时间进行一次消除。
2、卡尔曼滤波器的理解
滤波器:波在SLAM中指的是概率波,滤波是指把某个正确位置处对应的概率,让他越高越好,把错误位置处的概率,越低越好
滤波器原理
假定机器人在下面的场景出现
在这里插入图片描述
用横坐标表示机器人的位置,纵坐标表示机器人出现在此处的概率,如果机器人知道一共有三扇门,知道三扇门的位置,此时在一个门的前面但是不知道自己在哪个门的前面,可以有下面的分布波:
在这里插入图片描述
之后继续往前走到第二扇门前面,假设机器人有轮式里程计,知道自己又走了d的长度,那么正态分布变为;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
继续向下进行更新,当机器人走到第三扇门前面:
在这里插入图片描述
与卡尔曼滤波器的联系:
在这里插入图片描述
3、后端的状态估计是以概率的形式来进行解释的
状态估计的概率解释:位姿x和路标y服从某种概率分布,目的是通过某些运动数据u(比如惯性测量传感器IMU输入)和观测数据z(比如拍摄到的照片像素点的值)来确定状态量x和y的分布。
状态方程和观测方程在这里插入图片描述
第一个状态方程表明了根据上一时刻k-1的状态、k-1时刻发出的传感器的读数uk和噪声误差wk计算得到这一时刻k的状态,
第二个观测方程实际上指的就是拍摄的图像,是根据k时刻的实际状态xk和地标y(把两者写到一起)、像素误差vk得到这一时刻的观测数据zk

先验:根据0~k-1时刻的各种数据来推测k时刻的状态xk
后验:结合了k时刻的观测数据得到的k时刻状态
后端估计的概率公式:假定我们有了初始状态x0,我们希望的目的,就是根据0~k时刻所有的数据,来观测当前的状态。那么这就可以写成:
在这里插入图片描述
根据贝叶斯法则:贝叶斯等式左边的正比于贝叶斯等式右边的分子,因为分母是在求和,不会有选择和改变的余地。
在这里插入图片描述
公式改写为:左边先正比于P(X0,U1:k,Z1:k | Xk)P(Xk),
对于第一项,k时刻的先验并不能决定除了Zk以外的在k时刻之前的数据,因此第一项就等于P(Zk | Xk)
对于第二项,P(Xk)是没有Zk情况下的k时刻状态,它也就等于在前面的记录的x0,z1:k-1……发生情况下产生的数据。
进一步改写为:
在这里插入图片描述
右边第一项,是“给定了一个先验Xk的情况下,什么观测数据Zk最能符合这个先验“的概率。因此这就是所谓的似然
右边第二项,是根据0~k-1时刻的观测数据,推测得知k时刻的先验状态
后验=似然
先验
马尔科夫链:对于第二项,由于xk受到xk-1的影响,我们将它在k-1时刻展开,根据全概率公式:xk是B,Xk-1是A
这其实本身是一个全概率公式:
把全概率公式调换左右顺序,第二项变为:
在这里插入图片描述
整体概率估计公式变为:
左边代表似然,意味着给定状态解释当前测量的概率,
右边代表先验,意味着系统的Xk的动态变化,Zk-1影响Xk-1,Xk-1影响Xk
在这里插入图片描述
概率公式的解答
如果认为k时刻的状态只与k-1时刻有关,那就是用扩展卡尔曼滤波器(EKF)来做。如果觉得和所有状态都有关,那就是用非线性优化来做。目前主流是非线性优化。
卡尔曼滤波器
推导准备工作
因为认为k时刻的状态只与k-1时刻有关,根据概率估计公式,把第二项进行逐次化简:
step1:概率估计公式在这里插入图片描述
step2:概率估计公式第二项在这里插入图片描述
step3:第二项的左边在这里插入图片描述
step4:第二项的右边,k-1时刻的状态与之后的传感器读数uk无关
在这里插入图片描述
我们发现,第二项的右边类似于状态估计方程,说明我们只需要维护一个状态量xk-1,之后进行不断的迭代更新,就可以推到xk.
推导过程:我们的最终是求xk的后验,后验=似然*先验

先假设状态量都服从高斯分布,这是一个线性高斯系统:
在这里插入图片描述
根据定义,我们可以先求先验
在这里插入图片描述
这里,在这里插入图片描述
假设我们已经有了xk-1的后验和协方差在这里插入图片描述
那么可以写出xk的先验公式是:尖帽子xk表示后验,横线帽子xk表示先验
在这里插入图片描述
进一步标记:
在这里插入图片描述

最终得到:
在这里插入图片描述
似然的公式是
在这里插入图片描述

最终概率估计公式:用尖帽子表示后验概率,那么主线的“后验=似然*先验”就是:
在这里插入图片描述
把概率估计公式进行左右展开,因为估计公式是满足高斯分布,只看exp的指数部分,可以得到:
在这里插入图片描述
在这里插入图片描述
进一步展开,通过两边对于xk的一次与二次系数相等,从而确定等式左边的后验Xk(尖帽子)和等式右边的先验Xk(横线帽子)之间的关系
对于二次项系数相等,我们有:
在这里插入图片描述
对于一次项系数相等,我们有:在这里插入图片描述
通过上面的公式我们可以知道怎么通过先验来求后验了,后验的位姿状态与先验的位姿状态的差异,事实上就是(“观测值zk”与“估计的观测值”之间的误差 )乘以一个(卡尔曼增益)!
卡尔曼滤波器实际的使用步骤
在这里插入图片描述
扩展卡尔曼滤波器
上面的卡尔曼假定了运动方程和观测方程都是线性的,可以有系数矩阵A,C,但是实际中两个方程可能不是线性的,一个高斯分布经过非线性的变换,结果往往不再是高斯分布。
过程推导:由于观测方程不是线性的,所以我们进行泰勒展开
在这里插入图片描述
在这里插入图片描述
把偏导数记为F和H,那么上面的式子就写成
在这里插入图片描述
由于左右两边都满足正态分布:
在这里插入图片描述
在这里插入图片描述
所以先验就是:
在这里插入图片描述
似然就是:
在这里插入图片描述
最后根据一次和二次型,得到
在这里插入图片描述
在这里插入图片描述
讨论:EKF 的局限:

1.是基于马尔科夫性的,但如果当前帧与很久前有关,滤波器难以处理。(不如非线性优化可以考虑很久前的状态)

2.EKF是用泰勒展开一次导数的系数作为线性近似,但如果实际情况有着强烈的非线性,那就会有非线性误差。

3.EKF slam由于视觉slam中路标数量很大,因此存储量呈平方增长。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值