executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
control-simulationOperate gym-pybullet-drones headless or GUI control-simulation workflows for PID tracking, velocity control, downwash, and MRAC.
Independent GitHub snapshot · Automated classification · Original documentation governs
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.
pid, pid_velocity, downwash, or mrac with short headless smoke defaults.BaseAviary, CtrlAviary, VelocityAviary, BaseControl, DSLPIDControl, MRACControl, or CTBRControl.DroneModel and Physics values for control examples, including downwash-specific physics.Logger outputs, sync(...) behavior, PyBullet client/drone IDs, action shapes, and frequency constraints.pybullet, display/OpenGL, logger, action-shape, MRAC model, or timing-mismatch failures in control simulations.learn.py, play.py, BaseRLAviary, HoverAviary, or MultiHoverAviary; route back to the repo skill or the RL sub-skill when available.BetaAviary, external Betaflight checkout/builds, UDP port setup, or beta.py; route back to the repo skill or the SITL sub-skill when available.pybullet/GUI/logger symptoms in this sub-skill.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.
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.