看论文,发现很多SLAM方面的文章都涉及图优化,其中更包含有因子图。正好前段时间看了PRML,将其进行整理。
(诶,果然理论的内容就是得及时用起来,现在又记不太清楚了)
因子图
来自于PRML第八章“图模型”
- 有向图和无向图都使得若干个变量的一个全局函数能够表示为这些变量的子集上的因子的乘积。由因子图表示这个分解
- 因子图表示分解的方法:在表示变量的结点的基础上,引入额外的结点表示因子本身
- 将一组变量上的联合概率分布写成因子的乘积形式:其中xs表示变量的一个子集。每个因子fs是对应的变量集合xs的函数
- 因子图:在因子图中,概率分布中的每个变量都有一个结点(有向图、无向图的情形相同)。还存在其他结点,表示联合概率分布中的每个因子。最后,在每个因子结点和因子所依赖的变量结点之间,存在无向链接。因此,因子图能够表达出关于分解本身的更加细节的信息
- 因子结点:对于因子结点,对应于最大团块xs,fs(xs)被设置为与团块势函数相等
- 将有向图转化为因⼦图:构造变量结点(有向图中的结点),然后构造因⼦结点(对应于条件概率分布),最后添加上合适的链接。与之前⼀样,同⼀个有向图可能对应于多个因⼦图。
SLAM中用到的因子图
来自于《视觉SLAM十四讲》第十一讲
- SLAM可以表示成一个动态的贝叶斯网络,SLAM中的运动和观测方程可以表示状态变量之间的条件概率
其中,箭头表示依赖关系,依赖也就代表着条件概率 - 后端优化的目标:在既有约束之上,通过调整贝叶斯网络中随机变量的取值,使整个后验概率达到最大
- 将SLAM转化成为因子图:此时,优化变量只有相机位姿和路标,观测和输入是给定量,不需要对其进行优化
- 对于因子图的优化,就是调整各变量的值,使它们的因子之乘积最大化,通常做法是将各因子的条件概率取高斯分布的形式,然后使用最小二乘法进行求解