A standalone quadcopter reinforcement learning environment with PufferLib PPO training, independent of Isaac Lab. The repo name comes from the paper that provided the inspiration for this project and the dynamics model: https://raptor.rl.tools/
This project provides:
- A custom quadcopter physics simulation environment (
drone_env.py) - PPO training script using PufferLib (
train_ppo.py) - Vectorized environments for efficient parallel training
# Install dependencies using uv
uv syncThe QuadcopterEnv is a vectorized Gymnasium environment that simulates quadcopter dynamics:
-
Observation space: 12-dimensional vector
- Linear velocity (body frame): 3D
- Angular velocity (body frame): 3D
- Projected gravity (body frame): 3D
- Relative goal position (body frame): 3D
-
Action space: 4-dimensional continuous actions (rotor commands in [-1, 1])
-
Physics: Custom rigid body dynamics with:
- Quadratic thrust curves
- Motor delays
- Gyroscopic effects
- Configurable dynamics randomization
uv run test_env.pyBasic training:
uv run train_ppo.pyWith custom parameters:
uv run train_ppo.py \
--num-envs 1024 \
--total-timesteps 50000000 \
--learning-rate 3e-4 \
--batch-size 8192 \
--dynamics-randomization-delta 0.2Key training parameters:
--num-envs: Number of parallel environments (default: 512)--total-timesteps: Total training steps (default: 10M)--learning-rate: Learning rate (default: 3e-4)--batch-size: Batch size for training (default: 4096)--dynamics-randomization-delta: Randomization range for physics parameters (default: 0.1)--wandb: Enable Weights & Biases logging
Quadcopter parameters are defined in my_quad_parameters.json:
- Mass and inertia
- Rotor positions and thrust characteristics
- Motor delay constants
- Torque coefficients
- Parallelization: Use more environments (
--num-envs) for faster learning - Dynamics Randomization: Increase
--dynamics-randomization-deltafor more robust policies - Batch Size: Match or exceed
num_envs * episode_lengthfor efficient sampling - Checkpointing: Set
--checkpoint-intervalto save periodic checkpoints
The environment has been modified to:
- Remove all Isaac Lab/Isaac Sim dependencies
- Implement custom rigid body physics simulation
- Use pure PyTorch for GPU-accelerated parallel simulation
- Provide a standard Gymnasium interface
- Support PufferLib's vectorized training
drone_env.py- Standalone quadcopter environmenttrain_ppo.py- PufferLib PPO training scripttest_env.py- Environment testing scriptmy_quad_parameters.json- Quadcopter configurationpyproject.toml- Python dependencies
The vectorized environment can simulate hundreds or thousands of quadcopters in parallel on GPU, enabling very fast training (millions of steps per second on modern GPUs).