Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

GringePP/Global-LVBA

Repository files navigation

Global-LVBA

Global LiDAR-Visual Bundle Adjustment

Global-LVBA is a globally consistent LiDAR–Visual Bundle Adjustment system for refinement after LiDAR-inertial-visual odometry (e.g., FAST-LIVO2).
If you want to push accuracy to the next level, Global-LVBA further optimizes:

  • point-cloud map consistency (reducing layering/stratification artifacts).
  • camera poses towards pixel-level reprojection accuracy.

πŸ“¬ For further assistance or inquiries, please feel free to contact Chunran Zheng at zhengcr@connect.hku.hk.

Global-LVBA Cover
This figure shows qualitative comparisons before and after Global-LVBA refinement from both texture and geometric-structure perspectives. The initial poses are provided by FAST-LIVO2.

1. Prerequisites

  • Python 3.8
  • Ceres Solver 2.1.0
  • Eigen 3.3.7
  • OpenCV 4.2.0

2. Build

cd catkin_ws/src/Global-LVBA
git submodule update --init --recursive
cd SiftGPU && mkdir build && cd build && cmake .. && make
cd catkin_ws && catkin_make

3. Dataset preparation

Global-LVBA/
└── dataset/
 └── your_sequence_name/
 β”œβ”€β”€ all_image/
 β”‚ β”œβ”€β”€ 1661398632.022152.png # image named by timestamp
 β”‚ β”œβ”€β”€ 1661398632.121881.png
 β”‚ β”œβ”€β”€ ...
 β”‚ └── image_poses.txt # camera poses (timestamp-aligned)
 β”œβ”€β”€ all_pcd_body/
 β”‚ β”œβ”€β”€ 1661398632.022152.pcd # point cloud named by timestamp
 β”‚ β”œβ”€β”€ 1661398632.121881.pcd
 β”‚ β”œβ”€β”€ ...
 β”‚ └── lidar_poses.txt # LiDAR poses (timestamp-aligned)
 β”œβ”€β”€ colmap/
 β”‚ β”œβ”€β”€ match.db # feature matching database
 β”‚ └── sparse/ # optional: COLMAP output for 3DGS
 β”‚ └── 0/
 β”‚ β”œβ”€β”€ images.txt
 β”‚ └── points3D.txt
 β”œβ”€β”€ depth/ # optional: generated depth maps
 └── reproj/ # optional: reprojection error logs

4. Dataset download

The LVBA-Dataset (Google Drive) is generated from the raw rosbag in FAST-LIVO2-Dataset (Google Drive).

πŸ’‘ Note: To prepare your own data with FAST-LIVO2, set pcd_save_en: false, type: 1, and img_save_en: true in the FAST-LIVO2 config to directly generate the required files for Global-LVBA.

5. Run our examples

Download the example data from LVBA-Dataset.

roslaunch Global-LVBA lvba.launch

πŸ’‘ Note: We recommend using the .db file generated by COLMAP to obtain feature correspondences. The built-in SiftGPU extraction/matching in this repo is provided for convenience, but its matching quality is generally inferior to COLMAP.

6. License

The source code of this package is released under the MIT license.

About

Global LiDAR-Visual Bundle Adjustment

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • C++ 98.8%
  • CMake 1.2%

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /