learnsyslab/gym-pybullet-drones

PyBullet Gymnasium environments for single and multi-agent reinforcement learning of quadcopter control

gym-pybullet-drones – 与 Gym 兼容的四轴无人机模拟器

是什么

  • 一个轻量级的 Python 包,封装了 PyBullet 物理引擎,为单无人机和多无人机控制提供 Gymnasium(OpenAI Gym 的继任者)环境。
  • 面向四轴无人机的强化学习、经典控制和系统辨识研究。
  • 包含可直接运行的 PID 控制、下洗流建模以及使用 Stable-Baselines3 2.0(PPO)进行 RL 训练的示例。
  • 提供可选的 Betaflight SITL 集成,使同一环境可由真实飞行栈在仿真中驱动。

核心组件

  • gym_pybullet_drones 包含定义无人机动力学、观测空间和奖励函数的核心 Aviary 类。
  • 示例脚本(pid.py, pid_velocity.py, mrac.py, downwash.py, learn.py, play.py, beta.py)演示了:
    • 经典控制器(PID、MRAC)
    • 无人机之间的气动下洗效应
    • 单智能体和多智能体强化学习训练/评估
    • 与 Betaflight SITL 的接口
  • 测试套件(pytest tests/)用于验证环境正确性。
  • 与 Gymnasium 和 Stable-Baselines3 2.0 的兼容层,便于集成到现代强化学习流水线中。

安装(基于 conda,支持 Ubuntu 24.04 和 macOS 26)

git clone https://github.com/learnsyslab/gym-pybullet-drones.git
cd gym-pybullet-drones

conda create -n drones python=3.12
conda activate drones

# 从源码构建 pybullet(Python >3.10 必需)
sudo apt install build-essential          # 仅 Ubuntu
# macOS: CFLAGS="-Dfdopen=fdopen" pip install pybullet --no-cache-dir
pip install -e .

README 指出,macOS 上可能需要 CFLAGS 技巧;Ubuntu 上必须安装 C 编译器以构建 pybullet。

运行示例

# 经典控制演示
cd gym_pybullet_drones/examples
python pid.py
python pid_velocity.py
python mrac.py

# 下洗流(气流相互作用)演示
python downwash.py

# 强化学习(单无人机悬停)
python learn.py               # 训练 PPO
python play.py --model_path results/<latest>/best_model.zip

# 多无人机 RL(两架无人机在不同高度悬停)
python learn.py --multiagent true
python play.py --multiagent true --model_path results/<latest>/best_model.zip

对于 Betaflight 软件在环演示(仅限 Ubuntu):

./gym_pybullet_drones/assets/clone_bfs.sh 2   # 构建两个 Betaflight SITL 二进制文件
cd gym_pybullet_drones/examples
python beta.py --num_drones 2

可应用于

  • 在物理精确的四轴无人机模型上对新强化学习算法进行基准测试。
  • 研究多智能体协作、下洗流和编队飞行。
  • 在同一仿真环境中比较经典控制器与学习策略。
  • 在转向硬件前进行快速原型设计(Betaflight SITL 桥接模拟真实飞行栈)。

引用 如果代码对出版物有贡献,请引用原始 IROS 2021 论文:

@INPROCEEDINGS{panerati2021learning,
  title={Learning to Fly---a Gym Environment with PyBullet Physics for Reinforcement Learning of Multi-agent Quadcopter Control},
  author={Jacopo Panerati and Hehui Zheng and SiQi Zhou and James Xu and Amanda Prorok and Angela P. Schoellig},
  booktitle={2021 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  year={2021},
  pages={7512-7519},
  doi={10.1109/IROS51168.2021.9635857}
}

相关项目(README 中提及)

  • safe-control-gym – 用于符号动力学和安全约束控制。
  • crazyflow – 基于 JAX 的可微分仿真。
  • aerial-autonomy-stack – 完整的 PX4/ArduPilot + ROS2 + JetPack 部署。

总结 gym-pybullet-drones 是一个功能完整、研究级的仿真环境,连接了四轴无人机的古典控制、强化学习和真实飞行栈测试。它积极维护(入选 GitHub Maintainer Spotlight 2026),并提供清晰的安装和示例脚本,是探索 AI 驱动航空机器人学的绝佳起点。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目