Skip to content

About

MATLAB analysis of free-decay pendulum experiments for bluff-body drag, with Arduino acquisition and reentry simulation.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Pendulum Drag Extraction

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.


Apparatus and CAD render Four 3D-printed bob shells

Summary

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.

Headline results

Method B (sphere-anchored, M3 lumped damping → energy balance):

shape $C_D$ extracted Hoerner 1965 reference error
sphere 0.470 (anchor) 0.47 0.0%
cube 1.082 1.05 +3.0%
cylinder 0.612 0.53 ($L/D=1$ finite cross-flow) +15.5%
bowl 1.380 1.38 (anemometer cup) 0.0%

Apparatus validation: the fitted natural frequency $\omega_n$ matches the inertia-model prediction to better than 1% on every shape. Peak Reynolds number across the trial set is 5,300–16,200 — fully subcritical, the regime where the literature values apply. Coulomb pivot friction is shape-independent within ~10%.

Reentry simulation, using the measured $C_D$ values at $\alpha_0 = 30°$, altitude 25 km, $V = 350$ m/s: the bowl stabilizer settles a perturbed reentry vehicle approximately 3× faster than a smooth sphere of identical mass under identical dynamic pressure, with a correspondingly larger basin of attraction.

Extracted drag coefficients vs literature

Deliverables

Repository layout

├── 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

Reproducing the analysis

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.tex

trials.mat and analysis_results.mat are not committed (they regenerate from the raw CSVs and exceed GitHub's per-file size limit).

Method at a glance

Four nested damping models, fit by Levenberg-Marquardt on time-domain ODE residuals:

equation new physics
M1 $\ddot\theta + 2\beta\dot\theta + \omega_n^2\theta = 0$ small-angle linear viscous
M2 $\ddot\theta + 2\beta\dot\theta + \omega_n^2\sin\theta = 0$ nonlinear restoring
M3 M2 + $\gamma\tanh(K\dot\theta)$ Coulomb pivot friction
M4 M3 + $\alpha\dot\theta\lvert\dot\theta\rvert$ quadratic aerodynamic drag

Drag is recovered by inverting the quadratic-drag torque: $$C_D = \frac{2,I_\text{pivot},\alpha}{\rho,A_\text{ref},L^3}.$$

Method B uses the energy-equivalent $\alpha_\text{eq} = \tfrac{3\pi}{4}\beta_p^{(M3)}/(\omega A)$ instead of $\alpha$ from M4 directly, because the M4 ODE fit trades $\alpha$ off against the Coulomb $\gamma$ at high amplitude. Sphere-anchoring (subtracting the offset that would force the sphere row to $C_D = 0.47$) cancels rod-and-mounting-hardware drag bias. Full derivation in appendix_calculations.m.

References

Primary $C_D$ reference: Hoerner, S. F. (1965). Fluid-Dynamic Drag. Hoerner Fluid Dynamics. Additional citations (Fulcher–Davis 1976, Nelson & Olsson 1986, Karnopp 1985, etc.) in docs/references.bib.

About

MATLAB analysis of free-decay pendulum experiments for bluff-body drag, with Arduino acquisition and reentry simulation.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages