learnsyslab/gym-pybullet-drones

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

gym-pybullet-drones – 4축 드론을 위한 Gym 호환 시뮬레이터

무엇인가요

  • PyBullet 물리 엔진을 래핑하는 경량 Python 패키지로, Gymnasium (OpenAI Gym의 후속 제품) 환경을 제공하여 단일 및 다중 드론 제어를 지원합니다.
  • 4축 드론의 강화 학습, 고전적 제어, 시스템 식별 연구를 대상으로 합니다.
  • PID 제어, 다운워시 모델링, Stable-Baselines3 2.0 (PPO)를 사용한 RL 학습을 위한 바로 실행 가능한 예제가 포함되어 있습니다.
  • 실세계 비행 스택을 시뮬레이션에서 사용할 수 있도록 Betaflight SITL 통합 기능을 옵션으로 제공합니다.

주요 구성 요소

  • 드론 역학, 관측 공간, 보상 함수를 정의하는 핵심 Aviary 클래스를 포함하는 gym_pybullet_drones 패키지.
  • 예제 스크립트 (pid.py, pid_velocity.py, mrac.py, downwash.py, learn.py, play.py, beta.py)는 다음과 같은 기능을 보여줍니다:
    • 고전적 제어기 (PID, MRAC)
    • 드론 간의 공기역학적 다운워시 효과
    • 단일 에이전트 및 다중 에이전트 RL 학습/평가
    • Betaflight SITL와의 인터페이스
  • 환경의 정확성을 검증하기 위한 테스트 스위트 (pytest tests/)
  • Gymnasium 및 Stable-Baselines3 2.0와의 호환성 레이어로, 현대 RL 파이프라인에 쉽게 통합 가능합니다.

설치 (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에서는 pybullet 빌드를 위해 C 컴파일러가 필요합니다.

예제 실행

# 고전적 제어 데모
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

사용 가능한 목적

  • 물리적으로 정확한 4축 드론 모델에서 새로운 RL 알고리즘의 벤치마킹.
  • 다중 에이전트 협업, 다운워시, 편대 비행 연구.
  • 동일한 시뮬레이션에서 고전적 제어기와 학습된 정책을 비교.
  • 하드웨어로 이행하기 전 빠른 프로토타이핑 (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는 4축 드론의 고전적 제어, 강화 학습, 실세계 비행 스택 테스트를 연결하는 기능적이고 연구 수준의 시뮬레이션 환경입니다. GitHub Maintainer Spotlight 2026에 선정되며 지속적으로 유지보수되고 있으며, 명확한 설치 및 예제 스크립트를 제공하여 AI 기반 항공 로보틱스를 탐색하는 모든 사람에게 훌륭한 출발점입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트