BALM全称:Bundle Adjustment for Lidar Mapping,香港大学的工作。
BALM框架
- 对每个scan通过位姿初值转换到世界坐标系上,多帧scan的点组成了一个“线”或“面”特征。计算一个特征内所有点的协方差矩阵A,通过优化A特征分解后的特征值最小。因为线特征,最大特征值表示线段方向,面特征,最小特征值表示面的法向量方向。本文推导了误差对点的雅克比矩阵和误差对位姿的雅克比矩阵。注意:本文中的地图点和位姿是相互独立的,因此,在实验中BALM可以在因为退化导致位姿走“之”字形时,点云依然保持一致性。
- 自适应voxel的划分,从1m分辨率通过八叉树划分到0.125m分辨率。目的是保证一个像素内只存在一个特征。做法是计算格子内点的特征向量,不满足条件则划分,直到格子内只有一个特征,或者格子内的点数小于阈值。本文共维护了两个voxel地图,一个edge的和一个plane的。这样做的好处是寻找最近邻时速度很快。
- Remark:
1.当一个voxel点数很多时,就直接用每个scan在这个voxel中的平均值,进而减小(8)式中Hessian的维度。
2.
3. 平面在实现时可能是弯曲表面,因为本文允许大的协方差。
4.两种方式可以停止格子划分,1是达到了最大深度,2是格子内点的数目小于一个阈值。
LOAM with local BA
-
把当前scan加入到map中,并构建成voxel的形式。当插入进来5帧scan后,进行map-refinement。滑窗大小是20帧相邻的帧,进行Local-BA。
-
本文的优点是提升了定位的精度和增强了点云一致性,但使用的是连续帧,后续可以改成只关键帧参与Local BA,或者应用在全局地图优化中。