Extracting bluff-body drag coefficients from a free-decay pendulum, with application to rocket reentry stabilization.
USC AME 341b · Spring 2026 · Bobby Rogers, Saim Hasan, Nico Von Eckartsberg, Sam Doane.
Wind-tunnel measurement of bluff-body drag is the conventional way to size a stabilizer for a recoverable rocket booster. It is also slow, expensive, and infeasible at the design-iteration stage of a small project. This experiment asks whether a sub-$100 free-decay pendulum can replace a wind-tunnel run for the design-decision question of which stabilizer shape to mount.
A pivot-mounted rod (length 0.4826 m, encoder at 500 Hz) carries one of four interchangeable 3D-printed bob shells — sphere, cube, cylinder, anemometer-cup bowl — at its lower end. Each shape is released from 12 nominal amplitudes (5°–60°, 5° steps) with three replicate trials each. 136 of the 144 captured trials pass quality gates. A nested family of four damping models is fit to every trace, and drag coefficients are recovered by inverting the quadratic-drag torque against the M3 lumped damping coefficient through a per-cycle energy balance. The same coefficients are then fed into a reentry-stabilization simulation.
Method B (sphere-anchored, M3 lumped damping → energy balance):
| shape |
|
Hoerner 1965 reference | error |
|---|---|---|---|
| sphere | 0.470 (anchor) | 0.47 | 0.0% |
| cube | 1.082 | 1.05 | +3.0% |
| cylinder | 0.612 | 0.53 ( |
+15.5% |
| bowl | 1.380 | 1.38 (anemometer cup) | 0.0% |
Apparatus validation: the fitted natural frequency
Reentry simulation, using the measured
- Executive summary (PDF) — 2-page paper-style summary.
- Final presentation (PDF) — 42 slides, the 20-minute talk.
- Full report (LaTeX source) — AIAA-style.
- Reentry videos — MP4 animations of all four stabilizer shapes.
├── load_trials.m Ingests trial CSVs; preprocessing; writes trials.mat
├── analyze_pendulum.m Fits M1-M4 to every trial; writes analysis_results.mat
├── make_figures.m Generates fig01-fig07 in figures/
├── make_tables.m Generates 4 styled table PNGs in tables/
├── simulate_reentry.m Reentry simulation + fig06 + 5 MP4 videos
├── simulate_basin.m Basin of attraction (fig08)
├── appendix_calculations.m Step-by-step C_D extraction (txt + LaTeX appendix)
│
├── docs/ Executive summary, presentation, report, LaTeX sources
├── figures/ Publication figures (fig01-fig08, demos)
├── tables/ Styled table PNGs
├── videos/ Reentry MP4 animations
├── data/
│ ├── pendulum_data/ Raw trial CSVs (one per trial)
│ ├── summary_per_trial.csv Per-trial fit parameters
│ ├── summary_per_group.csv Per-(shape, theta_0) aggregated stats
│ └── summary_per_shape.csv Per-shape mean/SEM across all trials
└── arduino/ DAQ firmware for the encoder
Requires MATLAB R2020a or later (Optimization Toolbox for lsqnonlin; ode45 from base). Tested on R2025b.
% From the repo root, in order:
load_trials % reads data/pendulum_data/, writes trials.mat
analyze_pendulum % fits all four models, writes analysis_results.mat
make_figures % writes figures/fig01-fig07
make_tables % writes tables/table01-04
simulate_reentry % writes figures/fig06 + videos/reentry_*.mp4
simulate_basin % writes figures/fig08
appendix_calculations % writes docs/appendix_calculations.textrials.mat and analysis_results.mat are not committed (they regenerate from the raw CSVs and exceed GitHub's per-file size limit).
Four nested damping models, fit by Levenberg-Marquardt on time-domain ODE residuals:
| equation | new physics | |
|---|---|---|
| M1 | small-angle linear viscous | |
| M2 | nonlinear restoring | |
| M3 | M2 + |
Coulomb pivot friction |
| M4 | M3 + |
quadratic aerodynamic drag |
Drag is recovered by inverting the quadratic-drag torque:
Method B uses the energy-equivalent appendix_calculations.m.
Primary docs/references.bib.


