T-LOAM: Truncated Least Squares Lidar-only Odometry and Mapping in Real-Time

Overview

T-LOAM: Truncated Least Squares Lidar-only Odometry and Mapping in Real-Time

The first Lidar-only odometry framework with high performance based on truncated least squares and Open3D point cloud library, The foremost improvement include:

  • Fast and precision pretreatment module, multi-region ground extraction and dynamic curved-voxel clustering perform ground point extraction and category segmentation.
  • Feature extraction based on principal component analysis(PCA) elaborate four distinctive feature,including: planar features, ground features, edge features, sphere features
  • There are three kinds of residual functions based on truncated least squares method for directly processing above features which are point-to-point, point-to-line, and point-to-plane.
  • Open3d point cloud library is integrated into SLAM algorithm framework for the first time. We extend more functions and implemented the message interface related to ROS.

[Demo Video] [Preprint Paper]

drawing

drawing drawing drawing drawing

Note that regard to pure odometry without corrections through loop closures, T-LOAM delivers much less drift than F-LOAM.

Framework overview

drawing

Each frame of the 3D LiDAR is processed as input. Four main processing modules are introduced to construct the backbone of the algorithm: (a) multi-region ground extraction module, (b) dynamic curved-voxel clustering module, (c) feature extraction module, (d) pose optimization module.

Evaluation

KITTI Sequence 00 F-LOAM T-LOAM
Translational Error(%) 1.11 0.98
Relative Error(°/100m) 0.40 0.60

Graphic Result(Path and Translation)

F-LOAM

drawing

T-LOAM

drawing

F-LOAM

drawing

T-LOAM

drawing

Dependency

-ROS(Melodic Ubuntu18.04)

sudo apt-get install python-catkin-tools ros-melodic-ecl-threads ros-melodic-jsk-recognition-msgs ros-melodic-jsk-visualization ros-melodic-velodyne-msgs

-YAML(0.6.3) Note that you must build a shared library due to we utilize the ros nodelet package.

tar -zxvf yaml-cpp-yaml-cpp-0.6.3.tar.gz
cd yaml-2.3.0 && mkdir build && cd build
cmake [-G generator] [-DYAML_BUILD_SHARED_LIBS=ON] ..
make 
sudo make install

-Open3D(A Modern Library for 3D Data Processing 0.12.0)

Please note that open3d installation will be a slightly troublesome process, please be patient. Another problem that needs attention is that Open3D-ML cannot be used in ROS at the same time due to the link error2286 and error3432. In order to fix this, you need to specify the cmake flag -DGLIBCXX_USE_CXX11_ABI=ON. However, the latest Tensorflow2.4 installed through conda(not pip) already supports the C++11 API, you can check the API with print(tensorflow.__cxx11_abi_flag__). If the flag is true, you can set the compile flag -DBUILD_TENSORFLOW_OPS=ON Next, you can complete the installation according to the instructions

cd Open3D
util/scripts/install-deps-ubuntu.sh
mkdir build && cd build 
cmake \
    -DBUILD_SHARED_LIBS=ON \
    -DPYTHON_EXECUTABLE=$(which python3) \
    -DBUILD_CUDA_MODULE=ON \
    -DGLIBCXX_USE_CXX11_ABI=ON \
    -DBUILD_LIBREALSENSE=ON  \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    -DBUILD_PYTORCH_OPS=OFF \
    -DBUILD_TENSORFLOW_OPS=OFF \
    -DBUNDLE_OPEN3D_ML=ON \
    -DOPEN3D_ML_ROOT=${replace with own Open3D-ML path} \
    ../
make -j4
sudo make install 

If you have clone problems, you can download it directly from the link below.

Baidu Disk code: khy9 or Google Drive

-Ceres Solver(A large scale non-linear optimization library 2.0) you can complete the installation according to the guide

Installation

Now create the Catkin Environment:

mkdir -p ~/tloam_ws/src
cd ~/tloam_ws
catkin init
catkin config --merge-devel
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release

And clone the project:

cd src
git clone https://github.com/zpw6106/tloam.git
catkin build

Usage

Download the KITTI Odometry Dataset (Graviti can provide faster download speed in China), then organize it according to the following structure, and modify the read path in the config/kitti/kitti_reader.yaml

drawing

-Example for running T-LOAM using the KITTI Dataset

roslaunch tloam tloam_kitti.launch

Contributors

Pengwei Zhou (Email: [email protected])

BibTex Citation

Thank you for citing our T-LOAM paper on IEEEif you use any of this code:

@ARTICLE{9446309,
  author={Zhou, Pengwei and Guo, Xuexun and Pei, Xiaofei and Chen, Ci},
  journal={IEEE Transactions on Geoscience and Remote Sensing}, 
  title={T-LOAM: Truncated Least Squares LiDAR-Only Odometry and Mapping in Real Time}, 
  year={2021},
  volume={},
  number={},
  pages={1-13},
  doi={10.1109/TGRS.2021.3083606}
  }

Credits

We hereby recommend reading A-LOAM ,floam and TEASER for reference and thank them for making their work public.

License

The source code is released under GPLv3 license.

I am constantly working on improving this code. For any technical issues or commercial use, please contact me([email protected]).

Owner
Pengwei Zhou
Lidar SLAM & Sensor Fusion
Pengwei Zhou
Security evaluation module with onnx, pytorch, and SecML.

