Modeling Ground Reactions in JSBSim

compiled by J. Berndt *

Reference material:

  1. * Informal discussions during year 2000 with Robert H. Daugherty and E. B. Jackson (both NASA-Langley) in many instances included here verbatim or paraphrased
  2. W. A. Ragsdale, “A Generic Landing Gear Dynamics Model for LaSRS++”, AIAA-2000-4303
  3. Robert H. Daugherty, Sandy M. Stubbs, and Martha P. Robinson, “Cornering Characteristics of the Main-Gear Tire of the Space Shuttle Orbiter", NASA TP-2790, 3/1988
  4. Robert H. Daugherty and Sandy M. Stubbs, “Cornering and Wear Behavior of the Space Shuttle Orbiter Main Gear Tire”, SAE 871867, 10/1997
  5. Sandy M. Stubbs and Robert H. Daugherty, "Tests of Highly Loaded Skids on a Concrete Runway", NASA TP-3435, 3/1994
  6. Robert H. Daugherty and Sandy M. Stubbs, “Spin-Up Studies of the Space Shuttle Orbiter Main Gear Tire”, SAE 881360, 10/1998
  7. Carter, Nagy, Barnicki, “A Model for Space Shuttle Orbiter Tire Side Force Based on NASA Landing Systems Research Aircraft Test Results”, NASA TM 4808, 9/1997
  8. Jocelyn Pritchard, “An Overview of Landing Gear Dynamics”, NASA TM-1999-209143 ARL TR-1976, 5/1999

One of the main obstacles to making JSBSim the default FDM in place of LaRCsim is the ground reaction modeling, particularly landing gear (we will include a simplistic crash/contact model at some point in the future). Some thought has gone into this area. It is made more difficult for JSBSim because we must model for the general case - the landing gear properties are specified in a config file. Currently (as of 01/13/2001), the config file specifies the following allowable parameters (JSBSim Config File v1.38):

AC_GEAR                          JSBSim Landing Gear keyword identifier
<name>                           name of gear entry - no spaces allowed
<X> <Y> <Z>                      Gear location in aircraft body coords in inches
<spring constant>                spring constant in lbs/ft
<damping coefficient>            damping coefficient in lbs/ft/sec
<dynamic friction coefficient>   Self-explanatory: sliding friction coefficient
<static friction coefficient>    Self-explanatory: "onset" friction coefficient
<rolling resistance coefficient> Self-explanatory: rolling resistance coefficient
<steerability attribute>         One of <STEERABLE | FIXED | CASTERED>
<group membership>               One of <LEFT | CENTER | RIGHT | NOSE | TAIL | NONE>
<max steer angle>                Maximum steerable angle in degrees

Each strut for an aircraft is defined using the above specification. For instance, here is the specification for the C-172 landing gear

AC_GEAR    NOSE        -6.8   0.0  -24.2  900  300  0.01  0.05 0.02 STEERABLE NONE 20
AC_GEAR    LEFT_MAIN   58.2 -43.0 -17.9  2700  800  0.01  0.05 0.02 CASTERED  LEFT  0
AC_GEAR    RIGHT_MAIN  58.2  43.0 -17.9  2700  800  0.01  0.05 0.02 CASTERED  RIGHT 0

And, for the X-15:

AC_GEAR NOSE        63.0   0.0 -48.0 15000  1000  0.02 0.5 0.02 FIXED NONE 0
AC_GEAR LEFT_SKID  540.6 -56.8 -76.6 15000  1000  0.2  0.9 0.00 FIXED NONE 0
AC_GEAR RIGHT_SKID 540.6  56.8 -76.6 15000  1000  0.2  0.9 0.00 FIXED NONE 0

Testing has been done on the X-15 model, which uses skids. This was a relatively easy task.

Some guidance can be taken from LaRCsim. However, in a conversation with Bruce Jackson at NASA Langley, some apprehension was expressed with the way LaRCsim models landing gear reaction forces [at least with the version of LaRCsim we are using to drive FlightGear]. Bruce suggested that LaRCsim uses a much-simplified model for landing gear - one that is not particularly conducive to engineering studies. He referred me to Robert H. Daugherty, NASA Langley, who provided me with the following encouragement:

