SLAM中基于滤波与优化的方法的联系

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hzwwpgmwy/article/details/81607963

参考书:slam十四讲

着重理解如何将滤波的方法和优化的方法统一到贝叶斯的框架下的.


经典SLAM模型:

{ x k = f ( x x 1 , u k ) + w k z k , j = h ( y j , x k ) + v k , j

其中,第一个是运动方程,第二个是观测方程. SLAM的问题其实就是根据运动输入 u 和观测 z ,求什么样的状态 x 能使状态 x 的条件概率分布最大:
x M A P = a r g   m a x P ( x | z , u )


非线性优化

只考虑观测方程时,也就是没有测量运动输入时(注意这里不是说整个系统没有运动输入,而是观测方程中不包含运动输入这一项,也就是说运动输入只出现在运动方程中),根据贝叶斯法则,有:

P ( x | z ) = P ( z | x ) P ( x ) P ( z ) P ( z | x ) P ( x )

其中, P ( x | z ) 后验概率,右侧的 P ( z | x ) 叫做 似然 P ( x ) 叫做 先验.
我们的目的是寻找 x 使得 P ( x | z ) 最大,即 最大后验概率,它等于 似然先验的乘积,因为我们在观测方程中不知道机器人位姿在哪里( 注意这是因为观测方程没有运动输入啊,运动输入属于运动方程的范畴,注意跟KF的区别),所以就没有先验喽~,然后上面的 最大后验概率问题就转换成了 最大似然问题,即:
x M L E = a r g   m a x P ( z | x )

最大似然估计可以理解为:“在什么样的状态下,最可能产生现在观测的数据.”
根据观测方程( 注意,这个位置 x k 与KF中观测方程中 x ~ k 是不一样的,KF里是指状态变量的 先验估计,这里没有先验的说法,而就是指 优化变量本身.)
z k , j = h ( y j , x k ) + v k , j

得到观测数据的条件概率为:
P ( z j , k | x k , y j ) = N ( h ( y j , x k ) ,   Q k , j )

多维高斯分布概率密度函数为:
P ( x ) = 1 ( 2 π ) 2 d e t ( Σ ) e x p ( 1 2 ( x u ) T Σ 1 ( x u ) )

接着根据 最小化负对数的方式,对状态的 最大似然估计转换成:
x = a r g   m i n ( z k , j h ( y j , x k ) ) T Q k , j 1 ( z k , j h ( y j , x k ) )

该式等价于最小化噪声项(即误差)的平方( Σ 范数意义下),这里的误差也叫做 残差,如下:
e y , j , k = z k , j h ( y j , x k )


卡尔曼滤波

x k = A k x k 1 + B k u k + w k z k = C k x k + v k

KF状态转移方程如下:
x k = A k x k 1 + B k u k + w k

假设状态变量符合高斯分布时,我们将 只需维护状态变量的均值和协方差即可,均值为:
x ~ k = A k x ^ k 1 + B k u k

使用 协方差传递律,可得状态变量的协方差如下:
P ~ k = A k P ^ k 1 A k T + B k M k B k T

根据刚才推导的,后验概率:
P ( x k | z k ) = P ( z k | x k ) P ( x k )

为了推导KF公式,这里将结果设为 x k N ( x ^ k ,   P ^ k ) ,然后根据 后验概率公式得到:
N ( x ^ k ,   P ^ k ) = N ( C k x k ,   R ) · N ( x ~ k ,   P ~ k )

令指数部分相等,即可推出 KF的三个更新方程,这样能看到 贝叶斯法则是如何应用到KF滤波中的了.


<完>
@leatherwang


猜你喜欢

转载自blog.csdn.net/hzwwpgmwy/article/details/81607963