MCPcopy Create free account
hub / github.com/ZikangYuan/voxel_svio

github.com/ZikangYuan/voxel_svio @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
546 symbols 1,179 edges 50 files 38 documented · 7% updated 9mo ago★ 8181 open issues

Browse by type

Functions 446 Types & classes 100
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Voxel-SVIO: Stereo Visual-Inertial Odometry based on Voxel Map

A MSCKF based stereo visual-inertial odometry that utilizes voxel-based map management

Zikang Yuan, Fengtian Lang, Jie Deng, Hongcheng Luo, and Xin Yang

<sup>†</sup>Corresponding Author

Video

💡 News

  • [2025.05.17] Voxel-SVIO is officially published by RA-L !
  • [2025.05.08] Voxel-SVIO can be early accessed in IEEE Xplore !
  • [2025.04.30] The source code of Voxel-SVIO is released !
  • [2025.04.21] Voxel-SVIO is accepted by RA-L 2025 without revision 🚀 !

📜 Introduction

Voxel-SVIO enables VIO systems to efficiently retrieve the most suitable points for optimizer inclusion, thereby ensuring optimal allocation of computational resources to the variables most critical for optimization. The map points in green voxels are feded into the estimator for MSCKF-based state update. Please refer to YouTube for smoother video playback.

Please cite our paper if you use this project in your research:

@article{yuan2025voxel,
  author={Yuan, Zikang and Lang, Fengtian and Deng, Jie and Luo, Hongcheng and Yang, Xin},
  journal={IEEE Robotics and Automation Letters}, 
  title={Voxel-SVIO: Stereo Visual-Inertial Odometry based on Voxel Map}, 
  year={2025},
  volume={10},
  number={6},
  pages={6352-6359}
}

Please kindly star ⭐️ this project if it helps you. We take great efforts to develop and maintain it 😁.

🛠️ Installation

1. Requirements

GCC >= 7.5.0

Cmake >= 3.16.0

Eigen3 >= 3.3.4

OpenCV == 4.2.0 for Ubuntu 20.04

PCL == 1.10 for Ubuntu 20.04

Ceres >= 1.14

ROS

Have Tested On:
OS GCC Cmake Eigen3 OpenCV PCL Ceres
Ubuntu 20.04 9.4.0 3.16.3 3.3.7 4.2.0 1.10.0 1.14

2. Create ROS workspace

mkdir -p ~/Voxel-SVIO/src
cd Voxel-SVIO/src

3. Clone the directory and build

git clone https://github.com/ZikangYuan/voxel_svio.git
cd ..
catkin_make

🚀 Run on Public Datasets

Noted:

A. Please create a folder named "output" before running. When Voxel-SVIO is running, the estimated pose is recorded in real time in the pose.txt located in the output folder.

B. We store the public datasets on Baidu drive. Chinese users can download the rosbag data of TUM_VI and KAIST.

1. Run on EuRoC_MAV

Please go to the workspace of Voxel-SVIO and type:

cd Voxel-SVIO
source devel/setup.bash
roslaunch voxel_svio vio_euroc.launch

Then open the terminal in the path of the bag file, and type:

rosbag play SEQUENCE_NAME.bag --clock -d 1.0

2. Run on TUM_VI

Please go to the workspace of Voxel-SVIO and type:

cd Voxel-SVIO
source devel/setup.bash
roslaunch voxel_svio vio_tum_vi.launch

Then open the terminal in the path of the bag file, and type:

rosbag play SEQUENCE_NAME.bag --clock -d 1.0

For the TUM_VI dataset, different configuration files are required for the scenarios of corridor, magistrale, and room. Please select the appropriate configuration file according to the sequence being processed.

3. Run on KAIST

Please go to the workspace of Voxel-SVIO and type:

cd Voxel-SVIO
source devel/setup.bash
roslaunch voxel_svio vio_kaist.launch

Then open the terminal in the path of the bag file, and type:

rosbag play SEQUENCE_NAME.bag --clock -d 1.0

For the KAIST dataset, the extrinsic parameters of sequences urban38 and urban39 differ from other sequences. When processing urban38 or urban39, please use kaist2.yaml; for all other sequences, please use kaist.yaml.

⚠️ Memory Explosion with RViz

  • Enabling RViz visualization can lead to a rapid increase in memory consumption, as it accumulates and renders voxel and point cloud data. This issue is particularly severe with large-scale datasets like KAIST. We highly recommend disabling RViz when running on KAIST to avoid excessive memory usage.

🤓 Acknowledgments

We would like to express our gratitude to the following projects, which have provided significant support and inspiration for our work: - Open-VINs: An open source platform for visual-inertial navigation research, the implementation of our MSCKF is based on it. - DSO: A monocular direct sparse visual odometry, our feature extraction and matching is inspired from it. - VINs-Mono: A robust and versatile monocular visual-inertial state estimator, our keyframe selection and marginalization is based on it. - EPIC: A lightweight LiDAR-based UAV exploration framework for large-scale scenarios, our visualization module is mainly implemented by referring to it.

Core symbols most depended-on inside this repo

Shape

Method 424
Class 96
Function 22
Enum 4

Languages

C++100%

Modules by API surface

thirdLibrary/tessil-src/include/tsl/robin_hash.h82 symbols
src/state.cpp39 symbols
thirdLibrary/tessil-src/tests/utils.h38 symbols
thirdLibrary/tessil-src/include/tsl/robin_map.h36 symbols
thirdLibrary/tessil-src/include/tsl/robin_set.h33 symbols
src/stereoVio.cpp22 symbols
thirdLibrary/tessil-src/include/tsl/robin_growth_policy.h21 symbols
src/quatOps.cpp20 symbols
src/msckf.cpp18 symbols
src/feature.cpp18 symbols
include/preIntegration.h17 symbols
src/stateHelper.cpp14 symbols

For agents

$ claude mcp add voxel_svio \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page