Skip to content
Back to skills

Control Simulation

ASecurity

"Operate gym-pybullet-drones headless or GUI control-simulation

  • 247 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 8, 2026
toolspythonbashrailsapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill control-simulation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Control Simulation?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Control Simulation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-control-simulation/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-control-simulation)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: control-simulation
description: "Operate gym-pybullet-drones headless or GUI control-simulation
  workflows for PID tracking, velocity control, downwash, and MRAC."
disable-model-invocation: true
metadata:
  disco-role: operating
license: MIT
---

# Control Simulation

Use this sub-skill when a task asks how to run, modify, or debug classic control simulations in `gym-pybullet-drones`: PID trajectory tracking, velocity-command control, downwash physics, MRAC hover/control, logger output, or PyBullet GUI/headless behavior.

## Route here for

- Running the bundled control example runner for `pid`, `pid_velocity`, `downwash`, or `mrac` with short headless smoke defaults.
- Building custom loops with `BaseAviary`, `CtrlAviary`, `VelocityAviary`, `BaseControl`, `DSLPIDControl`, `MRACControl`, or `CTBRControl`.
- Choosing `DroneModel` and `Physics` values for control examples, including downwash-specific physics.
- Inspecting `Logger` outputs, `sync(...)` behavior, PyBullet client/drone IDs, action shapes, and frequency constraints.
- Troubleshooting `pybullet`, display/OpenGL, logger, action-shape, MRAC model, or timing-mismatch failures in control simulations.

## Do not handle here

- Reinforcement-learning training, PPO playback, `learn.py`, `play.py`, `BaseRLAviary`, `HoverAviary`, or `MultiHoverAviary`; route back to the repo skill or the RL sub-skill when available.
- Betaflight SITL, `BetaAviary`, external Betaflight checkout/builds, UDP port setup, or `beta.py`; route back to the repo skill or the SITL sub-skill when available.
- Broad package installation policy beyond the control-specific `pybullet`/GUI/logger symptoms in this sub-skill.

## Start here

1. Read [workflows](references/workflows.md) to choose the bundled runner mode and understand how each source control workflow was wrapped.
2. Use [API reference](references/api-reference.md) for constructor signatures, action/observation shapes, controller signatures, enum values, logger arrays, and installed-package facts.
3. Use [troubleshooting](references/troubleshooting.md) before changing physics, controller code, or dependency versions.
4. Prefer the bundled runner over the original repository example scripts:

```bash
python scripts/run_control_example.py pid --duration-sec 1 --output-folder /tmp/gpd-pid
python scripts/run_control_example.py pid_velocity --duration-sec 1 --output-folder /tmp/gpd-vel
python scripts/run_control_example.py downwash --duration-sec 1 --output-folder /tmp/gpd-dw
python scripts/run_control_example.py mrac --duration-sec 1 --output-folder /tmp/gpd-mrac
```

The runner defaults to `gui=False`, `plot=False`, `record_video=False`, and short durations so it is safe for headless smoke checks. Add `--gui`, `--plot`, `--record-video`, `--csv`, or longer `--duration-sec` only after the environment supports them.

## Runtime guardrails

- `CtrlAviary` and `VelocityAviary` share the `BaseAviary` constructor shape and can run headless with `gui=False`.
- `BaseAviary` requires `pyb_freq % ctrl_freq == 0`; the bundled runner validates this before constructing the environment.
- `CtrlAviary.step(action)` expects motor RPM actions shaped `(num_drones, 4)`; `VelocityAviary.step(action)` expects velocity commands shaped `(num_drones, 4)` with `[vx, vy, vz, speed_fraction]`.
- `DSLPIDControl` is for `DroneModel.CF2X` or `DroneModel.CF2P`; `MRACControl` supports the current `CF2X`, `CF2P`, and `RACE` drone models.
- `Logger.log(...)` accepts one 20-value state snapshot and one 12-value control target per drone; use its saved arrays or optional CSV export to inspect runs.

Files in this skill

  • SKILL.md3.5 KB
  • references/api-reference.md9.4 KB
  • references/troubleshooting.md8 KB
  • references/workflows.md8.3 KB
  • scripts/run_control_example.py24.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.