"Skids and straight rolling tires are pretty easy. And, it turns out that yawed rolling tires aren't too difficult either. Rather than there being a breakout, slipping, or sliding threshold that acts like a light switch, the tire is always slipping to some degree relative to the ground - even when rolling straight ahead. To prove it to yourself, mark your car tire and the ground simultaneously with a chalk mark and roll slowly forward (straight) about 100 feet and barely brake. Then, roll backwards along the same path. The original marks will not line up.

A yawed rolling tire has a "continuum" of slip that doesn't act like a light switch anywhere. The average tire (at a constant vertical load, at least) acts like a lateral spring with yaw angle in that it can be reasonably well modeled as a linear function of yaw. So, the side force (again, at a constant vertical load) can be modeled as Fs = K times Fn times yaw angle, that is

Fs = K FnY

where:

Fs = side load,
Fn =vertical load,
K =side coefficient per degree of yaw,
Y is yaw,
[Note: the value K in this formulation is just "mu"]

This value isn't anywhere near universal, (it changes with tire, vertical load, surface condition, etc) but the kind of number we're talking about here for K is something like 0.06 /deg. A 4-degree yaw angle would give a side coefficient of about 0.24, providing essentially a 1/4 g. turn. Half as much yaw would give half the side force, etc. This generally will hold up to about 8-10 degrees before the linearity starts to break down (as does a lift coefficient curve near stall). Remember that vertical load affects the value of K as do a number of other variables."

This can be understood without too much trouble, and the code can be pictured in ones mind, as well. Nose/tail-wheel steering is done using rudder command. A side force on the nose/tail wheel can be calculated. Of course, this will yaw the vehicle. It must be considered that when the nose gear is turned and the nose yaws left or right, the main gear will acquire a yaw with respect to the direction of travel, and will itself impart a force to the airframe in the direction of yaw towards the center of the radius of motion while in the turn. This will turn and translate the vehicle until the new yaw vector is aligned with the actual direction of travel of the vehicle cg.

This sounds very simple, and for the most part it is, if this is all that needs to be modeled. However, it is possible to lock up the wheels and skid, or turn the wheel such that skidding takes place. Braking also figures into the equation. Just so that we are all on the same page, here are some definitions:

Example:

Suppose, for example, that we talk about a turned nose gear. We have three vectors of note:

1) Aircraft heading ...
2) Wheel heading ...
3) Wheel velocity vector …

Say that the aircraft is currently heading directly north, the wheel is turned right 15 degrees, but the actual wheel velocity vector is slightly less than that, say, 13 degrees (of course, the aircraft is in the process of turning, having already begun the turn at an earlier time). For completeness' sake, let's say that we have nearly instantaneously turned the wheel to its current position, and this is one reason why the wheel velocity vector has not caught up more closely to the wheel heading. The big question now is, now what? We ultimately want the forces (and thus the moments which can be determined) as they act on the body axis.

Here, there is an analogy with the aerodynamic forces, axes, etc.:

The wheel axis is analogous to the aircraft body axis.
The velocity vector of the wheel is analogous to stability axes.
The angle *from* the velocity vector of the wheel, *to* the wheel "X" axis is analogous to alpha. In our example, this is two degrees.

We can get the side force (Fs) using this relationship:

Fs = K * Fn * Yaw

Where Fn is normal force, Yaw is the "alpha" we described just above (the angle from wheel velocity vector to wheel heading), and K is side coefficient per degree of "alpha" (two degrees in our example). A typical value of K would be 0.06/degree. So, in our example, K would be 0.12, and say the normal force at the instant we are considering is 10000 pounds, so the side force would be 1200 pounds. Now, we just need to transform the side force back to the airframe (body axis) via the steering angle, in our example this is 15 degrees. Transforming, we get:

1159 lbs force at the tire in the +Y direction
311  lbs force at the tire in the -X direction

The forces as calculated above went from wheel frame to aircraft frame, BUT, we did need to know the three vectors given earlier. If we were to steer at a much higher "tire-alpha" we would find that the linearity of the Fs equation given above deteriorates past 8 to 10 degrees. This is very analogous to the lift curve tailoff near stall.

