Skip to content
/ FreSCo Public

Frequency-Domain Scan Context for Robust LiDAR-based Place Recognition with Translation and Rotation Invariance.

License

Notifications You must be signed in to change notification settings

soytony/FreSCo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FreSCo

Frequency-Domain Scan Context for Robust LiDAR-based Place Recognition with Translation and Rotation Invariance.

News

This work is now accepted for ICARCV 2022.

1. Introducing FreSCo

Place recognition is a task expected to recognize a place when revisiting it using data from sensors like Camera or LiDAR. Existing works on hand-crafted global descriptors for LiDAR-based place recognition show remarkable performance, yet are usually viewpoint-dependent. The capibility of viewpoint invariance is important, as when revists occur, one cannot assure the new viewpoint around the same place does not deviate from the former one.

FreSCo is a novel global descriptor inspired by Scan Context and LiDAR Iris, but provides both translation invariance and rotation invariance at the same time.

2. How to Use

2.1 Data Preprocessing

Note that we separated the preprocessing part of the code from the project, and users may find more about how to preprocess the data from publicly available datasets (e.g. MulRan, KITTI, and Oxford Radar) at Point-Cloud-Preprocessing-Tools.

2.2 Getting Your Data Ready

Make sure the <keyframes_root_dir> directory is organized as follows:

<keyframes_root_dir>
├ ... 
├ non_ground_point_cloud/ <- folder for ground-removed point clouds in pcd format
├ output_multi_bev/ <- folder for multi-layer BEV images(NOT used currently)
└ output_single_bev <- folder for single-layer BEV images

2.3 Run Estimations

Check the bvm_dir and gt_pose_filename in ./fresco-matlab/test4XXX.m.

XXX is the sequence name, can be KASIT03, KITTI08 or Oxford.

Make sure they look like this:

bvm_dir = '<keyframes_root_dir>/output_single_bev/csv/';
gt_pose_filename = '<keyframes_root_dir>/keyframe_pose.csv';

Remember to replace <keyframes_root_dir> with the actual directory path.

Now run this script. It first computes the descriptors (if not cached), then computes the similarities, and finally estimate the performance in different threshold settings.

After the computations are done, it visualizes the retrieval results on the trajectory and shows precision-recall curve.

3. Performance

Details can be found in the paper.

3.1 Precision-Recall


KAIST03

KITTI 08

Oxford

3.2 Visualizations

3.2.1 MulRan KAIST 03


FreSCo

Scan Context

LiDAR Iris

LiDAR ORB

3.2.2 KITTI 08


FreSCo

Scan Context

LiDAR Iris

LiDAR ORB

3.2.3 Oxford Robotcar Radar


FreSCo

Scan Context

LiDAR Iris

LiDAR ORB

4. Citation

If you find this work useful to your research, please cite our paper (PDF):

@article{fan2022fresco,
  title={FreSCo: Frequency-Domain Scan Context for LiDAR-based Place Recognition with Translation and Rotation Invariance},
  author={Fan, Yongzhi and Du, Xin and Luo, Lun and Shen, Jizhong},
  journal={arXiv preprint arXiv:2206.12628},
  year={2022}
}

5. TO-DOs

  • Re-implement the main framework in C++;
  • Try creating the keys using VLAD / NetVLAD;
  • Integrate the framework to popular LiDAR-Inertial SLAM projects.

About

Frequency-Domain Scan Context for Robust LiDAR-based Place Recognition with Translation and Rotation Invariance.

Resources

License

Stars

Watchers

Forks

Languages