GithubHelp home page GithubHelp logo

mcdermatt / icet Goto Github PK

View Code? Open in Web Editor NEW
12.0 1.0 1.0 126.59 MB

Real-time LIDAR Odometry and Mapping with Robust Error Bounds

CMake 1.65% Jupyter Notebook 1.20% Python 18.41% PureBasic 10.62% C++ 68.12%

icet's Introduction

ICET

This repository contains code for our Iterative Closest Ellipsoidal Transform (ICET) point cloud registration algorithm. C++ code is provided in a ROS package to demonstrate real-time HD Map generation. Also included is a python implementation of ICET and interactive jupyter notebook with inline 3D visualization so our algorithm can be tested without needing to set up a ROS enviornment on your machine.

Compile

Use the following commands to download and compile ICET

cd ~/catkin_ws/src
git clone https://github.com/mcdermatt/ICET
cd ..
catkin_make

This package was developed and tested with ROS Noetic

Real-time HD Map generation

Begin by sourcing your workspace and running a roscore

source ~/catkin_ws/devel/setup.bash
roscore

The included fake_lidar node provides an interface for loading popular autonomous driving datasets from a .csv, .bin, or .npy format and publishing point cloud messages in the same format as the Velodyne VLP-32 sensor. Modify the fake_lidar.py file to point towards the correct local directory containing your dataset and run this node in a new terminal with:

source ~/catkin_ws/devel/setup.bash
rosrun icet fake_lidar 

Alternatively, the included package can be run directly off a ROSBAG using the following command. Make sure that the simpleMapMaker.cpp code is subscribed to the correct topic!

source ~/catkin_ws/devel/setup.bash
rosbag play my_bag.bag

A real time mapping demo can be run with the following node in another terminal:

source ~/catkin_ws/devel/setup.bash
rosrun icet map_maker_node

HD Maps are published as PointCloud2 messages in the "/hd_map" topic which can be viewed via RViz

A "snail trail" showing the trajectory of the vehicle is also published as a PointCloud2 message "/snail_trail"

Alternatively, an odometry node can be run with the following command, which outputs transforms and the accurate error bounds to a standard odometry message:

rosrun icet odometry_node

Benchmarking

Runtime for scan registration is dependant on sensor resolution, computer hardware, voxel resolution, and the number of iterations the algorithm is allowed to run. In our testing, we were able to achieve a optimal registration accuracy with a mean registration time of 35ms for 64-channel data running for 7 iterations on a Ryzen 5800x CPU and with a resolution of 75 azimuthal voxels and 24 elevation voxels.

Additional Tools

An OpenGL visualizer is included which can be helpful for tuning the C++ implementation of ICET for new sensors and enviornments. Exaple use is demonstrated in the icet_cpp_demo. which is located within the /src/ directory.

Cite ICET

Thank you for citing our work if you have used any of our code:

ICET Online Accuracy Characterization for Geometry-Based Laser Scan Matching

@article {ICET,
  author = {McDermott, Matthew and Rife, Jason},
  title = {ICET Online Accuracy Characterization for Geometry-Based Laser Scan Matching},
  volume = {71},
  number = {2},
  elocation-id = {navi.647},
  year = {2024},
  doi = {10.33012/navi.647},
  publisher = {Institute of Navigation},
  issn = {0028-1522},
  URL = {https://navi.ion.org/content/71/2/navi.647},
  eprint = {https://navi.ion.org/content/71/2/navi.647.full.pdf},
  journal = {NAVIGATION: Journal of the Institute of Navigation}
}

Mitigating Shadows in LIDAR Scan Matching Using Spherical Voxels

@ARTICLE{SphericalICET,
  author={McDermott, Matthew and Rife, Jason},
  journal={IEEE Robotics and Automation Letters}, 
  title={Mitigating Shadows in LIDAR Scan Matching Using Spherical Voxels}, 
  year={2022},
  volume={7},
  number={4},
  pages={12363-12370},
  doi={10.1109/LRA.2022.3216987}}
}

DNN Filter for Bias Reduction in Distribution-to-Distribution Scan Matching

@article{mcdermott2022dnn,
  title={DNN Filter for Bias Reduction in Distribution-to-Distribution Scan Matching},
  author={McDermott, Matthew and Rife, Jason},
  journal={arXiv preprint arXiv:2211.04047},
  year={2022}
}

icet's People

Contributors

mcdermatt avatar

Stargazers

 avatar JaySlamer avatar  avatar Andre Nguyen avatar zuowei avatar hiyyg avatar Daniel Choate avatar  avatar DengQi avatar Chen Zhiqiang avatar Yuhang Xu avatar

Watchers

 avatar

Forkers

deliangye

icet's Issues

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.