• Stars
    star
    235
  • Rank 171,079 (Top 4 %)
  • Language
    C++
  • License
    Other
  • Created over 4 years ago
  • Updated about 2 years ago

Reviews

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

Repository Details

An automatic calibration algorithm for livox LiDAR

Livox Automatic Calibration Tools v0.1 Quick Start Guide

中文文档

Introduction

In order to solve the calibration problem, Livox provides an automatic calibration tool. This technology mainly relies on the isomorphic constraint assumption model of the environment to realize automatic calibration, and only needs to use the original point cloud data of the base LiDAR and target LiDAR. Our tool first mapping the environment by using the Base LiDAR data. Then we use the target LiDAR data to continuously iteratively register to the reconstructed map, relying on the constant assumption of the rigidity of geometric structure to continuously reduce the matching error until the algorithm converges And meets the rigidity invariant characteristic of the calibration matrix (six parallel lines). Finally, a consensus algorithm is used to calculate the final calibration matrix.

image
Fig.1 Red: Base LiDAR mapping result, Green: Target LiDAR automatic calibration

Prerequisites

Cmake, PCL1.7, Eigen

We recommended to install ROS directly, which including the above libraries

sudo apt-get install ros-kinetic-cv-bridge ros-kinetic-tf ros-kinetic-message-filters ros-kinetic-image-transport

Compile


mkdir build
cd build
cmake ..
make

This operation will generate three files, namely mapping, calibration, fitline 

  • mapping: Mapping Tool  

  • calibration: Automatic Calibration Tool

  • fitline: Fit the calibration parameters and calculate the final calibration matrix and Quaternion  

Run

1. Prepare .pcd pointcloud data for calibration  

  • Put the base LiDAR data into: data/Base_LiDAR_Frames/.pcd (Use 100000.pcd as the first frame file name, and the subsequent frames are accumulated upward)

  • Put the target LiDAR data into: data/Target_LiDAR_Frames/.pcd (Use 100000.pcd as the first frame file name, and the subsequent frames are accumulated upward)

  • Put the initial matrix data into: data/Init_Matrix.txt

Note: The base LiDAR data and the target LiDAR data need to be synchronized in time as much as possible, and the file name and time stamp correspond to synchronization.

Download example data set
Target-LiDAR-Frames
Base_LiDAR_Frames

2. run

cd livox_calibration
cp run.sh build/
cd build
sh run.sh

The script first starts the visualize mapping program mapping,Use base LiDAR to build a submap. After that, the script starts calibration program to automatic calibration target LiDAR to base LiDAR,estimated the calibration parameters for each frames. Finally, the script launchs the Curve fitter fitline,to estimate the final parameter matrix.

image Fig.2 Out put result of example data set

NOTE:

  • Must ensure the data synchronization between sensors
  • Must ensure the precision of base LiDAR mapping result
  • The movement of the data collection vehicle or platform must be as slow as possible, and we recommended to correct the motion distortion between each frames to ensure the final accuracy
  • The accurate initial external parameter matrix is not needed, but it should be roughly aligned to ensure the final accuracy as much as possible
  • For Mid-40, Horizon models, the converted PCD file refers to 100ms as one frame

Support

You can get support from Livox with the following methods:

  • Send email to [email protected] with a clear description of your problem and your setup
  • Github Issues

Citation

This code is based on the research below:

@article{gong2018target,
title={A Target-Free Automatic Self-Calibration Approach for Multibeam Laser Scanners},
author={Gong, Zheng and Wen, Chenglu and Wang, Cheng and Li, Jonathan},
journal={IEEE Transactions on Instrumentation and Measurement},
volume={67},
number={1},
pages={238--240},
year={2018},
publisher={IEEE}
   }
   

Developer: Livox

More Repositories

1

LIO-Livox

A Robust LiDAR-Inertial Odometry for Livox LiDAR
C++
641
star
2

Livox-SDK

Drivers for receiving LiDAR data and more, support Lidar Mid-40, Mid-70, Tele-15, Horizon, Avia.
C++
500
star
3

livox_camera_lidar_calibration

Calibrate the extrinsic parameters between Livox LiDAR and camera
C++
483
star
4

livox_mapping

A mapping package for Livox LiDARs
C++
377
star
5

livox_ros_driver

Livox device driver under ros, support Lidar Mid-40, Mid-70, Tele-15, Horizon, Avia.
C++
367
star
6

livox_horizon_loam

Livox horizon porting for loam
C++
305
star
7

livox_detection

Livox open source detection algorithm
Python
260
star
8

livox_ros_driver2

Livox device driver under Ros(Compatible with ros and ros2), support Lidar HAP and Mid-360.
C++
237
star
9

livox_laser_simulation

A package to provide plug-in for Livox Series LiDAR.
C++
197
star
10

livox_high_precision_mapping

High precision mapping with livox and apx-15
C++
174
star
11

livox_cloud_undistortion

This project is used for lidar point cloud undistortion.
C++
148
star
12

horizon_highway_slam

Horizon_Highway_Slam Demo in Docker
C++
145
star
13

livox_relocalization

A relocalization package for Livox LiDARs.
C++
132
star
14

Livox-SDK2

Drivers for receiving LiDAR data and controlling lidar, support Lidar HAP and Mid-360.
C++
110
star
15

livox_free_space

Livox-Free-Space is a fast and effective free-space detection package using Livox LiDAR data.
C++
109
star
16

livox_ros2_driver

Livox device driver under Ros2, support Lidar Mid-40, Mid-70, Tele-15, Horizon, Avia.
C++
78
star
17

livox_detection_simu

Trained on Simulated Data, Tested in the Real World
Python
75
star
18

livox_lane_detection

Python
57
star
19

livox_scanner

Livox LiDAR 3D scanner
C++
46
star
20

LivoxIntegration

Guidelines for integrating Livox LiDARs with other sensors
30
star
21

livox_autoware_driver

Livox lidar driver for Autoware
C++
28
star
22

Special-Firmwares-for-Livox-LiDARs

Special Firmwares for Livox LiDARs
24
star
23

livox_wiki_cn

livox wiki cn
Python
17
star
24

livox_apollo_driver

Livox driver for apollo
C++
16
star
25

livox_calibration

Livox extrinsic calibration
C++
16
star
26

Livox-Viewer

Livox Viewer
13
star
27

livox-dataset-devkit

A development kit to read point cloud and display 3D target bounding boxes for the livox dataset
C++
12
star
28

livox_wiki_en

livox wiki en
Python
2
star
29

Livox-SDK-Doc

Livox-SDK API Reference
1
star