• Stars
    star
    863
  • Rank 52,844 (Top 2 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 3 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

This repository is used for automatic calibration between high resolution LiDAR and camera in targetless scenes.

lidar_camera_calib

lidar_camera_calib is a robust, high accuracy extrinsic calibration tool between high resolution LiDAR (e.g. Livox) and camera in targetless environment. Our algorithm can run in both indoor and outdoor scenes, and only requires edge information in the scene. If the scene is suitable, we can achieve pixel-level accuracy similar to or even beyond the target based method.

An example of a outdoor calibration scenario. We color the point cloud with the calibrated extrinsic and compare with actual image. A and C are locally enlarged views of the point cloud. B and D are parts of the camera image corresponding to point cloud in A and C.

Info

New features:

  1. Support muti-scenes calibration (more accurate and robust)

Related paper

Related paper available on arxiv:
Pixel-level Extrinsic Self Calibration of High Resolution LiDAR and Camera in Targetless Environments

Related video

Related video: https://youtu.be/e6Vkkasc4JI

1. Prerequisites

1.1 Ubuntu and ROS

Ubuntu 64-bit 16.04 or 18.04. ROS Kinetic or Melodic. ROS Installation and its additional ROS pacakge:

    sudo apt-get install ros-XXX-cv-bridge ros-xxx-pcl-conversions

1.2 Eigen

Follow Eigen Installation

1.3 Ceres Solver

Follow Ceres Installation.

1.4 PCL

Follow PCL Installation. (Our code is tested with PCL1.7)

2. Build

Clone the repository and catkin_make:

cd ~/catkin_ws/src
git clone https://github.com/hku-mars/livox_camera_calib.git
cd ../
catkin_make
source ~/catkin_ws/devel/setup.bash

3. Run our example

The exmaple dataset can be download from OneDrive and BaiduNetDisk(η™ΎεΊ¦η½‘η›˜)

3.1 Single scene calibration

Download Our pcd and iamge file to your local path, and then change the file path in calib.yaml to your data path. Then directly run

roslaunch livox_camera_calib calib.launch

You will get the following result. (Sensor suite: Livox Avia + Realsense-D435i)

An example of single scene calibration.

3.2 Multi scenes calibration

Download Our pcd and iamge file to your local path, and then change the file path in multi_calib.yaml to your data path. Then directly run

roslaunch livox_camera_calib multi_calib.launch

The projected images obtained by initial extrinsic parameters. (Sensor Suite: Livox Horizon + MVS camera)

An example of multi scenes calibration. The projected image obtained by theinitial extrinsic parameters
Rough calibration is used to deal with the bad extrinsic.
The projected image obtained by the extrinsic parameters after rough calibration
Then we finally get a fine extrinsic after final optimization.
The projected image obtained by the extrinsic parameters after fine calibration

4. Run on your own sensor set

4.1 Record data

Record the point cloud to pcd files and record image files.

4.2 Modify the calib.yaml

Change the data path to your local data path.
Provide the instrinsic matrix and distor coeffs for your camera.

4.3 Use multi scenes calibration

Change the params in multi_calib.yaml, name the image file and pcd file from 0 to (data_num-1).

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

LiDAR_IMU_Init

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

Point-LIO

C++
745
star
7

r2live

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

BALM

An efficient and consistent bundle adjustment for lidar mapping
C++
700
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