Skip to content

uzh-rpg/hdvio2.0

Repository files navigation

HDVIO2.0: Wind and Disturbance Estimation with Hybrid Dynamics VIO

HDVIO2.0: Wind and Disturbance Estimation with Hybrid Dynamics VIO

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.

Publication

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

Install

The code has been tested on

  • Ubuntu 20.04 with ROS Noetic

Install dependences

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

Clone and compile

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

Trobleshooting

Refer to SVO Pro.

How to run the code

Download the rosbag and the network weights from here

Terminal 1:

roslaunch hdvio2 hdvio2.launch

Terminal 2:

rosbag play flyingroom_flight.bag

Credits

The VIO system used in this repo is based on SVO Pro. Check SVO Pro for the full list of aknowledgments.

License

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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published