Overview
The pitch/yaw moment of inertia strongly affects a rocket’s short-period dynamics. It can be estimated by summing every component’s contribution — like estimating mass from drawings — but the bifilar pendulum measures the as-built value directly, much as weighing measures mass. The technique dates from the earliest days of aviation.
The rocket is hung level from two vertical wires of equal length, with its centre of gravity between them and a plumb bob at the CG. Crew at the nose and tail twist it about the vertical axis without displacing the plumb bob, release it, and time the yaw oscillation. Timing many cycles averages out the error in judging when the nose crosses the reference line on the floor.
The two modes — and the trap
A rocket hung this way can oscillate in two distinct modes, and the equations of motion couple them:
- Galilean (swing) mode: the whole rocket swings sideways like a simple pendulum; nose and tail are on the same side of the floor line at the same time. Its period says nothing about the moment of inertia.
- Yaw mode: the rocket twists about the vertical through the CG; nose and tail are always on opposite sides of the line. This is the one we want.
If the two periods are close, it is hard to excite one mode without the other, and easy to time the wrong one. The memo’s author notes he fell into this trap the first time he used the technique. Good experiment design keeps the periods well apart (see Experiment design).
Analysis
Galilean pendulum
A mass m on a wire of length l carries tension mg to first order. The restoring torque about the pivot for a small angle \theta is -mg\theta l, so
The swing frequency depends only on wire length, not on mass.
Yaw mode
With the wires at x_1 (forward) and x_2 (aft) of the CG, static equilibrium gives the wire tensions
For a small yaw angle \psi the forward attachment moves sideways by x_1\psi=l\theta_1, and similarly aft, so \theta_1=x_1\psi/l and \theta_2=x_2\psi/l. Each tension’s horizontal component T_i\theta_i acts at arm x_i, giving a restoring yaw torque
With yaw moment of inertia I about the CG the natural frequency is therefore
Moment of inertia
With the measured yaw period P_Y=2\pi/\omega_Y, eliminating g/l with the measured swing period gives the memo’s result, which needs neither the wire length nor g:
Equivalently, using the wire length directly (the calculator’s cross-check),
The two agree exactly when the measured swing period equals 2\pi\sqrt{l/g}; the calculator reports how far apart they are as a check on the rig and the timing.
Experiment design
With the radius of gyration defined by I=mk^2, the period ratio is
For a uniform rod of length L, k^2=L^2/12, so P_Y^2/P_G^2=L^2/(12x_1x_2):
- wires at the ends (x_1=x_2=L/2): P_Y/P_G=\sqrt{1/3}=0.577;
- wires half-way between the centroid and the ends (x_1=x_2=L/4): P_Y/P_G=1.155.
Between these lies P_Y/P_G=1 — resonance. Good design puts the wires close to the CG, which makes the yaw period much longer than the swing period. The calculator’s “Where to put the wires” plot shows both periods against the wire spacing for your rocket.
Because I\propto P_Y^2, a 1 % timing error produces a 2 % inertia error — another reason to time many cycles.
Measurement quality: the verdict and its fixes
The memo gives the physics and the trap but no numbers to judge a measurement by. The calculator therefore asks for your limits and judges three things against them. These bands are project choices, not published limits.
| Check | Fails when | Verdict |
|---|---|---|
| Mode separation | \max(P_Y/P_G,\ P_G/P_Y)<r_{min} (default 1.5) | REDO — the wrong swing may have been timed |
| Uncertainty | u_I>u_{max} (default 5 %) | CHECK |
| Wire-length cross-check | |I_l/I-1|>\epsilon_{max} (default 3 %) | CHECK |
The default r_{min}=1.5 sits clear of the memo’s 1.155 example, which the memo uses to show how easily resonance happens. Otherwise the verdict is GOOD.
Uncertainty
The inertia is a product of powers of the measured quantities, so to first order, with independent errors combined root-sum-square (standard error propagation, added here — not part of the memo):
A stopwatch run over N cycles with error \delta t gives a period error \delta t/N; the periods count twice because they are squared. The stopwatch, tape and scale errors are your own estimates.
Here is the trade-off the “Where to put the wires” plot shows: wires close to the CG separate the two swings and slow the yaw (smaller timing error), but a fixed tape error becomes a larger fraction of a short distance. The total error has a broad minimum; pick a spacing near it and well inside the separation limit.
Solved fixes
- Wire spacing: since P_Y/P_G=k/\sqrt{x_1x_2}, scaling both distances by f=k/(r_{min}\sqrt{x_1x_2}) puts the ratio exactly on your limit. The re-timed yaw period is then r_{min}P_G.
- Cycles: timing N cycles of each swing, N=\left\lceil\sqrt{4\delta t^2(P_Y^{-2}+P_G^{-2})/(u_{max}^2-u_{m}^2-u_{x}^2)}\right\rceil, where u_m and u_x are the mass and distance shares; impossible when they alone exceed the target.
- Distance error: the largest \delta x that meets the target with the cycles already timed.
- Cross-check: the wire length the measured swing implies, l_G=gP_G^2/4\pi^2.
Each fix is checked in tests/bifilar.test.js to land on its target.
Assumptions and limits
- Small angles; equal, inextensible, vertical wires; the rocket hangs level with the CG between the wires.
- The coupled two-mode analysis is not presented in the memo; the formulas treat the modes as separate, which is accurate when their periods are well apart.
- The result is the inertia about a vertical axis through the CG, i.e. the pitch/yaw inertia of an axisymmetric rocket.
- Air damping and the inertia of attachment fittings are neglected.
- The memo’s analysis is first order (small angles). The calculator does not correct the periods for large release amplitudes; release gently.
- The uncertainty is a first-order estimate with independent errors; correlated errors (a CG mark off by the same amount for both wires) are not modelled.
Worked example
The calculator’s illustrative case: m=20 kg, x_1=x_2=0.30 m, l=2.0 m, measured P_Y=5.87 s and P_G=2.84 s.
- I=20(0.3)(0.3)(5.87^2/2.84^2)=7.69 kg·m².
- k=\sqrt{7.69/20}=0.620 m, 25.8 % of a 2.4 m body.
- P_Y/P_G=2.07: the modes are well separated.
- Predicted P_G=2\pi\sqrt{2.0/9.80665}=2.838 s, within 0.1 % of the measured value, so the wire-length cross-check (7.70 kg·m²) agrees.
- With 10 cycles of each swing, a 0.2 s stopwatch error, 2 mm on each distance and 50 g on the scale: u_I=1.8 %, mostly from the swing timing. Verdict: GOOD.
Equations ↔ code
| Quantity | Eq. | Code (js/calc/bifilar.js) |
|---|---|---|
| Swing period | (1) | bifilar().PG_theory |
| Wire tensions | (2) | bifilar().T1, .T2 |
| Inertia from periods | (5) | bifilar().I_periods |
| Inertia from wire length | (6) | bifilar().I_length |
| Period ratio | (7) | periodRatio(), bifilar().ratio |
Verification: tests/bifilar.test.js checks the memo’s two uniform-rod ratios (0.577 and 1.155), recovers the rod inertia exactly with both formulas, checks the statics, checks the uncertainty against a finite-difference sensitivity, and checks that every solved fix lands on its target.
Notes on the method
- Additions to the memo. The wire-length cross-check, tension readout, uniform-rod comparison, the verdict bands (your limits) and the uncertainty estimate are additions built from the memo’s equations; the memo does not give them.
References
- C. P. Hoult, “Moment of Inertia Measurement with a Bifilar Pendulum,” RS&T memo, 11 June 2009. View in library