High-Fidelity Drone Simulation Environment based on Genesis
Documentation | Genesis Engine
Features • Installation • Demos • FPV Hardware • Citation
Genesis Drone Env provides a robust playground for drone research, ranging from Reinforcement Learning (RL) to classical Geometric Control. Included in the official Genesis ecosystem, this repository serves as a foundation for developing complex aerial robotics algorithms.
- FLARE: Agile Flights for Quadrotor Cable-Suspended Payload Systems via Reinforcement Learning (Accepted by IEEE RA-L) (Github Code)
- 🚀 Reinforcement Learning: Ready-to-use environments for training tracking policies (PPO included).
- 📐 Geometric Control: Concise implementation of SO(3)/SE(3) controllers for precise trajectory tracking.
- 🎮 Hardware-in-the-Loop (HIL): Connect your real RC transmitter via Flight Controller (FCU) to fly FPV in the simulator.
- ⚙️ Highly Configurable: Easy tuning of flight parameters, physics settings, and reward functions via YAML.
It is recommended to use a virtual environment (conda) to manage dependencies.
# 1. Create environment
conda create -n genesis_drone python=3.11 # Requires Python >= 3.10
conda activate genesis_drone
# 2. Install Genesis (Ensure you have the latest version)
# Visit https://github.com/Genesis-Embodied-AI/Genesis for detailed instructions
# 3. Clone and install this repository
git clone https://github.com/KafuuChikai/GenesisDroneEnv.git
cd GenesisDroneEnv
pip install -e .Train or evaluate a policy to track a moving target.
python scripts/eval/track_eval.pypython scripts/train/track_train.py Note: Training typically converges around the 200th step. You can fine-tune the reward scale in
rl_env.yaml.
Replace the neural network with a classical geometric controller for precise maneuvers.
python scripts/eval/se3_controller_eval.py --use-trajectoryTips:
--use-trajectory: Enables circle trajectory tracking.- Without the flag, it defaults to Waypoint Mode.
The controller implements the framework proposed in:
- Geometric tracking control of a quadrotor UAV on SE(3)
- Control of Quadrotors Using the Hopf Fibration on SO(3)
Fly the simulated drone using your real Radio Controller (RC) via a Flight Controller (FCU) bridge.
Hardware Setup
- Prepare FCU: Use an STM32H743 FCU.
- Flash Firmware: Flash the custom HEX file: betaflight_4.4.0_STM32H743_forRC
- Connect:
- Power the FCU via USB-C.
- Connect the FCU's UART port to your PC using a USB-to-TTL module.
Software Configuration
- Check your serial port ID (e.g.,
/dev/ttyUSB0) using:
ls /dev/tty*- Update the
USB_pathparameter in flight.yaml (or relevant config) to match your port.
Run FPV Mode
python scripts/eval/rc_FPV_eval.pyCustomize the simulation to fit your needs by editing the YAML files in the config/ directory:
| Config Type | File Path | Description |
|---|---|---|
| Flight Dynamics | config/*/flight.yaml |
PID gains, physical properties (mass, inertia). |
| Environment | config/*/genesis_env.yaml |
Physics engine settings, rendering, scene setup. |
| RL Hyperparams | config/*/rl_env.yaml |
Reward functions, observation space, training steps. |
This repository is inspired by the following ground-breaking work:
Champion-level drone racing using deep reinforcement learning (Nature 2023)
We acknowledge the contributions of the open-source community that make this project possible.


