Modeling Ground Reactions in JSBSim
compiled by J. Berndt *
Reference material:
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:
More notes:
[Back to the main JSBSim page] [Email me with comments] [Post to the Flightgear FDM list]
Page last updated 01/13/2001