• Stars
    star
    700
  • Rank 64,671 (Top 2 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created about 4 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An efficient and consistent bundle adjustment for lidar mapping

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

Due to the file size, other dataset will be uploaded to one drive later.

4. Applications

  1. Lidar-Inertial odometry with sliding window optimization: The codes will be open-sourced in the next work.
  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.

More Repositories

1

FAST_LIO

A computationally efficient and robust LiDAR-inertial odometry (LIO) package
C++
2,549
star
2

r3live

A Robust, Real-time, RGB-colored, LiDAR-Inertial-Visual tightly-coupled state Estimation and mapping package
C++
1,958
star
3

loam_livox

A robust LiDAR Odometry and Mapping (LOAM) package for Livox-LiDAR
C++
1,435
star
4

FAST-LIVO

A Fast and Tightly-coupled Sparse-Direct LiDAR-Inertial-Visual Odometry (LIVO).
C++
1,086
star
5

livox_camera_calib

This repository is used for automatic calibration between high resolution LiDAR and camera in targetless scenes.
C++
863
star
6

LiDAR_IMU_Init

[IROS2022] Robust Real-time LiDAR-inertial Initialization Method.
C++
834
star
7

Point-LIO

C++
745
star
8

r2live

R2LIVE: A Robust, Real-time, LiDAR-Inertial-Visual tightly-coupled state Estimator and mapping package
C++
721
star
9

ikd-Tree

This repository provides implementation of an incremental k-d tree for robotic applications.
C++
607
star
10

ImMesh

ImMesh: An Immediate LiDAR Localization and Meshing Framework
C++
590
star
11

STD

A 3D point cloud descriptor for place recognition
C++
548
star
12

VoxelMap

[RA-L 2022] An efficient and probabilistic adaptive voxel mapping method for LiDAR odometry
C++
479
star
13

mlcc

Fast and Accurate Extrinsic Calibration for Multiple LiDARs and Cameras
C++
479
star
14

FAST-LIVO2

FAST-LIVO2: Fast, Direct LiDAR-Inertial-Visual Odometry
471
star
15

HBA

[RAL 2023] A globally consistent LiDAR map optimization module
C++
437
star
16

IKFoM

A computationally efficient and convenient toolkit of iterated Kalman filter.
C++
420
star
17

M-detector

C++
362
star
18

LTAOM

C++
325
star
19

ROG-Map

C++
294
star
20

MARSIM

MARSIM: A light-weight point-realistic simulator for LiDAR-based UAVs
C++
283
star
21

D-Map

D-Map provides an efficient occupancy mapping approach for high-resolution LiDAR sensors.
C++
280
star
22

decentralized_loam

207
star
23

joint-lidar-camera-calib

Joint intrinsic and extrinsic LiDAR-camera calibration.
C++
194
star
24

SLAM-HKU-MaRS-LAB

In this repository, we present our research works of HKU-MaRS lab that related to SLAM
191
star
25

Voxel-SLAM

C++
185
star
26

Swarm-LIO2

Swarm-LIO2: Decentralized, Efficient LiDAR-inertial Odometry for UAV Swarms
158
star
27

dyn_small_obs_avoidance

C++
154
star
28

IPC

Integrated Planning and Control for Quadrotor Navigation in Presence of Sudden Crossing Objects and Disturbances
C++
147
star
29

btc_descriptor

137
star
30

PULSAR

C++
102
star
31

lidar_car_platfrom

48
star
32

iBTC

39
star
33

crossgap_il_rl

Python
38
star
34

multi_lidar_calib

28
star
35

Livox_handheld

25
star
36

mapping_eval

2
star