cartographer 代码思想解读(13)- 后端优化基本思想
传统位姿图优化
其他常见的slam后端优化位姿图结构如上图所示,前端用于位姿的推移,即利用上刻位姿经过前端匹配获取到下一刻位姿,因此此刻相对于上刻位姿较为准确,但是由于累计误差导致如上图T7时刻的位姿与T0时刻的位姿误差较大,如果T7和T0时刻位姿相对较近,则可采用一定方法(即闭环检测),则可获取较为T7和T0两个时刻的相对位姿。由于初始时刻位姿固定,可得如下位姿公式。
X
0
=
I
n
i
t
X_0 = Init
X0=Init
X
i
+
1
=
T
i
+
1
,
i
∗
X
i
X_{i+1} = T_{i+1,i} * X_i
Xi+1=Ti+1,i∗Xi
X
0
=
T
0
,
7
∗
X
7
X_0 = T_{0,7} * X_7
X0=T0,7∗X7
从上公式可看出方程组为超定方程,而slam的位姿图优化,则是求解以上超定方程组,即可采用最熟悉的思路最小二程。
cartographer 后端优化位姿图优化
而cartographer的位姿图进行了一定的改变,cartographer的前端维护了submap,而非简单一系列位姿。因此采用的位姿约束为机器人时刻姿态与submap的相对位姿,同时也分为当前时刻位姿节点是否构建为对应的submap两种类型,非构建对应submap的相对位姿约束则为闭环约束,如上图所示,黑色位姿约束则可认为闭环约束。最后求解方法,仍然是采用优化求解超定方程组。
总结
本节仅简单分析下cartographer后端优化的位姿图结构和其他slam的区别。