We let the aircraft do what it is going to do - that is, drift and yaw - and simply calculate at each time step the instantaneous yaw angle of each tire. We add in tire forces, of course, but only for non-zero yaw on the tires. The tires will not produce any side force unless and until they are rolled at a yaw angle. There is no "resistance" to lateral motion. With sufficiently small time steps we get a little yaw during the first step and a little force. Then, we have more yaw if we haven't arrested the turn by the next step, etc. until we get a stable condition or we decide to apply some other steering input, etc.

If the braking is at, say, 50%, then the wheel will not want to rotate as easily. We would say that 50% braking could be modeled as 50% of the static friction coefficient. We are not sure we could go so far in detail as to model the force provided by the wheel brake pads against the wheel disk, because we would not know for certain how this would translate to the force between the tire and pavement. So, applying 50% brakes would be modeled as 0.50 * static_friction_coeff * Fn, and the direction would be parallel to the wheel heading angle (wheel frame). We could transform this directly to the aircraft body frame, too. Now, if the tire ever starts skidding because we are applying too much braking - or we hit a patch of ice or water - if we skid, we lose all turning ability, as well. Side force goes to zero, pronto, until we gain some traction.  Robert Daugherty explains: "A pretty good schedule of real braking looks like a lift coefficient curve. A 15% slip (100% slip is a locked wheel, 0% slip is free rolling) provides about peak drag mu (peak mu = about 0.93 - 0.0011x tire press in psi). So 15% slip on a 315 psi tire for example = about 0.58 mu. Antiskid brakes attempt to keep the slip right below this peak. Go over the top of the curve and you "stall" and enter an unstable region where lockup is imminent and lockup values can be maybe 1/2-3/4 of the peak values".

Wheel Spinup

Wheel spinup should be modeled in order to determine if the wheel is slipping with respect to the runway - which determines if the rolling resistance or the sliding friction coefficient should be used.

When a wheel first contacts the runway (or dirt, etc.) it sees a torque of the normal force times the friction coefficient times the deflected radius of the wheel. The wheel begins to spin up rapidly but it also "winds up". Picture it this way: the center of the wheel has inertia and tends to want to stay where it is. The outer edge of the tire is forced by the runway contact to accelerate rapidly - but the axle does not tend to accelerate as rapidly and will actually be spinning (at first) at a slightly (very slightly) smaller angular rate, thus "winding up" the tire like a torsional spring. When the velocity of the portion of the tire in contact with the runway reaches about 80% of the actual aircraft axle velocity, the tire "catches" and the wound up tire "unwinds" and brings the axle angular velocity the remainder of the way to equilibrium rotational speed with the runway.

Rolling resistance

When a tire is rolling without braking the center of pressure of the tire is actually forward of the axle. The resulting moment arm causes resistance to the wheel's motion. Axle friction is small compared to this rolling resistance. When braking, the tire CP moves aft of the axle and generates a force which braking efforts must overcome. In both cases (but in opposite senses) the torsional spring characteristics mentioned above in "Wheel Spinup" also apply.


Limitations and Exclusions

As we are not writing an engineering simulator, and we are also trying to get an initial capability, there are of necessity some limitations placed on our model, at least for now. They are:

Description of Algorithm and Approach

JSBSim models ground reactions of two types: Normal landing apparatus (gear, skids, etc) and off-nominal contact (e.g. crash or wing scrape) [Note: this is a future enhancement]. Each contact point is modeled separately by an instance of a ground reactions object. Each object has a location, an equivalent spring constant, and an equivalent damping coefficient. The algorithm is described in the paragraph below.

The general idea behind the logic is to first determine how far the gear struts (or contact point) have deflected. Finding the difference between the landing gear position and the ground position does this. The spring and damper coefficients are applied to this difference (the deflection) and the force due to compression (or contact) is calculated. However, there is also a friction force due to the contact. This friction force acts in a direction opposite to the line of travel (the velocity vector). This friction force vector is added to the compression force vector to get a total force vector at the point of contact. This is then used as an operand in a cross-product operation with the radius vector from the cg to the point of contact to give a moment about the cg due to the forces at the contact point.

