Crazyflow is a research simulator for quadrotors. It runs batched, differentiable simulations on CPU and GPU via JAX, with analytical and abstracted dynamics for the Crazyflie 2.x family.
import numpy as np
from crazyflow.sim import Sim
from crazyflow.control import Control
sim = Sim(n_worlds=4096, n_drones=1, control=Control.state)
cmd = np.zeros((4096, 1, 13))
cmd[..., 2] = 0.5 # hover at 0.5 m across all worlds
for _ in range(100):
sim.state_control(cmd)
sim.step(sim.freq // sim.control_freq)
sim.render()learnsyslab.github.io/crazyflow — installation, user guide, examples, and API reference.
- n_worlds x n_drones — batched over independent environments and multi-drone swarms simultaneously
- GPU-accelerated — up to 914 M steps/s on an RTX 4090 (first-principles dynamics, 262 K worlds)
- Differentiable —
jax.gradworks through the full dynamics and control pipeline - First-principles dynamics — dynamics using first-principles equations and parameters identified from real-world measurements
- Abstracted dynamics — simplified dynamics in three flavors fitted from real Crazyflie flight data
- Modular pipelines — step and reset are tuples of plain JAX functions; insert anything, anywhere
- MuJoCo integration — onscreen and offscreen rendering, raycasting, and contact detection via MJX
pip install crazyflow # CPU
pip install "crazyflow[gpu]" # GPU (Linux x86-64, CUDA 12)Developer install with editable submodules (pixi required):
git clone --recurse-submodules https://github.com/learnsyslab/crazyflow.git
cd crazyflow
pixi shellFirst-principles dynamics, one drone. CPU: AMD Ryzen 9 7950X. GPU: NVIDIA RTX 4090.
| n_worlds | CPU steps/s | GPU steps/s |
|---|---|---|
| 64 | 3.3 M | 1.2 M |
| 1 024 | 9.2 M | 18.7 M |
| 16 384 | 11.9 M | 257 M |
| 65 536 | 15.6 M | 678 M |
| 262 144 | 12.6 M | 914 M |
Full benchmarks including multi-drone scaling are in the documentation.
@misc{schuck2026crazyflow,
title={Crazyflow: An Accurate, GPU-Accelerated, Differentiable Drone Simulator in JAX},
author={Martin Schuck and Marcel P. Rath and Yufei Hua and AbhisheK Goudar and SiQi Zhou and Angela P. Schoellig},
year={2026},
eprint={2606.01478},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2606.01478},
}