# Trifilar Pendulum for MOI

"Trifilar pendulum." Just saying the words, you know this is going to be a lot of fun...

Previously I talked about needing a better test apparatus to measure the jet force from our 3D-printed nozzles. In this post I'll explain the theory behind the apparatus and show how I built the thing.

The first goal is to accurately characterize jet force, which turned out to be hard to measure directly using the force-sensitive resistor pads.

The second goal is to develop a method for measuring the components of the HAPP's inertia tensor. Eventually we will need to to measure the finished HAPP and enter the values as parameters into the controls software I developed previously. The software needs the tensor to calculate phase plane trajectories.

Both goals can be accomplished with the same apparatus. It's a pendulum, but it's a special one with 3 strings called a trifilar pendulum. This pendulum does not swing back and forth; rather, it rotates first in one direction and then the other, back and forth periodically - you'll see what I mean in the video below. Car companies and aircraft designers use giant trifilar pendulums to measure the inertia tensor for entire motor cars and airplanes (see this paper from NACA in 1948 - the precursor to NASA). Something similar is done for golf clubs as well.

A trifilar pendulum has the useful property that the period T and the moment of inertia I around the rotation axis are related like this:

where g is the gravitational constant, L is the suspension string length, and r is the platform radius (which equals the support radius). The derivation of this formula is not only fun, but also a good refresher of freshman physics. Check out a straightforward derivation here and a more elaborate setup here.

Now the moment of inertia I is a combination of I from the pendulum platform itself, plus additional Ifrom whatever is placed on the platform, so

and the mass m is likewise a combination of the two.

Once we have all other variables we can solve for I of the HAPP or whatever object we place on the platform. That accomplishes the second objective, and we'll be coming back to this in the future once the HAPP is built up.

What about the first objective? Once we know I, we can use an important formula called Euler's rotation equation:

where all the variables are in bold type to denote multi-dimensional vectors. H is angular momentum, ω is angular velocity, and I is the inertia tensor which contains the three moments and three products of inertia. Dots over variables indicate derivatives with respect to time (d/dt).

What does Euler's formula say?

Well, dH/dt = I(dω/dt) is just the rotational version of Newton's Second Law, F = ma. Instead of linear force we now have a change in angular momentum or a torque, which is supplied by the jets. But we're rotating, and potentially around multiple axes simultaneously. The rotation around one axis can "drag" the body away from simple rotation around another axis. That's what the ω X H term does. It's the main difference with simple linear motion.

To make use of all this for our first objective, start with the pendulum and payload, including the compressed gas tank, regulators, valves, controls, nozzles, and any other necessary bits to fire the jets. Measure I as above. Place the pendulum & payload at rest without any oscillation. Fire the jets for a short interval. The jets supply a torque equal to the jet force times the moment arm, which is the distance from the jet nozzle to the HAPP's center of rotation.

At the end of that interval measure angular velocity ω. Since we now know I, ω, and /dt, and we can directly measure the moment arm, we therefore can solve for the jet force. With a little luck, our jet force measurements should be more accurate and repeatable than the previous attempt with force sensitive resistance pads. Simple!

So let's build it.

Here's the full view of the trifilar pendulum I constructed. It's almost 10 feet from floor to ceiling joists. The pendulum platform (bottom) and support (top) are 1/2" plywood and the support is screwed into the ceiling joists. Suspension is 10-lb braided monofilament (braided to minimize stretch) attached to threaded eyelets. Radius of platform and support are 29cm from center to holes for suspension eyelets.

Circularity of platform and support was achieved through some high-tech rocket science - a paint stirrer used as a protractor, with a nail pivot in one end and a hole for a pencil in the other.

True rocket science

I also strung some digital scales in-line with the suspension to facilitate the initial setup and also to verify that the payload is loaded with its center of mass on the center of the platform. If everything is centered and level, the scales will all show the same reading.

In-line digital scale, 1 of 3

As it's difficult to tie hitch knots onto the eyelets while ensuring the platform is perfectly level, I tied a sliding hitch and then improvised a crimp using an M4 bolt, nut, and washers. This allowed me to slide the hitch knots up and down until the platform was level and then crimp them off to prevent further motion.

Suspension crimp

Nice and level: The pendulum platform

When finished, the whole trifilar pendulum oscillates like so:

Terrific. Now how do we measure angular velocity and acceleration? There are many creative methods on the web such as this, but few of them have the high accuracy we require. Fortunately I happened to have some IMU chipsets for the controls system. These IMUs have on-board gyros and accelerometers. So my idea was to build up an Arduino with an IMU, include it in the payload on the pendulum platform, and have it log the data for analysis. As the primary IMU I used for the controls system was already integrated with another Arduino, I used this (link) one which is even smaller - it's the thumbnail-sized black board with the red light at lower left.

IMU, data logger, web server, and WiFi, plus an audible buzzer and a status LED

This Arduino is also using a shield that's a combination WiFi / micro SD card reader. To make things easy, I programmed the Arduino to identify inflection points in the oscillation (where it changes direction) and automatically calculate the oscillation period. It logs all the data to the micro SD card for any future analysis and then sets up a small web server. The on-board web server can send the summary data including the oscillation period to the browser on my iPhone as I run the tests. No need to run back and forth between my computer and the test rig.

This IMU was quite a bit noisier than the Bosch BNO055 I used for the HAPP flight controller as it lacks the Bosch's data fusion mode and therefore tends to drift. This made automatic identification of the inflection points a little challenging. After trying out a few algorithms I finally developed one that gives results like this:

The red spikes show the auto-ID'd inflection points for one of the data traces. The black trace is for an empty pendulum platform containing only the Arduino. For the grey trace I loaded a few small, 79-gram weights on the platform's outer rim to increase the moment of inertia slightly. As you can see, the test apparatus can readily distinguish the two cases, and the software identifies the two different periods (see legend). I'm logging data samples to the SD card at 500Hz (the Arduino does not have enough memory to buffer all the data to RAM) so the system has resolution down to 2 microseconds. This is 5 to 10 times better than measurement systems I've seen in other projects.

Empty platform (left) and loaded with small weights (right)

As a final comment on the apparatus, I can say that the choice of components resulted in a pendulum with very low damping. Once started it will oscillate for a long time. Here's a trace showing 10 minutes of "ring-down." Motion was still visible even after 30 minutes. This is a very lightly damped system - so light that the effects of damping on the oscillation period will be less that other sources of error. The measured damping ratio is only 7.2x10^-07. I'll spare you the math on how I got that one :-)

This post turned out longer than I expected, so I'll save the jet force results for the next post.