Giter Site home page Giter Site logo

mach9robotics / mlcc Goto Github PK

View Code? Open in Web Editor NEW

This project forked from hku-mars/mlcc

0.0 0.0 0.0 1.53 GB

Fast and Accurate Extrinsic Calibration for Multiple LiDARs and Cameras

License: GNU General Public License v2.0

C++ 99.05% CMake 0.95%

mlcc's Introduction

Targetless Extrinsic Calibration of Multiple Small FoV LiDARs and Cameras using Adaptive Voxelization

Our journal paper is available on IEEE TIM. The pre-release code has been updated. Our experiment video is availalbe on YouTube and Bilibili.

Introduction

In this paper, we propose a fast, accurate, and targetless extrinsic calibration method for multiple LiDARs and cameras based on adaptive voxelization. On the theory level, we incorporate the LiDAR extrinsic calibration with the bundle adjustment method. We derive the second-order derivatives of the cost function w.r.t. the extrinsic parameter to accelerate the optimization. On the implementation level, we apply the adaptive voxelization to dynamically segment the LiDAR point cloud into voxels with non-identical sizes, and reduce the computation time in the process of feature correspondence matching.

Fig. 1 Dense colorized point cloud reconstructed with LiDAR poses and extrinsic calibrated with our proposed method.

Adaptive Voxelization

In both LiDAR-LiDAR and LiDAR-camera extrinsic calibration, we implement adaptive voxelization to accelerate the feature correspondence matching process. The point cloud map is dynamically segmented into voxels with non-identical sizes, such that only one plane feature is contained in each voxel. This process sufficiently saves the execution time of k-d tree searching from our previous work1 (see Fig. 2) and work2 (see Fig. 3).

Fig. 2 Adaptive voxelization in LiDAR-LiDAR extrinsic calibration.

Fig. 3 Adaptive voxelization in LiDAR-camera extrinsic calibration. A) real world image. B) raw point cloud of this scene. C) voxelization of previous work where the yellow circles indicate the false edge estimation. D) edges extracted with our proposed method.

1. Prerequisites

1.1 ROS and Ubuntu

Our code has been tested on Ubuntu 16.04 with ROS Kinetic, Ubuntu 18.04 with ROS Melodic and Ubuntu 20.04 with ROS Noetic.

1.2 Ceres Solver

Our code has been tested on ceres solver 1.14.x.

1.3 OpenCV

Our code has been tested on OpenCV 3.4.14.

1.4 Eigen

Our code has been tested on Eigen 3.3.7.

1.5 PCL

Our code has been tested on PCL 1.8.

2. Build and Run

Clone the repository and catkin_make:

cd ~/catkin_ws/src
git clone [email protected]:hku-mars/mlcc.git
cd .. && catkin_make
source ~/catkin_ws/devel/setup.bash

3. Run Our Example

The parameters base LiDAR (AVIA or MID), test scene (scene-1 or scene-2), adaptive_voxel_size, etc., could be modified in the corresponding launch file.

3.1 LiDAR-LiDAR Extrinsic Calibration

Step 1: base LiDAR pose optimization (the initial pose is stored in scene-x/original_pose)

roslaunch mlcc pose_refine.launch

Step 2: LiDAR extrinsic optimization (the initial extrinsic is stored in config/init_extrinsic)

roslaunch mlcc extrinsic_refine.launch

Step 3: pose and extrinsic joint optimization

roslaunch mlcc global_refine.launch

3.2 LiADR-Camera Extrinsic Calibration

roslaunch mlcc calib_camera.launch

4. Run Your Own Data

To test on your own data, you need to save the LiDAR point cloud in .pcd format. Please only collect the point cloud and images when the LiDAR (sensor platform) is not moving for the optimal precision (or segment them from a complete rosbag). The base LiDAR poses and initial extrinsic values shall also be provided (in tx ty tz qw qx qy qz format). These initial values could be obtained by general SLAM and hand-eye calibration algorithms.

You may need to modify the parameters voxel_size (adaptive voxel size), feat_eigen_limit (feature eigen ratio) and downsmp_sz_base (downsampling size) for LiDAR-LiDAR extrinsic calibration to adjust the precision and speed. You need to change the corresponding path and topic name in the yaml files in the config folder.

5. Known Issues

Currently, we seperate the LiDAR extrinsic calibration process into three steps for debug reasons. In future release, we wish to combine them together to make it more convenient to use.

6. License

The source code is released under GPLv2 license.

We are still working on improving the performance and reliability of our codes. For any technical issues, please contact us via email [email protected] and [email protected].

For commercial use, please contact Dr. Fu Zhang [email protected].

mlcc's People

Contributors

harveybia avatar samsdolphin avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.