ROS2 wrapper for lightweight Visual-Inertial Odometry system.
Supports Stereo VIO and RGBD VO modes.
This project implements the statistical uncertainty learning method proposed in:
Statistical Uncertainty Learning for Robust Visual-Inertial State Estimation
Seungwon Choi, Donggyu Park, Seo-Yeon Hwang, Tae-Wan Kim
arXiv:2510.01648
Original Source: https://github.com/93won/lightweight_vio
If you use this work in your research, please cite:
@misc{choi2025statistical,
title={Statistical Uncertainty Learning for Robust Visual-Inertial State Estimation},
author={Seungwon Choi and Donggyu Park and Seo-Yeon Hwang and Tae-Wan Kim},
year={2025},
eprint={2510.01648},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2510.01648}
}- Ubuntu 22.04
- ROS2 Humble
mkdir -p <your_path>/vio_ws/src
cd <your_path>/vio_ws/src
git clone https://github.com/93won/vio_ros_wrapper.git
cd vio_ros_wrapper
git submodule update --init --recursive
cd <your_path>/vio_wscolcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
source install/setup.bashPre-recorded ROS2 bags for testing:
- File:
cafe.bag.db3 - Description: Indoor cafe scene with RealSense D435i
- Topics: RGB + Depth images
- Download: Google Drive
- File:
room1_stereo_imu.bag_0.db3 - Description: Indoor room with fisheye stereo camera + IMU
- Topics: Stereo images + IMU data
- Download: Google Drive
- File:
v101_stereo_imu.bag.db3 - Description: Vicon room, easy trajectory
- Topics: Rectilinear Stereo images + IMU data
- Download: Google Drive
# Terminal 1
ros2 launch vio_ros_wrapper rgbd_vo.launch.py
# Terminal 2
ros2 bag play cafe.bag.db3 --clock# Terminal 1 (in <your_path>/vio_ws)
ros2 launch vio_ros_wrapper vio.launch.py \
config_file:=<your_path>/vio_ws/src/vio_ros_wrapper/lightweight_vio/config/tum_vio.yaml
# Terminal 2
ros2 bag play room1_stereo_imu.bag_0.db3 --clock# Terminal 1 (in <your_path>/vio_ws)
ros2 launch vio_ros_wrapper vio.launch.py \
config_file:=<your_path>/vio_ws/src/vio_ros_wrapper/lightweight_vio/config/euroc_vio.yaml
# Terminal 2
ros2 bag play v101_stereo_imu.bag.db3 --clockConfig files: lightweight_vio/config/
euroc_vio.yaml- EuRoC stereo + IMUd435i_cafe.yaml- RealSense RGBDtum_vio.yaml- TUM-VI stereo + IMU
/vio/odometry- 6-DOF pose/vio/trajectory- Path history/vio/tracking_image- Feature visualization/vio/depth_image- Depth heatmap (RGBD only)
/cam0/image_raw- Left camera/cam1/image_raw- Right camera/imu0- IMU data
/camera/rgb/image_raw- RGB image/camera/depth/image_raw- Depth image
MIT License
