Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
PyBullet Gymnasium environments for single and multi-agent reinforcement learning of quadcopter control
| Date | Stars |
|---|---|
| 2026-07-24 | 2088 |
| 2026-07-25 | 2088 |
| 2026-07-28 | 2092 |
| 2026-07-30 | 2092 |
| 2026-07-31 | 2098 |
| 2026-08-01 | 2099 |
| 2026-08-02 | 2100 |
| 2026-08-04 | 2099 |
| 2026-08-05 | 2103 |
| 2026-08-06 | 2103 |
Today
— stars today
This week
+11 stars this week
This month
— stars this month
Momentum
11.0
growth rate 0.53%/day
> [!TIP]
> For research work with **symbolic dynamics and constraints**, also try [`safe-control-gym`](https://github.com/learnsyslab/safe-control-gym)
>
> For GPU-accelerated, **differentiable, JAX-based simulation**, also try [`crazyflow`](https://github.com/learnsyslab/crazyflow)
>
> For production-grade deployment of **ROS2 + PX4/ArduPilot + YOLO/LiDAR**, use [`aerial-autonomy-stack`](https://github.com/JacopoPan/aerial-autonomy-stack)
# gym-pybullet-drones
This is a minimalist refactoring of the original `gym-pybullet-drones` repository, designed for compatibility with [`gymnasium`](https://github.com/Farama-Foundation/Gymnasium), [`stable-baselines3` 2.0](https://github.com/DLR-RM/stable-baselines3/pull/1327), and [`betaflight`](https://github.com/betaflight/betaflight)/[`crazyflie-firmware`](https://github.com/bitcraze/crazyflie-firmware/) SITL.
> **NEWS**: `gym-pybullet-drones` was featured in [GitHub's Maintainer Spotlight 2026](https://maintainermonth.github.com/academia/gym-pybullet-drones-maintainer-spotlight)
> **NOTE**: if you want to access the original codebase, presented at IROS in 2021, please `git checkout [paper|master]`
<img src="gym_pybullet_drones/assets/helix.gif" alt="formation flight" width="325"> <img src="gym_pybullet_drones/assets/helix.png" alt="control info" width="425">
## Installation
Tested on Intel x64/Ubuntu 22.04 and Apple Silicon/macOS 26.2.
```sh
git clone https://github.com/learnsyslab/gym-pybullet-drones.git
cd gym-pybullet-drones/
conda create -n drones python=3.10
conda activate drones
pip3 install -e . # if needed, `sudo apt install build-essential` to install `gcc` and build `pybullet`
# check installed packages with `conda list`, deactivate with `conda deactivate`, remove with `conda remove -n drones --all`
```
## Use
### PID control examples
```sh
cd gym_pybullet_drones/examples/
python3 pid.py # position and velocity reference
python3 pid_velocity.py # desired velocity reference
```
### Downwash effect example
```sh
cd gym_pybullet_drones/examples/
python3 downwash.py
```
### Reinforcement learning examples (SB3's PPO)
```sh
cd gym_pybullet_drones/examples/
python learn.py # task: single drone hover at z == 1.0
python learn.py --multiagent true # task: 2-drone hover at z == 1.2 and 0.7
LATEST_MODEL=$(ls -t results | head -n 1) && python play.py --model_path "results/${LATEST_MODEL}/best_model.zip" # play and visualize the most recent learned policy after training
```
<img src="gym_pybullet_drones/assets/rl.gif" alt="rl example" width="375"> <img src="gym_pybullet_drones/assets/marl.gif" alt="marl example" width="375">
### Run all tests
```sh
# from the repo's top folder
cd gym-pybullet-drones/
pytest tests/
```
### Betaflight SITL example (Ubuntu only)
```sh
git clone https://github.com/betaflight/betaflight
cd betaflight/
git checkout cafe727 # `master` branch head at the time of writing (future release 4.5)
make arm_sdk_install # if needed, `apt install curl``
make TARGET=SITL # comment out line: https://github.com/betaflight/betaflight/blob/master/src/main/main.c#L52
cp ~/gym-pybullet-drones/gym_pybullet_drones/assets/eeprom.bin ~/betaflight/ # assuming both gym-pybullet-drones/ and betaflight/ were cloned in ~/
betaflight/obj/main/betaflight_SITL.elf
```
In another terminal, run the example
```sh
conda activate drones
cd gym_pybullet_drones/examples/
python3 beta.py --num_drones 1 # check the steps in the file's docstrings to use multiple drones
```
### `pycffirmware` Python Bindings example (multiplatform, single-drone)
First, install [`pycffirmware`](https://github.com/learnsyslab/pycffirmware?tab=readme-ov-file#installation) for Ubuntu, macOS, or Windows, then
```sh
cd gym_pybullet_drones/examples/
python3 cf.py
```
## Citation
If you wish, please cite our [IROS 2021 paper](https://arxiv.org/abs/2103.02142) ([and original codebase](https://github.com/learnsyslab/gym-pybullet-drones/tree/paper)) as
```bibtex
@INPROCEEDINGS{panerati2021learniExcerpt of 6,986 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:4077d510cfbfe43e, topic:reinforcement-learning, topic:gymnasium, desc:reinforcement learning
matched fp:4077d510cfbfe43e, topic:multi-agent, desc:multi-agent, desc:multi agent
matched fp:4077d510cfbfe43e, topic:robotics, readme:drone