This is the official implementation of IEEE Transactions on Intelligent Vehicles 2023 paper "HPPLO-Net: Unsupervised LiDAR Odometry Using a Hierarchical Point-to-Plane Solver" created by Beibei Zhou, Yiming Tu, Zhong Jin, Chengzhong Xu, Hui Kong.
If you find our work useful in your research, please cite:
@ARTICLE{10160144,
author={Zhou, Beibei and Tu, Yiming and Jin, Zhong and Xu, Chengzhong and Kong, Hui},
journal={IEEE Transactions on Intelligent Vehicles},
title={HPPLO-Net: Unsupervised LiDAR Odometry Using a Hierarchical Point-to-Plane Solver},
year={2023},
volume={},
number={},
pages={1-13},
doi={10.1109/TIV.2023.3288943}}
Our model is trained and tested under:
- Python 3.7.0
- NVIDIA GPU + CUDA CuDNN
- PyTorch (torch >= 1.2.0)
- scipy
- tqdm
- sklearn
- numba
- cffi
- pypng
- pptk
We use KITTI odometry dataset in our experiments.
- remove the ground points of pointclouds by running
groundtest.mlocated in the directorydata_preprocess_zbb/matlab_ground/devkit/matlabusing MATLAB. - downsample the pointclouds by running the file
zbb_data_process.pylocated in the directorydata_preprocess_zbb/python_downsampleusing python.
python zbb_data_process.py
Pay attention to modifying the file paths.
Train the network by running
python traincomer.py
Please reminder to specify the onlyneedtest(False), loadmodel(False),dataroot,trainset(sequences for training), batch_size in param/titanrtx_1.py.
Test the network by running
python traincomer.py
Please reminder to specify the onlyneedtest(True), loadmodel(True),model(path to HPPLO-Net model), dataroot,testset(sequences for testing), testbatch in param/titanrtx_1.py.
We thank the following open-source projects for the help of the implementations: