SuperVINS

luohongkGPL-3.0更新放缓

SuperVINS 是面向弱光、低纹理等恶劣成像条件的实时视觉惯性 SLAM 框架,把深度学习特征点融入传统 VINS 流程,提升跟踪鲁棒性。

📖[IEEE Sensors Journal (JSEN) ] SuperVINS: A Real-Time Visual-Inertial SLAM Framework for Challenging Imaging Conditions (integrated deep learning features)

暂无版本475star63fork同步于 2026-11-07 07:32 UTC

怎么上手

由 README 提炼,执行前请确认
docker pull luohongkun0715/supervins:latest
cd ~/catkin_ws && catkin_make -DCMAKE_BUILD_TYPE=Release -j8
硬件要求按 README 说明

需 NVIDIA GPU,README 在 RTX 4060、RTX 3090 上测试过;ONNX Runtime GPU 版要求 CUDA >= 11.0;Docker 方式需 NVIDIA Container Toolkit。

需要 CUDA有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

基于 VINS-Fusion 的实时视觉惯性 SLAM,用 SuperPoint 和 LightGlue 替换传统特征,应对挑战成像条件

SuperVINS 是面向弱光、低纹理等恶劣成像条件的实时视觉惯性 SLAM 框架,把深度学习特征点融入传统 VINS 流程,提升跟踪鲁棒性。

核心能力

  • 用 SuperPoint 学习关键点与描述子替代 Shi-Tomasi 角点
  • 用 LightGlue 经 ONNX Runtime GPU 做特征匹配替代光流
  • 回环检测改用 DBoW3 加 SuperPoint 描述子
  • 回环验证用 SuperPoint+LightGlue 匹配加 PnP RANSAC
  • 输出稠密回环校正轨迹并保存为 TUM 格式

容易踩的坑

非 Docker 构建需自行下载 ONNX Runtime 1.16.3 GPU 版并在 CMakeLists.txt 中设置 ONNXRUNTIME_ROOTDIR 与 Ceres 路径;运行依赖 SuperPoint 与 LightGlue 的 ONNX 权重及 DBoW3 词袋文件,需确认配置中的路径存在;运行需开 4 个终端分别启动 RViz、VIO 前端、回环融合与 rosbag 播放。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    📢 News

    • 2026.05: Released SuperVINS 2.0 — Fixed memory leak bugs, added LightGlue-based loop closure verification (SuperPoint+LightGlue PnP), dense loop-corrected trajectory output (TUM format), and enhanced RViz visualization.
    • 2025.03: Published in IEEE Sensors Journal.
    • 2025.03.07: Released SuperVINS 1.0 with SuperPoint+LightGlue front-end.
    • 2024.10.06: Released base code.
    • 2024.08.07: Added demo.
    • 2024.07.31: Published preprint. arXiv

    🎬 Demo

    Full demo video: resources/video.mp4


    🔍 Overview

    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:

    ModuleVINS-Fusion (Original)SuperVINS
    Feature ExtractionShi-Tomasi cornersSuperPoint (learned keypoints + descriptors)
    Feature MatchingOptical flow (KLT)LightGlue (learned matcher via ONNX Runtime GPU)
    Loop DetectionDBoW2 + BRIEFDBoW3 + SuperPoint descriptors
    Loop VerificationBRIEF descriptor matchingSuperPoint + LightGlue matching + PnP RANSAC

    Why "SuperVINS"?

    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.


    📦 Download Datasets

    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.


    🐳 Quick Start (Docker, Recommended)

    📋 Prerequisites

    🏗️ 1. Build or Pull Docker Image

    # 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 .
    

    🚀 2. Run Container

    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
    

    🔨 3. Build Inside Container

    cd ~/catkin_ws
    source /opt/ros/noetic/setup.bash
    source devel/setup.bash
    catkin_make -DCMAKE_BUILD_TYPE=Release -j8
    

    ▶️ 4. Run

    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
    

    🗺️ Trajectory Visualization

    ColorTopicDescription
    Green/supervins_estimator/pathReal-time VIO trajectory (no loop closure)
    Orange/supervins_loop_fusion/loop_corrected_pathDense loop-corrected trajectory (smooth, per-frame)
    Red/supervins_loop_fusion/pose_graph_pathPose 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
    

    🔧 Build Without Docker

    📋 Dependencies

    DependencyVersionNotes
    Ubuntu20.04 (64-bit)
    ROSNoeticInstallation
    OpenCV>= 4.2.0sudo apt-get install libopencv-dev
    Ceres Solver>= 2.1.0Installation
    ONNX Runtime1.16.3 (GPU)Download
    CUDA>= 11.0Required for ONNX Runtime GPU

    🏗️ Build Steps

    # 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
    

    ▶️ Run

    # 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
    

    ⚙️ Configuration

    Key parameters in config YAML files (e.g., config/euroc/euroc_mono_imu_config.yaml):

    ParameterDescriptionDefault
    extractor_weight_pathSuperPoint ONNX model pathweights_dpl/superpoint.onnx
    matcher_weight_pathLightGlue ONNX model pathweights_dpl/superpoint_lightglue_fused.onnx
    matche_score_thresholdLightGlue match confidence threshold0.5
    voc_relative_pathDBoW3 vocabulary path for loop detectionThirdParty/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>")
    

    📚 Train Vocabulary

    To train a custom DBoW3 vocabulary with SuperPoint descriptors, refer to the DBoW3 official repository.


    📖 Citation

    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}
    }
    

    🙏 Acknowledgements

    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:

    • DR-VINS — A community extension of SuperVINS tested for degraded visual scenes (low texture, illumination change, overexposure, indoor-outdoor transition)
    • SuperVINS ROS2— ROS 2 implementation of SuperVINS
    • AdaptiveVINS — An adaptive visual-inertial odometry extension built upon SuperVINS and VINS-Fusion, which adaptively fuses classical optical flow front-end and deep learning-based front-end to balance localization accuracy and computational overhead
    • SuperVINS (Webots Adapted)— A customized fork fully adapted for Webots robot simulation, with revised camera models, simulation configs and dedicated compilation scripts

    Finally, we thank the Wuhan University BRAIN Lab for supporting this project.


    📄 License

    SuperVINS is released under the GNU General Public License v3.0.