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-pycommonInstall 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-devCreate 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 [email protected]:uzh-rpg/hdvio2.0.git
vcs-import < ./hdvio2.0/dependencies.yaml
touch minkindr/minkindr_python/CATKIN_IGNORE
catkin buildRefer to SVO Pro.
Download the rosbag and the network weights from here. Place the network weights in the folder hdvio2/net_models.
Terminal 1:
roslaunch hdvio2 hdvio2.launchTerminal 2:
rosbag play flyingroom_flight.bagThe 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 [email protected] and [email protected].
Check SVO Pro for licenses of the external dependencies.
