Episode 02 / Written companion
Free recording trackI broke my drone on purpose
A frozen benchmark turns model mismatch into a reproducible failure.
Read the companion now. The recording is forthcoming; “Free” identifies its planned release track.
Once a PID flies the nominal simulator, change the vehicle while leaving the controller’s assumptions alone. Add mass, weaken a motor or insert delay. The resulting position error makes the simulation-to-reality problem concrete: the controller was tuned for one set of dynamics and now receives another.
Different failures tell different stories. Integral action can remove a steady payload offset, but a sudden payload still causes a transient. Battery sag reduces the maximum available force. Delay shifts feedback in time and can turn aggressive correction into oscillation. The same RMS score can hide these very different mechanisms.
Use the Module 2 perturbations and retain all seeds, including crashes. Place requested rates, achieved rates, motor saturation and position error on one timeline. The episode’s experiment is complete when you can explain why a run fails and reproduce it from a config and seed.
Take this into your next build
A failure is useful when its mechanism and reproduction steps are part of the result.
Put the idea to work
Fly it classically, then break it
Close the loop with a cascaded PID and an LQR around hover. Freeze a benchmark, then expose the model mismatch that motivates adaptation.
Build module 02