SLAM 的另一种求解方法是基于图(或网络,Graph)的 SLAM,称之为 Graph SLAM或基于图优化的 SLAM。在 Graph SLAM 中,移动机器人的位姿通过 Graph中的节点(Nodes)表示。由观测或航迹推测得到的位姿之间的约束通过节点之间的边(Edges)进行编码。Graph SLAM 需要考虑两个问题。一是如何通过传感器数据识别约束,即数据关联问题。该问题的解决方法称之为 SLAM 前端(Front-End),其直接处理传感器数据。二是如何校正机器人的位姿以便在给定约束的条件下获得一致的环境地图。这部分的方法称为优化或者SLAM 后端(Back-End)。为了解决该问题,要寻找所有节点的构形(Configuration)以使编码在约束中的观测似然最大化。通常,人们将负的观测似然称为误差或者网络中的能量。该问题的另外一种观点是物理学中的弹簧-质点模型,节点视为质点,约束视为连接质点的弹簧。弹簧和质点的最小能量构形即为建图问题的解。Graph SLAM 由 Lu 和 Milios在1997年提出。其后许多研究者在此基础上对Graph SLAM进行了研究。Gutmann 和 Konolige提出一个在运行增量估计算法时构筑网络和探测闭环的有效途径。Howard 等应用松弛算法定位机器人和建图。Frese 等提出一个高斯赛德尔(Gauss-Seidel)松弛的一个变种,命名为多层次松弛(multi-level relaxation,MLR)。Dellaert
和 Kaess首次使用稀疏矩阵分解解决离线 SLAM 中的线性化问题。随后,Kaess 等提出iSAM,一个利用空间记录计算稀疏分解的在线版本。最近,Konolige 等提出一种基于位姿图(Pose-Graph)方法的开源实现,用于以一种有效途径构筑线性系统。Olson 等提出一个基于随机梯度下降的有效优化方法,该方法可以有效校正即使是很大的位姿图。Valiente 等针对全景视觉的应用,提出一种改进的随机梯度下降优化方法。为了提高收敛速度,Grisetti 等
对 Olson 的方法进行了扩展,使用 2D 和 3D 节点的树参数化(Tree Parameterization)。Graph SLAM应用变量消除技术降低优化问题的维数。Bosse构建了一个两层的图结构,称之为ATLAS 框架。ATLAS 框架底层使用卡尔曼滤波构建;顶层利用全局优化方法使局部地图对齐。类似于 ATLAS,Estrada 等提出使用独立局部地图的分层(Hierarchical)SLAM。吕瑞等
提出一种基于先验点图模型的后端优化算法,依据前端提供姿态点精度的差异,为每个姿态赋予权值,然后采用改进的 Levenberg 算法进行全局优化。de la Puente 等采用期望最大化(expectation maximization,EM)方法求解 Graph SLAM 问题。Dubbelman 等针对 GraphSLAM 后端问题提出一种封闭形式的求解方法。针对 SLAM 前端问题,Olson提出一个基于谱聚类(Spectral Clustering)的带有杂点拒绝(Outlier Rejection)的前端方法。为了实现 SLAM前端的数据关联, 测试或联合相容性(Joint Compatibility)测试。
为了防止因航迹推测数据噪声过大造成 Graph SLAM 后端陷入局部极小,Hu 等采用 M 估计方法作为自举(bootstraping)技术获得可靠地初始位姿猜想。
上述三类地图创建方法中,EKF SLAM 和 RBPF SLAM 将地图创建视为最优估计问题,通过概率分布的形式进行定义,采用滤波方法对状态变量进行估计;而 Graph SLAM 将其视为最优化问题,通过定义目标函数和约束条件的形式进行定义,采用数学规划方法进行求解。与后者相比,前者的优点在于其所采用的滤波方法能够以在线方式估计地图的全后验概率;而后者则是在采集完所有传感器数据后,在建立好所有约束条件的前提下进行离线位姿估计和地图创建。EKF SLAM 与 RBPF SLAM 的最终目的是创建一致的环境地图,是否能够实现正确闭环是方法自身性能的一种体现;而 Graph SLAM 是一种基于闭环消除定位误差的地图创建方法,在通过航迹推测所估计的位姿误差较大的情况下,只能通过辅助方法建立约束条件,即在建立正确闭环的前提下,再通过优化方法校正机器人位姿和创建环境地图。