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]
[Note that regard to pure odometry without corrections through loop closures, T-LOAM delivers much less drift than F-LOAM.
Framework overview
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
T-LOAM
F-LOAM
T-LOAM
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, organize it according to the following structure, and modify the read path in the config/kitti/kitti_reader.yaml
-Example for running T-LOAM using the KITTI Dataset
roslaunch tloam tloam_kitti.launch
Contributors
Pengwei Zhou (Email: zpw6106@gmail.com)
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(zpw6106@gmail.com).