Buckaroo's Flightgear Projects
Guide To YASim: Contents

Inertia Tensors and YASim

By Gary "Buckaroo" Neely


The YASim command-line solver gives you some additional information:

  Inertia tensor : 2863.719, -0.000, -4.189
        [kg*m^2]   -0.000, 1006.259, 0.000
     Origo at CG   -4.189, 0.000, 4071.845

This may be confusing as it looks like three separate 3-element vectors: Inertia tensor, [kg*m^2], and Origo at CG, none of which make any sense. It should be displayed this way:

  Inertia tensor about the CG expressed in kg*m^2: 
    2863.719	 -0.000		 -4.189
    -0.000	 1006.259	 0.000
    -4.189	 0.000		 4071.845

This makes things more clear to those not familiar with inertia tensors.

What is an inertia tensor? Most people interested in flight simulation are familiar with this basic physics equation:

F = m * a

Force equals mass times acceleration. If you want to accelerate a mass in some direction, you need to give it a push. A similar idea applies to rotational acceleration-- spinning an object about its axis. To rotate an object about an axis, we need to know the rate we wish to accelerate it about each of the three axes x, y, and z, and we need to know something about the distribution of the object's mass. Then we can calculate the required force to do it, known in this situation as torque.

An inertia tensor matrix looks like this:

	Ixx	Ixy	Ixz
	Iyx	Iyy	Iyz
	Izx	Izy	Izz

The inertia tensor tells us something about mass distribution. So:

T = I * dv

where T is torque, I is our tensor matrix, and dv is the change in angular velocity. Look familiar? Force equals mass times acceleration.

Let's examine the simple, user-friendly case:

	Ixx	0	0
	0	Iyy	0
	0	0	Izz

These diagonal elements are called the "moments of inertia". Here we consider only the diagonal elements and assume the others are 0. This means the object is mass-symmetrical about each axis, i.e., weights are distributed uniformly along each axis, like a see-saw with one child at each end, each child having the same weight and being the same distance from the fulcrum. If the diagonal elements all had the same value, the object's mass could be modeled as a simple sphere. If we apply a torque about the x axis, the object will acquire an acceleration about the x axis, and only the x axis. Seems reasonable, right? This works the same way with the y and the z axes. In an aircraft, mass distribution along the y axis (wing tip to wing tip) will be more-or-less symmetrical if we assume wing fuel tanks are filled to the same level.

Moments of inertia can be thought of as resistances to angular acceleration. They are always positive values. The greater the value, the further the mass is distributed from the system's center or mathematical origin (aka "origo"), which is the aircraft CG in our case, yielding greater resistance to angular acceleration. Small values represent a collective mass that is distributed closer to the system's center. The values (in units of Kg*m^2) are relative to the overall mass of the aircraft, so a plane with a large mass like an airliner will need respectively larger torques to give the same angular accelleration as a smaller plane.

Think of an ice skater spinning in place as having angular momentum about the z axis, her feet to her head. In aircraft terms, the skater is yawing like crazy. As the skater pulls her arms inward, she decreases the size of her Izz element and spins faster. If she moves her arms outwards, Izz increases and she spins slower. This is known as conservation of angular momentum.

So for an aircraft in our coordinate system, Ixx becomes resitance to changes in roll, Iyy is resistance to changes in pitch, and Izz is resistance to changes in yaw.

The non-diagonal elements are called the "products of inertia". They are always symmetrical about the diagonal. These guys are weird and not easily explained. The basic idea is that a matrix with values for the non-diagonal elements implies the object has an assymmetrical mass, a kind of dynamic imbalance. In an aircraft, this commonly occurs when the mass distribution forward of the CG is very different from the mass distribution aft of the CG. Things start to get messy.

The effects of products of inertia are more difficult to understand. Ixy is the inertia against rotation around the y axis when a rotation about the x axis is applied. In this case a torque about the x axis (a roll maneuver) might introduce an acceleration about not only the x axis, but also the y or the z or both y and z. Viewed another way, if an object is rotating about the x axis and Ixx is the inertia against rotation about the x axis, then a non-zero value for Ixy is the additional contribution to inertia against rotation about the y axis. If we want to minimize these effects, we want the products of inertia to be small, since values of zero eliminate their effect.

YASim initially distributes mass according to the volumes or area of fuselage bodies and surface elements, along with a few other elements like engine weights. You can see how the mass was distributed in the solver's output of the inertia tensor. For example:

  Inertia tensor : 2863.719, 0.000, -4.189
        [kg*m^2]   0.000, 1006.259, 0.000
     Origo at CG   -4.189, 0.000, 4071.845

This represents a case of a light aircraft with a total mass of about a thousand pounds. Here, 2863 is the resistance to rolling, 1006 is the resistance to pitching, and 4071 is the resistance to yawing. The products of inertia are all zero or small.

YASim makes an attempt at mass distribution based on the fuselage and surface elements, but it's a simplistic guess and often needs work beyond basic mass balancing for CG placement. How do you adjust this distribution? This is where you get fancy with YASim "ballast" elements. Recall that ballast does not add weight, it forces YASim to re-distribute existing weight. We use ballast to move the CG to where we want it. But now that we know something about inertia tensors we can do some more interesting stuff.

Most aircraft will fly perfectly fine with the default distribution after CG is moved to a good location. All you need is to place a ballast in the nose, or a negative ballast in the tail. But maybe you want to lower the center of gravity, perhaps in the case of a high-wing aircraft where the default CG is too high, making a plane with a narrow wheel-base tippy on landings. You could modify your CG ballast to include a negative value for the z axis. Or you could create a separate ballast element that specifies only the z axis and its mass redistribution.

When you do this, watch the results on the inertia tensor. Remember that the larger the inertia tensor element, the greater the resistance to rotation, at least for the moments of inertia (the products of inertial are weird). Especially watch for big changes to the products of inertia, the non-diagonals. I've observed that products of inertia can affect what happens when landing a tail-dragger. When rotating the tail down to the ground, the plane may exhibit an undersirably strong yaw effect. Altering the products of inertia can improve this behavior. Experiement and discover what works best.