This repository presents an enhanced version of VINS-Fusion that incorporates our proposed Bag-of-Word-Groups (BoWG) method for robust loop closure detection. The integration primarily focuses on improving the loop closure capabilities within the loop_fusion package, aiming to achieve reliable and efficient visual place recognition in SLAM applications.
BoWG demo detector on New College dataset
VINS-Fusion with BoWG on EuRoC MH_03_medium sequence
Ubuntu 20.04. ROS Noetic. ROS Installation.
Follow Ceres Installation.
Clone the repository and catkin build:
cd ~/catkin_ws/src
git clone https://github.com/EdgarFx/BoWG_VINS_Loop.git
cd ../
catkin build
source ~/catkin_ws/devel/setup.bash
(if you fail in this step, try to find another computer with clean system or reinstall Ubuntu and ROS)
Download EuRoC MAV Dataset to YOUR_DATASET_FOLDER. Take MH_01 for example, you can run BoWG_VINS_Loop with three sensor types (monocular camera + IMU, stereo cameras + IMU and stereo cameras). Open four terminals, run vins odometry, visual loop closure, rviz and play the bag file respectively. Green path is VIO odometry; red path is odometry under visual loop closure.
roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/catkin_ws/src/BoWG_VINS_Loop/config/euroc/euroc_mono_imu_config.yaml
rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/BoWG_VINS_Loop/config/euroc/euroc_mono_imu_config.yaml ~/catkin_ws/src/BoWG_VINS_Loop/config/euroc/euroc_bowg_config.yaml
rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag
roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/catkin_ws/src/BoWG_VINS_Loop/config/euroc/euroc_stereo_imu_config.yaml
rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/BoWG_VINS_Loop/config/euroc/euroc_stereo_imu_config.yaml ~/catkin_ws/src/BoWG_VINS_Loop/config/euroc/euroc_bowg_config.yaml
rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag
roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/catkin_ws/src/BoWG_VINS_Loop/config/euroc/euroc_stereo_config.yaml
rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/BoWG_VINS_Loop/config/euroc/euroc_stereo_config.yaml ~/catkin_ws/src/BoWG_VINS_Loop/config/euroc/euroc_bowg_config.yaml
rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag
For more information about the use of the SLAM system, please refer to VINS-Fusion.
We use VINS-Fusion as the SLAM framework, ceres solver for non-linear optimization and BoWG for loop detection, a generic camera model and GeographicLib.
The source code is released under GPLv3 license.

