从1维的角度进行解释:
1m
P0 o-----------------------o P1
假如LOAM计算的两个车辆初始位姿P0、P1如上图所示,作为pose-graph的两个顶点。那么二者之间边,也就是两个pose之间的 trans = P0-1 * P1 (= 1m), 即P0 * trans = P1 ,一维下也就是 P0 + 1 = P1 ,然而LOAM计算肯定有误差,P0、P1不可能跟groundtruth一样,导致变换到全局坐标系下的两个Pose的观测会有“重影问题”,例如,当观测是一个方块时:
P0 o-----------------------o P1
口口
原本应该重合的两个方块,却重影成了两个, 这时候ICP就起作用了,通过对两个Pose对应的观测(也就是红黑两个方块,传感器是lidar时,两个方块都是点云的形式)进行ICP,若设P0对应的红色方块为target,P1对应的黑色方块为source,计算得出ICP配准矩阵E=0.1m,也就是黑色方块需要左移0.1m才会与红色方块重合,利用E来修正更新两个顶点之间的边,也就是trans = P0-1 * E * P1 (= 1 - 0.1 = 0.9 m), 从而实现了在pose-graph框架下,ICP对LOAM计算的初始位姿的修正作用。
进一步理解pose-graph中边的意义:边的值应该是其两个vertex之间的真实trans(trans其实是G2O函数库对边的封装格式,边的本质其实是残差函数),但凡是各种方式计算出的pose(IMU,GPS,SLAM)不等于groundtruth,那么 P0-1 * P1就跟两个vertex之间的真实trans有残差,上述的ICP配准矩阵就是起消除这个残差的作用,若pose本来就是groundtruth,那么这时候ICP计算出的E就是单位矩阵。