Note: If your initial pose error is too large in real-world datasets, the plane detection module may not find enough planes (point association) to BA optimization. Our plane determination criteria may be strict for huge initial pose errors. So before optimization, please to check the planes (which are displayed in our implementation). If you really cannot provide better initial poses and want to get accurate results, you can try the process of "coarse-to-fine", namely from large voxel size and loose plane determination criteria, to small voxel size and strict plane determination criteria, using multiple optimization with different point associations.
BALM 2.0 is a basic and simple system to use bundle adjustment (BA) in lidar mapping. It includes three experiments in the paper. We try to keep the code as concise as possible, to avoid confusing the readers. It is notable that this package does not include the application experiments, which will be open-sourced in other projects. The paper is available on Arxiv and more experiments details can be found in the video.
Related papers:
Efficient and Consistent Bundle Adjustment on Lidar Point Clouds
BALM: Bundle Adjustment for Lidar Mapping
Ubuntu 64-bit 20.04. ROS Installation. (Noetic recommended)
Follow PCL Installation (1.10 recommended)
Follow Eigen Installation (3.3.7 recommended)
Clone the repository and catkin_make:
cd ~/catkin_ws/src
git clone https://github.com/hku-mars/BALM
cd ../
catkin_make
source ~/catkin_ws/devel/setup.bash
Note: Before compilation, the file folder "BALM-old" had better be deleted if you do not require BALM1.0, or removed to other irrelevant path.
roslaunch balm2 consistency.launch
roslaunch balm2 benchmark_virtual.launch
roslaunch balm2 benchmark_realworld.launch
You can also use the right update by:
- Lidar-Inertial odometry with sliding window optimization: The github of Voxel-SLAM.
- Multiple-Lidar calibration: The github of MLCC.
- Global BA on large-scale dataset: The github of HBA.
In the development of this package, we refer to FAST-LIO2, Hilti, VIRAL and UrbanLoco for source codes or datasets.