Authors: Thanh Nguyen Canh, Bao Nguyen Quoc, HaoLan Zhang, Bupesh Rethinam Veeraiah, Xiem HoangVan, Nak Young Chong.
IRAF-SLAM is an Illumination-Robust and Adaptive Feature-Culling front-end designed to enhance vSLAM resilience in complex and challenging environments.
If you use IRAF-SLAM in an academic work, please cite:
@article{thanh_IRAF-SLAM,
title={IRAF-SLAM: An Illumination-Robust and Adaptive Feature-Culling Front-End for Visual SLAM in Challenging Environments},
author={Thanh Nguyen Canh, Bao Nguyen Quoc, HaoLan Zhang, Bupesh Rethinam Veeraiah, Xiem HoangVan, and Nak Young Chong},
journal={},
volume={},
number={},
pages={},
year={2025}
}
We have tested the library in 20.04, but it should be easy to compile in other platforms. A powerful computer (e.g. i7) will ensure real-time performance and provide more stable and accurate results.
We use the new thread and chrono functionalities of C++11.
We use Pangolin for visualization and user interface.
We use OpenCV to manipulate images and features.
We use modified versions of the DBoW2 library to perform place recognition and g2o library to perform non-linear optimizations. Both modified libraries (which are BSD) are included in the Thirdparty folder.
Clone the repository:
git clone https://github.com/thanhnguyencanh/IRAF-SLAM
We provide a script build.sh to build the Thirdparty libraries and ORB-SLAM3. Please make sure you have installed all required dependencies (see section 2). Execute:
cd IRAF-SLAM
chmod +x build.sh
./build.sh
This will create libORB_SLAM3.so at lib folder and the executables in Examples folder.
First, we test with EuRoC dataset was recorded with two pinhole cameras and an inertial sensor. So please download and modify the directory in the script "euroc_run.sh"
./euroc_run.sh
TUM-VI dataset was recorded with two fisheye cameras and an inertial sensor. So please download and modify the directory in the script "tum_run.sh"
./tum_run.sh
In TUM-VI ground truth is only available in the room where all sequences start and end. As a result the error measures the drift at the end of the sequence.
Execute the following script to process sequences and compute the RMS ATE:
./evo_eval.sh
./evo_ape.sh