Giter Club home page Giter Club logo

lidar_intrinsic_calibration's Introduction

Global Intrinsic 3D LiDAR Calibration

Overview

This is a package for globally solving intrinsic calibration of a 3D LiDAR described in paper: Global Unifying Intrinsic Calibration for Spinning and Solid-State LiDARs. In experimental data, we show that it outperforms physics-based models for a spinning LiDAR. In simulation, we show how this perspective can be applied to a solid state LiDAR.

  • Authors: Bruce JK Huang, Chenxi Feng, Madhav Achar, Maani Ghaffari, and Jessy W. Grizzle
  • Maintainer: Bruce JK Huang, brucejkh[at]gmail.com
  • Affiliation: The Biped Lab, the University of Michigan

This package has been tested under MATLAB 2019a and Ubuntu 18.04. More detailed introduction will be updated in a week. Sorry for the inconvenience!

[Issues] If you encounter any issues, I would be happy to help. If you cannot find a related one in the existing issues, please open a new one. I will try my best to help!

Abstract

Sensor calibration, which can be intrinsic or extrinsic, is an essential step to achieve the measurement accuracy required for modern perception and navigation systems deployed on autonomous robots. Intrinsic calibration models for spinning LiDARs have been based on hypothesized physical mechanisms, resulting in anywhere from three to ten parameters to be estimated from data, while no phenomenological models have yet been proposed for solid-state LiDARs. Instead of going down that road, we propose to abstract away from the physics of a LiDAR type (spinning vs. solid-state, for example) and focus on the point cloud's spatial geometry generated by the sensor. By modeling the calibration parameters as an element of a matrix Lie Group, we achieve a unifying view of calibration for different types of LiDARs. We further prove mathematically that the proposed model is well-constrained (has a unique answer) given four appropriately orientated targets. The proof provides a guideline for target positioning in the form of a tetrahedron. Moreover, an existing semi-definite programming global solver for SE(3) can be modified to efficiently compute the optimal calibration parameters. For solid-state LiDARs, we illustrate how the method works in simulation. For spinning LiDARs, we show with experimental data that the proposed matrix Lie Group model performs equally well as physics-based models in terms of reducing the point-to-plane distance while being more robust to noise.

Introduction Video

Please checkout the introduction video. It highlights some importants keypoints in the paper!

System Diagram Overview

This figure motivates the main contribution of the paper, a means of calibrating a LiDAR without modeling the physical mechanism itself. Top left: shows a simple physics-based calibration model for a spinning LiDAR.

  1. Top right: shows a similar model with more parameters, also for a spinning LiDAR. In the literature, the number of parameters can vary from three to 10.
  2. Bottom left and bottom right show, respectively, an optical phased array solid-state LiDAR and a MEMS-based LiDAR. There are many design options and many manufacturing steps to fabricate these LiDAR. Is it necessary, or even possible, to parameterize all of them? This paper moves the attention to the geometry of the LiDAR's point cloud and proposes that calibration can be achieved via shape-preserving transformations.
  3. In experiments, the proposed method outperforms the methods showed in top figures for spinning LiDAR, and via simulation, we support that it may be used to calibrate a solid-state LiDAR as well.

Results Quick View

Varying levels of systematic error is introduced for a spinning LiDAR to test the robustness of the proposed alternating method on experimental data.

On the left shows a factory-calibrated 32-Beam Velodyne ULTRA Puck measuring on a planer target. The measurements are not consistent and lead to a thickness of 6.2 cm point cloud with 1.4 cm P2P distance. On the right shows the calibration results of the proposed method. The thickness and P2P distance after calibration are 4.4 cm and 0.47 cm.

Why important?

  1. Intrinsic calibration ensures that obtained measurements are meaningful and valid!
  2. The proposed model is mathematically proved to be well-constrained (i.e., a unique answer exists).
  3. An efficient global optimizer is provided to determine the element of the Lie Group.
  4. Target placement is a tetrahedron (guided by the proof):

