hku-mars / BALM

An efficient and consistent bundle adjustment for lidar mapping
GNU General Public License v2.0
732 stars 154 forks source link

BALM 2.0

Efficient and Consistent Bundle Adjustment on Lidar Point Clouds

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

1. Prerequisited

1.1 Ubuntu and ROS

Ubuntu 64-bit 20.04. ROS Installation. (Noetic recommended)

1.2 PCL and Eigen

Follow PCL Installation (1.10 recommended)

Follow Eigen Installation (3.3.7 recommended)

2. Build

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.

3. Run the package

3.1 Consistency experiments

roslaunch balm2 consistency.launch

3.2 Benchmark on virtual point cloud

roslaunch balm2 benchmark_virtual.launch

3.3 Benchmark on real-world dataset

roslaunch balm2 benchmark_realworld.launch

You can also use the right update by:

right_update

4. Applications

  1. Lidar-Inertial odometry with sliding window optimization: The github of Voxel-SLAM.
  2. Multiple-Lidar calibration: The github of MLCC.
  3. Global BA on large-scale dataset: The github of HBA.

5. Acknowledgement

In the development of this package, we refer to FAST-LIO2, Hilti, VIRAL and UrbanLoco for source codes or datasets.

BALM知乎链接