  A local Bundle Adjustment (BA) on a sliding window of keyframes has been
widely used in visual SLAM and proved to be very effective in lowering the
drift. But in lidar SLAM, BA method is hardly used because the sparse feature
points (e.g., edge and plane) make the exact point matching impossible. In this
paper, we formulate the lidar BA as minimizing the distance from a feature
point to its matched edge or plane. Unlike the visual SLAM (and prior plane
adjustment method in lidar SLAM) where the feature has to be co-determined
along with the pose, we show that the feature can be analytically solved and
removed from the BA, the resultant BA is only dependent on the scan poses. This
greatly reduces the optimization scale and allows large-scale dense plane and
edge features to be used. To speedup the optimization, we derive the analytical
derivatives of the cost function, up to second order, in closed form. Moreover,
we propose a novel adaptive voxelization method to search feature
correspondence efficiently. The proposed formulations are incorporated into a
LOAM back-end for map refinement. Results show that, although as a back-end,
the local BA can be solved very efficiently, even in real-time at 10Hz when
optimizing 20 scans of point-cloud. The local BA also considerably lowers the
LOAM drift. Our implementation of the BA optimization and LOAM are open-sourced
to benefit the community.
