SLAM中另外一个用到的最多的后端优化方法叫做位姿图(Pose
Graph)优化。想象一下,对于路标的优化,可能进行几次之后就已经收敛了,这时候每次插入一个帧都再次进行一次BA仿佛有点用力过猛。而且实际中,路标的数量远远大于位姿数量,因此BA在大规模建图时,它的计算量可能会越来越大,使得实时计算变得困难。这里我们介绍的位姿图优化,就是省去了对路标的优化,仅仅调整位姿的一种做法。
我们将pose
graph的优化转换成图的问题,那么图的节点就是一个个位姿,用来表示,而边则是两个位姿之间相对运动的估计,这个估计可能来自与特征点法或者是直接法。比如之间一个相对运动,则:
或者按照李群的写法:
我们知道,实际中上式不会精确成立,因此我们需要设立最小二乘误差,然后讨论关于优化变量的导数。这里我们将上式的移到右侧,为了让其满足误差最小为0的设定,加上一个:
值得注意的是这里的优化变量有两个:,因此我们需要求关于这两个变量的导数。按照李代数的求导方式,给各一个左扰动,于是误差变为:
我们希望将扰动项移到左侧或者右侧,需要利用到一个伴随性质:
稍加改变,得到:
这说明通过引入一个伴随项,我们能够交换扰动项左右侧的,利用它可以将扰动项移到最右,导出右乘形式的雅科比矩阵:
因此,按照李代数上的求导规则,我们求出了误差关于两个位姿的雅科比矩阵。关于的:
关于的:
这部分的理解有点困难,可以回顾之前的李群李代数。之前也说过,由于李群(se(3))上的雅科比矩阵形式过于复杂,我们通常取近似。如果误差接近于0,可以取近似:
了解了雅科比计算之后,其余的部分就是普通的图优化了。记为所有边的集合,总体的目标函数为:
我们依然可以利用列文伯格或者高斯牛顿法来解决这个问题。
Note
伴随性质:
-
其中: