This repo contains a sliding-window optimization-based odometry system fusing visual, inertial and hybrid quadrotor dynamics obtained by combining a point-mass vehicle model with a learning-based component, with access to control commands and IMU history, to capture complex aerodynamic effects. It builds on top of the visual-inertial odometry algorithm SVO Pro. The B-spline implementation is based on this work.
If you use this code in an academic context, please cite the following T-RO 2025 paper.
G. Cioffi, L. Bauersfeld, and D. Scaramuzza, "HDVIO2.0: Wind and Disturbance Estimation with Hybrid Dynamics VIO," IEEE Transactions on Robotics (T-RO) 2025.
@article{cioffi2025hdvio2,
title={HDVIO2.0: Wind and Disturbance Estimation with Hybrid Dynamics VIO},
author={Cioffi, Giovanni and Bauersfeld, Leonard and Scaramuzza, Davide},
journal={IEEE Transactions on Robotics},
year={2025},
publisher={IEEE}
}
The code has been tested on
- Ubuntu 20.04 with ROS Noetic
Install catkin tools and vcstools if you haven't done so before. Depending on your operating system, run
# For Ubuntu 20.04 + Noetic
sudo apt-get install python3-catkin-tools python3-vcstool python3-osrf-pycommon
Install system dependencies and dependencies for Ceres Solver
# system dep.
sudo apt-get install libglew-dev libopencv-dev libyaml-cpp-dev
# Ceres dep.
sudo apt-get install libblas-dev liblapack-dev libsuitesparse-dev
Create a workspace and clone the code (ROS-DISTRO
=noetic
):
mkdir hdvio2_ws && cd hdvio2_ws
catkin config --init --mkdirs --extend /opt/ros/<ROS-DISTRO> --cmake-args -DCMAKE_BUILD_TYPE=Release
cd src
git clone git@github.com:uzh-rpg/hdvio2.0.git
vcs-import < ./hdvio2.0/dependencies.yaml
touch minkindr/minkindr_python/CATKIN_IGNORE
catkin build
Refer to SVO Pro.
Download the rosbag and the network weights from here
Terminal 1:
roslaunch hdvio2 hdvio2.launch
Terminal 2:
rosbag play flyingroom_flight.bag
The VIO system used in this repo is based on SVO Pro. Check SVO Pro for the full list of aknowledgments.
The code is licensed under GPLv3. For commercial use, please contact the authors at cioffi@ifi.uzh.ch and sdavide@ifi.uzh.ch.
Check SVO Pro for licenses of the external dependencies.