SLAM的优化过程其实就是从一个联合概率去分解边界概率和条件概率的过程;
1. 概率的定义
概率:用数据去计算某件事情发生的可能性;
条件概率:条件概率表示在条件Y=b成立的情况下,X=a的概率,记作P(X=a|Y=b)或P(a|b),它具有如下性质:
“在条件Y=b下X的条件分布”也是一种“X的概率分布”,因此穷举X的可取值之后,所有这些值对应的概率之和为1即:
联合概率:联合概率指的是包含多个条件且所有条件同时成立的概率,记作P(X=a,Y=b)或P(a,b),
边缘概率:边缘概率是与联合概率对应的,P(X=a)或P(Y=b),这类仅与单个随机变量有关的概率称为边缘概率
联合概率,条件概率与边缘概率之间的关系:
2、联合概率,条件概率和边缘概率在SLAM中的应用:
这就涉及到slam的概率建模,对于slam问题,主要涉及到的有两个重要因素: 当前机器人的状态sigma, 以及与当前状态相关的一些观测ri, 这里ri可以理解为相机所观测到的路标点, 状态可以理解为相机的位姿, 那么每一次的观测项ri 都是服从概率分布p(ri | sigma), 且各个观测值相互独立;则就有
在slam问题中, 我们一般已知的都是机器人的状态 sigma ,也叫做先验信息p(sigma), 如GPS,编码轮信息等, 需要求出的是后验概率,也就是p(sigma| r), 及已经有了对应的路标点,以ORBslam为例,不管是TrackwithReferenceframe 还是TrackwithMotionModel, 这里都需要对当前的位姿进行一个预测,无论参考帧的位姿还是用运动模型计算出的位姿,然后通过最小化三维点重投影误差来优化, 这里的预测出的位姿就可以看作相机的状态,每一个三维点就是一次观测 ri
那么这个优化问题就可以理解为当观测点已经确定时, 那么当前相机的位姿可能是sigma的概率是多少,那么视觉slam所要解决的优化问题也就是尽可能的让这个概率最大化:
根据贝叶斯法则有:
因为分母与状态量sigma无关,所以相当于
这就可以看到,其实优化问题中最重要的就是要更方便地求出边缘概率,也叫边际概率 和条件概率,通过这二者的式子,进行最优化求出理想的状态;
已经有了这两个理论基础后,再理解舒尔补在SLAM中的应用,先要说的是多元高斯分布,:
零均值的多元高斯分布有如下概率形式:
这里的p(x) 就是联合概率分布,也就是在slam中需要优化的项,但是这里的问题是当公式中x的维数越来越高,也就是观测量越来越多时,如何更快地从高斯多元分布中丢弃部分变量, 也就是从P(X1,X2,X3) 中求出 p(x1,x2), 或者p(x2,x3);
以下面这个例子:
还是多元变量x服从高斯分布,且由两部分组成 x=[a b], 那么变量之间构成的协方差矩阵为
其中A = COV(a,a), D = cov(b,b), C= cov(a,b). 由此变量x的概率分布为
中间的协方差矩阵就可以用舒尔补进行分解,具体的分解过程是:
这样就可以从多元高斯分布中直接分解出边际概率和条件概率;