Calibration Targets

Any square targets would be fine. The dimensions are assumed known. note: You can place any number of targets with different size in different datasets.

Installation

  1. Clone https://github.com/UMich-BipedLab/LiDAR_intrinsic_calibration
  2. Clone https://github.com/UMich-BipedLab/matlab_utils
  3. Clone https://github.com/UMich-BipedLab/global_sim3_solver and follow the README.md there to install CVX library
Note:

To automatic extract LiDAR targets, we use LiDARTag package and its message.

Dataset

Please download datasets from here:
Training dataset
validation dataset

Running

To get it run properly,

  1. change the varible to corresponding path.
  2. add the matlab_utils library to reposiotry.
  3. run "setup.m" under the convex_relaxation_sim3 repo.

Generate paper's results

  • To generate Fig 5, run lidar_simulator/test_CNs_vs_tetrahedron_analysis.m
  • To generate Fig 6, run LiDAR_intrinsic_calibration/main.m
  • To generate Table 1, run LiDAR_intrinsic_calibration/generateTable1.m

Citations

The detail is described in: Jiunn-Kai Huang, Chenxi Feng, Madhav Achar, Maani Ghaffari, and Jessy W. Grizzle, "Global Unifying Intrinsic Calibration for Spinning and Solid-State LiDARs" (arXiv)

@article{huang2020global,
  title={Global Unifying Intrinsic Calibration for Spinning and Solid-State LiDARs},
  author={Huang, Jiunn-Kai and Feng, Chenxi and Achar, Madhav and Ghaffari, Maani and Grizzle, Jessy W},
  journal={arXiv preprint arXiv:2012.03321},
  year={2020}
}

lidar_intrinsic_calibration's People

Contributors

brucejk avatar fengchenxi0823 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

lidar_intrinsic_calibration's Issues

Calibration Fail !

Thank you for the open source tool,But the calibration tool failed during my Case。
I used the tetrahedron in the article to calibrate the Velodyle VLP-16,But the calibration results are not accurate
The result

All processes has finished
ans =

1×7 table

mean_original    mean_calibrated    mean_percentage    std_original    std_calibrated    thickness_original    thickness_calibrated
_____________    _______________    _______________    ____________    ______________    __________________    ____________________

  0.007462           0.00518            0.30582         0.0064563        0.0063288            0.072424               0.053788      

ans =

1×5 table

mean_original    mean_calibrated    mean_percentage    std_original    std_calibrated
_____________    _______________    _______________    ____________    ______________

  0.011139          0.0057358           0.48506         0.0072557        0.0071421   

ans =

1×5 table

mean_original    mean_calibrated    mean_percentage    std_original    std_calibrated
_____________    _______________    _______________    ____________    ______________

  0.015194          0.0054396           0.64199         0.0071618        0.0068011   

ans =

1×5 table

mean_original    mean_calibrated    mean_percentage    std_original    std_calibrated
_____________    _______________    _______________    ____________    ______________

     NaN               NaN                NaN              NaN              NaN      

All processes has finished.

Screenshot from 2022-04-07 11-31-31
Screenshot from 2022-04-07 11-31-17
Screenshot from 2022-04-07 11-28-23

The Calib_parem translation vector is Incorrect,X and Z offset is too large。
The train data is
Screenshot from 2022-04-07 11-41-49
Screenshot from 2022-04-07 11-42-30

Can you tell me which step is wrong? Thanks!

404

For the first and third installations, the server returned 404. Is this because you didn't update it?

how to get the Dataset

I am sorry,I can't get your Dataset. I need to apply for verification. How can I get the Dataset?

How to Cite the Paper?

Hi, @brucejk !

Thank you for your excellent work! I would like to cite your paper in my research. However, I can't find it on arxiv for now. Are there any alternative ways to cite your paper?

Best Wishes.

getColors function

Hi, thanks for your great job!
I can't find the "getColors" function in code src. Did I miss something?

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.