🚀 🐼 🔥 PandaVision Integrate and automate security evaluations with onnx, pytorch, and SecML! Installation Starting the server without Docker If you

Maura Pintor 11 Apr 12, 2022
A modular, research-friendly framework for high-performance and inference of sequence models at many scales

T5X T5X is a modular, composable, research-friendly framework for high-performance, configurable, self-service training, evaluation, and inference of

Google Research 1.1k Jan 08, 2023
Generalized hybrid model for mode-locked laser diodes with an extended passive cavity

GenHybridMLLmodel Generalized hybrid model for mode-locked laser diodes with an extended passive cavity This hybrid simulation strategy combines a tra

Stijn Cuyvers 3 Sep 21, 2022
It is modified Tensorflow 2.x version of Mask R-CNN

[TF 2.X] Mask R-CNN for Object Detection and Segmentation [Notice] : The original mask-rcnn uses the tensorflow 1.X version. I modified it for tensorf

Milner 34 Nov 09, 2022
bespoke tooling for offensive security's Windows Usermode Exploit Dev course (OSED)

osed-scripts bespoke tooling for offensive security's Windows Usermode Exploit Dev course (OSED) Table of Contents Standalone Scripts egghunter.py fin

epi 268 Jan 05, 2023
Locally Most Powerful Bayesian Test for Out-of-Distribution Detection using Deep Generative Models

LMPBT Supplementary code for the Paper entitled ``Locally Most Powerful Bayesian Test for Out-of-Distribution Detection using Deep Generative Models"

1 Sep 29, 2022
This is the official implementation of our proposed SwinMR

SwinMR This is the official implementation of our proposed SwinMR: Swin Transformer for Fast MRI Please cite: @article{huang2022swin, title={Swi

A Yang Lab (led by Dr Guang Yang) 27 Nov 17, 2022
Image transformations designed for Scene Text Recognition (STR) data augmentation. Published at ICCV 2021 Workshop on Interactive Labeling and Data Augmentation for Vision.

Data Augmentation for Scene Text Recognition (ICCV 2021 Workshop) (Pronounced as "strog") Paper Arxiv Why it matters? Scene Text Recognition (STR) req

Rowel Atienza 152 Dec 28, 2022
Retinal vessel segmentation based on GT-UNet

Retinal vessel segmentation based on GT-UNet Introduction This project is a retinal blood vessel segmentation code based on UNet-like Group Transforme

Kent0n 27 Dec 18, 2022
Code and results accompanying our paper titled Mixture Proportion Estimation and PU Learning: A Modern Approach at Neurips 2021 (Spotlight)

Mixture Proportion Estimation and PU Learning: A Modern Approach This repository is the official implementation of Mixture Proportion Estimation and P

Approximately Correct Machine Intelligence (ACMI) Lab 23 Dec 28, 2022
Lunar is a neural network aimbot that uses real-time object detection accelerated with CUDA on Nvidia GPUs.

Lunar Lunar is a neural network aimbot that uses real-time object detection accelerated with CUDA on Nvidia GPUs. About Lunar can be modified to work

Zeyad Mansour 276 Jan 07, 2023
A Collection of Papers and Codes for ICCV2021 Low Level Vision and Image Generation

A Collection of Papers and Codes for ICCV2021 Low Level Vision and Image Generation

196 Jan 05, 2023
This repository introduces a short project about Transfer Learning for Classification of MRI Images.

Transfer Learning for MRI Images Classification This repository introduces a short project made during my stay at Neuromatch Summer School 2021. This

Oscar Guarnizo 3 Nov 15, 2022
Weakly supervised medical named entity classification

Trove Trove is a research framework for building weakly supervised (bio)medical named entity recognition (NER) and other entity attribute classifiers

60 Nov 18, 2022
The repository offers the official implementation of our paper in PyTorch.

Cloth Interactive Transformer (CIT) Cloth Interactive Transformer for Virtual Try-On Bin Ren1, Hao Tang1, Fanyang Meng2, Runwei Ding3, Ling Shao4, Phi

Bingoren 49 Dec 01, 2022
Python lib to talk to pylontech lithium batteries (US2000, US3000, ...) using RS485

python-pylontech Python lib to talk to pylontech lithium batteries (US2000, US3000, ...) using RS485 What is this lib ? This lib is meant to talk to P

Frank 26 Dec 28, 2022
Stroke-predictions-ml-model - Machine learning model to predict individuals chances of having a stroke

stroke-predictions-ml-model machine learning model to predict individuals chance

Alex Volchek 1 Jan 03, 2022
We present a regularized self-labeling approach to improve the generalization and robustness properties of fine-tuning.

Overview This repository provides the implementation for the paper "Improved Regularization and Robustness for Fine-tuning in Neural Networks", which

NEU-StatsML-Research 21 Sep 08, 2022
Re-implementation of the vector capsule with dynamic routing

VectorCapsule Re-implementation of the vector capsule with dynamic routing We implement the vector capsule and dynamic routing via graph neural networ

ZhenchaoTang 10 Feb 10, 2022
NeurIPS 2021 paper 'Representation Learning on Spatial Networks' code

Representation Learning on Spatial Networks This repository is the official implementation of Representation Learning on Spatial Networks. Training Ex

13 Dec 29, 2022