Here is the series of steps which is performed to get the forces and moments due to contact:

  1. Find the location of the uncompressed landing gear relative to the CG of the aircraft. Remember, the structural coordinate frame that the aircraft is defined in is: X positive towards the tail, Y positive out the right side, Z positive upwards. The locations of the various parts are given in inches in the config file.
  2. The vector giving the location of the gear (relative to the cg) is rotated 180 degrees about the Y axis to put the coordinates in body frame (X positive forwards, Y positive out the right side, Z positive downwards, with the origin at the cg). The lengths are also now given in feet.
  3. The new gear location is now transformed to the local coordinate frame using the body-to-local matrix. (Mb2l).
  4. Knowing the location of the center of gravity relative to the ground (height above ground level or AGL) now enables gear deflection to be calculated. The gear compression value is the local frame gear Z location value minus the height AGL. [Currently, we make the assumption that the gear is oriented - and the deflection occurs in - the Z axis only. Additionally, the vector to the landing gear is currently not modified - which would (correctly) move the point of contact to the actual compressed-gear point of contact. Eventually, articulated gear may be modeled, but initially an effort must be made to model a generic system.] As an example, say the aircraft left main gear location (in local coordinates) is Z = 3 feet (positive) and the height AGL is 2 feet. This tells us that the gear is compressed 1 foot.
  5. If the gear is compressed, a Weight-On-Wheels (WOW) flag is set.
  6. With the compression length calculated, the compression velocity may now be calculated. This will be used to determine the damping force in the strut. The aircraft rotational rate is multiplied by the vector to the wheel to get a wheel velocity in body frame. That velocity vector is then transformed into the local coordinate frame.
  7. The aircraft cg velocity in the local frame is added to the just-calculated wheel velocity (due to rotation) to get a total wheel velocity in the local frame.
  8. The compression speed is the Z-component of the vector.
  9. With the wheel velocity vector no longer needed, it is normalized and multiplied by a -1 to reverse it. This will be used in the friction force calculation.
  10. Since the friction force takes place solely in the runway plane, the Z coordinate of the normalized wheel velocity vector is set to zero.
  11. The gear deflection force (the force on the aircraft acting along the local frame Z axis) is now calculated given the spring and damper coefficients, and the gear deflection speed and stroke length. Keep in mind that gear forces always act in the negative direction (in both local and body frames), and are not capable of generating a force in the positive sense (one that would attract the aircraft to the ground). So, the gear forces are always negative - they are limited to values of zero or less. The gear force is simply the negative of the sum of the spring compression length times the spring coefficient and the gear velocity times the damping coefficient.
  12. The lateral/directional force acting on the aircraft through the landing gear (along the local frame X and Y axes) is calculated next. First, the friction coefficient is multiplied by the recently calculated Z-force. This is the friction force. It must be given direction in addition to magnitude. We want the components in the local frame X and Y axes. From step 9, above, the conditioned wheel velocity vector is taken and the X and Y parts are multiplied by the friction force to get the X and Y components of friction.
  13. The wheel force in local frame is next converted to body frame.
  14. The moment due to the gear force is calculated by multiplying r x F (radius to wheel crossed into the wheel force). Both of these operands are in body frame.

 

More notes:

  1. We also would like to have a spring / damper (probably fairly stiff) arrangement set up for each tire in the lateral and longitudinal runway-plane directions. This would model the spring/damper characteristics of the tire/strut assembly - which is by no means absolutely rigid (our assumption). One might also muse whether this kind of force would only result in modifications to the moments - and exert no actual resultant force on the aircraft - or whether the forces exerted would result in a total force of zero when summed over all gear.
  2. As mentioned, we'd like to see tire spin-up modeled, which would require knowledge of wheel moment of inertia - as mentioned above.
  3. Rolling resistance should be modeled, as mentioned above.
  4. Some thought should be put into how to model off-nominal cases, such as when an aircraft gets into a ground loop. The tire dynamics should not necessarily be exhaustive in attempting to achieve realism, but should instead focus on reasonable fidelity where possible, and generally believable modeling where necessary - if only to prevent math errors/overflows in those off-nominal conditions.

[Back to the main JSBSim page] [Email me with comments] [Post to the Flightgear FDM list]

Page last updated 01/13/2001