Measuring the Moment of Inertia of UAV

Apr 22, 2025 — 5 min read

In the previous post, I summarized the equations of motion for rigid body dynamics. In this post, we'll do something useful with it. We're going to measure the moment of inertia for a fixed-wing unmanned aerial vehicle (UAV). We can later use this to create a model of its flight dynamics.

Moment of Inertia Matrix

One of the variables in the equations of motion was the inertia matrix. This value is not easily measured, but we can get a decent approximation. In case of an airplane or quadcopter, the vehicle is usually symmetric in the XZ plane. That simplifies the Inertia matrix to:

We use standard aerospace convention where is forward, is to the right and is down. In this post, we'll focus on , and . Unfortunately is a bit more difficult to find, but depending on what you want to do, it's also not super important to get it right.

The Bifilar Pendulum Method

A common way to find the moment of inertia around a certain axis, is to suspend the object by two strings. This allows the object to oscillate around that axis. By measuring the oscillation period (time), the moment of inertia can be calculated. There is even an equation for it:

Where:

  • : Moment of inertia about the axis of rotation (kg·m²)
  • : Mass of the object (kg)
  • : Gravitational acceleration (≈ 9.81 m/s²)
  • : Half the distance between the suspension strings (m)
  • : Period of oscillation (s)
  • : Length of the suspension strings (m)

Source: ChatGPT

The ZOHD Altus with battery weighs 980 grams. The motors are located at 17.5 cm from the center. The string length was 155 cm. I released the airplane at an angle and measured 9 full oscillations over a period of 16.5 seconds, or 1.83 seconds per oscillation.

My Simulation Method

Using the equations of motion from the previous post, I created a bifilar pendulum simulator. You can try it yourself!. It is a bit hacky, as the strings are modeled as stiff weightless rods, but it works well for this purpose. By setting the string lengths, vehicle mass, attachment points and inertia, we can observe the oscillation period as a result. When we plug in the calculated value of 0.0161 for , the resulting oscillation period is 1.83 seconds as expected.

The cool thing about this approach is that we have much more freedom in how we suspend the vehicle. We don't have to worry about keeping the center of gravity in the middle. Also, the strings don't have to be aligned vertical. They don't even need to be the same length, just make sure that the vehicle rotates around the correct axis.

Measuring and would have been a pain in the ass if I had to keep the CG in the middle. Now I just picked two convenient attachment points.

I measured an oscillation period of 2.3 seconds for the z-axis. By iterating values of in the simulation, I found the matching to be 0.035. And the last simulation to find resulted in a value of 0.023, to get an oscillation period of 1.83 seconds.

Inertia Matrix for ZOHD Altus

The inertia matrix with these simulated results for the ZOHD Altus becomes:

I left the values at zero. In reality, the value is probably slightly negative. This particular UAV is relatively symmetrical around the XZ plane. The wings and battery are pretty much inside the XY plane so they don't contribute much. Only the V-tail is an exception, which sticks out a bit in the negative Z direction. But I expect the cross-coupling effect from aerodynamics to be much stronger than of , which justifies ignoring it for me.

We can now use this matrix to create a flight dynamics model.

Continue Reading

Older