Welcome to the Mercator Descriptor repository! The Mercator Descriptor is a novel descriptor for loop closure detection and place recognition. This descriptor first uses a Mercator-like projection to generate a rotation-invariant descriptor from a frame of point clouds. Then, by constructing a database to store this new descriptor, it enables efficient matching between historical and current frames for loop closure detection.
** Ubuntu and ROS**
We tested our code on Ubuntu18.04 with ros melodic and Ubuntu20.04 with noetic. Additional ROS package is required:
sudo apt-get install ros-xxx-pcl-conversions
Following the official Eigen installation, or directly install Eigen by:
sudo apt-get install libeigen3-dev
Please kindly install ceres-solver by following the guide on ceres Installation. Notice that the version of ceres-solver should higher than ceres-solver 2.1.0
Following the official GTSAM installation, or directly install GTSAM 4.x stable release by:
# Add PPA
sudo add-apt-repository ppa:borglab/gtsam-release-4.0
sudo apt update # not necessary since Bionic
# Install:
sudo apt install libgtsam-dev libgtsam-unstable-dev
!! IMPORTANT !!: Please do not install the GTSAM of develop branch, which are not compatible with our code! We are still figuring out this issue.
Since this repo does not implement any method (i.e., LOAM, LIO, etc) for solving the pose for registering the LiDAR scan. So, you have to prepare two set of data for reproducing our results, include: 1) the LiDAR point cloud data. 2) the point cloud registration pose.
<param name="lidar_path" type="string" value="/media/wzb/Elements/wangzika_date/kitti/date/dataset/sequences/$(arg seq_idx)/velodyne/"/>
<param name="pose_path" type="string" value="/media/wzb/Elements/wangzika_date/kitti/date/dataset/KITTI_poses/kitti$(arg seq_idx).txt"/>
<param name="output_timepath" type="string" value="/home/wzb/wangzika_code/mercator_ws/src/MCT/res_out/test/time/time-kitti$(arg seq_idx)_generated.txt"/>
<param name="output_posepath" type="string" value="/home/wzb/wangzika_code/mercator_ws/src/MCT/res_out/test/wzb_deepm_60_res-kitti$(arg seq_idx)_generated.txt"/>
<param name="seq_idx" type="string" value="$(arg seq_idx)"/>
video: Youtube link
The figure depicts an overview of the Backpack laser scanning system and the campus dataset, as well as the resulting graphs with and without loop closure.Wang Zhibo(e-mail:[email protected])
We hereby recommend reading Scan Context ,FAST_LIO ,A-LOAM and STD for reference and thank them for making their work public.
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]).