Flightmare

CPP_CI clang format License Website

Flightmare is a flexible modular quadrotor simulator. Flightmare is composed of two main components: a configurable rendering engine built on Unity and a flexible physics engine for dynamics simulation. Those two components are totally decoupled and can run independently from each other. Flightmare comes with several desirable features: (i) a large multi-modal sensor suite, including an interface to extract the 3D point-cloud of the scene; (ii) an API for reinforcement learning which can simulate hundreds of quadrotors in parallel; and (iii) an integration with a virtual-reality headset for interaction with the simulated environment. Flightmare can be used for various applications, including path-planning, reinforcement learning, visual-inertial odometry, deep learning, human-robot interaction, etc.

Website




The simulator

Flightmare is an open-source simulator for quadrotors. It is composed of two main components: a configurable rendering engine built on Unity and a flexible physics engine for dynamics simulation. In addition, it has OpenAI gym-style python wrapper for reinforcement learning tasks and a flexible interface with stable baselines for solving these tasks with deep RL algorithms. Flightmare provides ROS wrapper to interface with popular ROS packages, such as high_mpc for learning-based mpc, rpg_mpc for advanced quadrotor controller, and rpg_quadrotor_control for hard-ware-in-the-loop simulation.

Simulator structure

Software components

  • flightlib: Flightmare Library

    • Quadrotor Dynamics

    • Sensors Simulation

    • Unity Bridge

    • Python Wrapper

  • flightrender: Flightmare Rendering Engine

    • Photo-realistic 3D Environment

    • RGB Images, Depth, Segmentation

  • flightrl: Reinforcement Learning Algorithms and Examples

    • Deep Reinforcement Learning Algorithms, e.g., PPO

    • Reinforcement learning examples, e.g., quadrotor control

  • flightros: ROS Wrapper for Flightmare Library

    • ROS wrapper

    • Quadrotor Control example with PID controller, also simulate RGB Camera that can request images from Flightmare Rendering Engine.

Publication

Paper

If you use this code in a publication, please cite the following paper PDF:

@article{yunlong2020flightmare,
title={Flightmare: A Flexible Quadrotor Simulator},
author={Song, Yunlong and Naji, Selim and Kaufmann, Elia and Loquercio, Antonio and Scaramuzza, Davide},
booktitle={Conference on Robot Learning (CoRL)},
year={2020}}

}

License

This project is released under the MIT License. Please review the License file for more details.

Acknowledgements

This project is inspired by FlightGoggles, we use some components from FlightGoggles.

The Image Synthesis for Machine Learning from Unity is a core element of Flightmare’s image post-processing.

The demo scene Industrial, which we added in the repository, was created by Dmitrii Kutsenko and is freely available in the asset store. The original asset can be found here.