SimGAN
Pytorch Implementation of SimGAN: Hybrid Simulator Identification for Domain Adaptation via Adversarial Reinforcement L…
📖[IEEE Sensors Journal (JSEN) ] SuperVINS: A Real-Time Visual-Inertial SLAM Framework for Challenging Imaging Conditio…
git clone https://github.com/luohongk/SuperVINS.gitluohongk/SuperVINSProject Website | Paper (IEEE Sensors Journal) | arXiv
Full demo video: resources/video.mp4
SuperVINS is a real-time Visual-Inertial SLAM system built upon VINS-Fusion, replacing traditional handcrafted features with deep-learning-based feature extraction and matching throughout the entire pipeline:
| Module | VINS-Fusion (Original) | SuperVINS |
|---|---|---|
| Feature Extraction | Shi-Tomasi corners | SuperPoint (learned keypoints + descriptors) |
| Feature Matching | Optical flow (KLT) | LightGlue (learned matcher via ONNX Runtime GPU) |
| Loop Detection | DBoW2 + BRIEF | DBoW3 + SuperPoint descriptors |
| Loop Verification | BRIEF descriptor matching | SuperPoint + LightGlue matching + PnP RANSAC |
The name honors SuperPoint and VINS-Fusion — "Super" refers to the SuperPoint descriptor that runs through both front-end tracking and loop closure, while "VINS" acknowledges the visual-inertial fusion backbone.
cd ~/catkin_ws/src/SuperVINS chmod +x download_data.sh ./download_data.sh
Or manually download EuRoC MAV Dataset and place the rosbag files in your data directory.
# Option A (Recommended): Pull pre-built image (~7.18 GB, CUDA 11.8, Ubuntu 20.04,Noetic) docker pull luohongkun0715/supervins:latest # Option B: Build from Dockerfile (very slow) cd SuperVINS docker build -f docker/Dockerfile -t supervins:latest .
xhost +local:root && \ docker run -it \ --gpus all \ --network=host \ --privileged \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -e DISPLAY=$DISPLAY \ -v <YOUR_SUPERVINS_PATH>:/root/catkin_ws/src/SuperVINS \ -v <YOUR_DATA_PATH>:/data \ --name supervins_work \ -w /root/catkin_ws \ supervins:latest
Replace
<YOUR_SUPERVINS_PATH>with your local SuperVINS repo path, and<YOUR_DATA_PATH>with your dataset directory.
For example:
xhost +local:root && \ docker run -it \ --gpus all \ --network=host \ --privileged \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -e DISPLAY=$DISPLAY \ -v /home/lhk/workspace/SuperVINS:/root/catkin_ws/src/SuperVINS \ -v /home/lhk/data:/data \ --name supervins_work \ -w /root/catkin_ws \ supervins:latest
cd ~/catkin_ws source /opt/ros/noetic/setup.bash source devel/setup.bash catkin_make -DCMAKE_BUILD_TYPE=Release -j8
Open 4 terminals (or use tmux) inside the container:
# Terminal 1: RViz visualization cd ~/catkin_ws source devel/setup.bash roslaunch supervins supervins_rviz.launch # Terminal 2: VIO front-end cd ~/catkin_ws source devel/setup.bash rosrun supervins supervins_node ~/catkin_ws/src/SuperVINS/config/euroc/euroc_mono_imu_config.yaml # Terminal 3: Loop fusion cd ~/catkin_ws source devel/setup.bash rosrun supervins_loop_fusion supervins_loop_fusion_node ~/catkin_ws/src/SuperVINS/config/euroc/euroc_mono_imu_config.yaml # Terminal 4: Play dataset cd ~/catkin_ws source devel/setup.bash rosbag play /data/V2_01_easy.bag
| Color | Topic | Description |
|---|---|---|
| Green | /supervins_estimator/path |
Real-time VIO trajectory (no loop closure) |
| Orange | /supervins_loop_fusion/loop_corrected_path |
Dense loop-corrected trajectory (smooth, per-frame) |
| Red | /supervins_loop_fusion/pose_graph_path |
Pose graph optimized keyframe trajectory |
The loop-corrected trajectory is automatically saved in TUM format to <output_path>/loop_corrected_tum.txt for offline evaluation with EVO:
evo_ape tum groundtruth.txt loop_corrected_tum.txt -va --plot
| Dependency | Version | Notes |
|---|---|---|
| Ubuntu | 20.04 (64-bit) | |
| ROS | Noetic | Installation |
| OpenCV | >= 4.2.0 | sudo apt-get install libopencv-dev |
| Ceres Solver | >= 2.1.0 | Installation |
| ONNX Runtime | 1.16.3 (GPU) | Download |
| CUDA | >= 11.0 | Required for ONNX Runtime GPU |
# 1. Create workspace mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/src catkin_init_workspace # 2. Clone git clone https://github.com/luohongk/SuperVINS.git # 3. Build cd ~/catkin_ws catkin_make -DCMAKE_BUILD_TYPE=Release
# Terminal 1: RViz visualization cd ~/catkin_ws source devel/setup.bash roslaunch supervins supervins_rviz.launch # Terminal 2: VIO front-end cd ~/catkin_ws source devel/setup.bash rosrun supervins supervins_node ~/catkin_ws/src/SuperVINS/config/euroc/euroc_mono_imu_config.yaml # Terminal 3: Loop fusion cd ~/catkin_ws source devel/setup.bash rosrun supervins_loop_fusion supervins_loop_fusion_node ~/catkin_ws/src/SuperVINS/config/euroc/euroc_mono_imu_config.yaml # Terminal 4: Play dataset cd ~/catkin_ws source devel/setup.bash rosbag play /data/V2_01_easy.bag
Key parameters in config YAML files (e.g., config/euroc/euroc_mono_imu_config.yaml):
| Parameter | Description | Default |
|---|---|---|
extractor_weight_path |
SuperPoint ONNX model path | weights_dpl/superpoint.onnx |
matcher_weight_path |
LightGlue ONNX model path | weights_dpl/superpoint_lightglue_fused.onnx |
matche_score_threshold |
LightGlue match confidence threshold | 0.5 |
voc_relative_path |
DBoW3 vocabulary path for loop detection | ThirdParty/Voc/superpoint1.yml.gz |
Path configuration in CMakeLists.txt (supervins_estimator, supervins_loop_fusion, camera_models):
set(ONNXRUNTIME_ROOTDIR "<your_onnxruntime_path>") find_package(Ceres REQUIRED PATHS "<your_ceres_path>")
To train a custom DBoW3 vocabulary with SuperPoint descriptors, refer to the DBoW3 official repository.
If you find SuperVINS useful in your research, please cite:
@article{luo2025supervins,
title = {SuperVINS: A Real-Time Visual-Inertial SLAM Framework for Challenging Imaging Conditions},
author = {Luo, Hongkun and Liu, Yang and Guo, Chi and Li, Zengke and Song, Weiwei},
journal = {IEEE Sensors Journal},
year = {2025},
publisher = {IEEE},
doi = {10.1109/JSEN.2025.3553653}
}
SuperVINS is built upon the following outstanding open-source projects:
We also gratefully acknowledge the following community projects for actively testing, extending, and demonstrating SuperVINS. Feel free to reach out to their authors for related questions:
Finally, we thank the Wuhan University BRAIN Lab for supporting this project.
SuperVINS is released under the GNU General Public License v3.0.
more like this
Pytorch Implementation of SimGAN: Hybrid Simulator Identification for Domain Adaptation via Adversarial Reinforcement L…
search projects, people, and tags