From: David Megginson <david@megginson.com>
I have created a set of patches to provide configurable landing gear for the UIUC models. The patches (including four new files) are available at http://megginson.com/private/fgfs/uiuc-20010309.tar.gz A modified UIUC configuration file for the Twin Otter (DHC-6) is available at http://megginson.com/private/fgfs/aircraft.dat It should be possible to configure appropriate gear for all of the UIUC models now. As a bonus, the models also support braking, both absolute and differential, as well as nose-wheel steering (all of which are currently missing from the UIUC models) -- when you land, you don't have to keep rolling off the end of the runway anymore, and you don't have to bank to steer in a taxi. My sample configuration file contains absolutely bizarre, wild guesses, and many places that I didn't even bother to guess properly. The only actual data I had was the wing-span of the DHC-6 (65ft), which I used for positioning the wing tips. The wing-tips for this model actually work now -- I hit the aileron hard while accelerating for take-off, and the wingtip noticeably strikes the ground and bounces up (quite dramatic in external view using the DHC-6 model from Wolfram's site). Details ------- The UIUC models now support up to 16 gear points each where a gear point is anything in the aircraft that can come in contact with the ground, including the tail and wing-tips. I have added the following new fields to the UIUC configuration files, where <index> is an integer between 0 and 15, and <value> is a real number: gear <index> Dx_gear <value> # x offset from CG [ft] gear <index> Dy_gear <value> # y offset from CG [ft] gear <index> Dz_gear <value> # z offset from CG [ft] gear <index> cgear <value> # spring damping [lbs/ft/sec] gear <index> kgear <value> # springiness [lbs/ft] gear <index> muGear <value> # rolling coefficient gear <index> strutLength <value> # gear travel [ft] (not yet used) Most of these names were already pencilled into the UIUC documentation (as TODO items), but I had to make up Dx_gear, Dy_gear, and Dz_gear -- if those are inappropriate, I'd appreciate suggestions for better names. It will be necessary to modify the other UIUC configuration files to include some kind of gear support as well, or the planes will sink nose-first into the ground down to their CG's (it's actually quite funny to watch with an external view). Background ---------- As I frequently remind everyone here, I have no math background worth spitting at, so I will not even pretend to have done the hard stuff. The UIUC code uses a copy of a very old version of the LaRCsim c172_gear.c -- I wanted to update it with Tony Peden's excellent newer version, which includes differential braking among other goodies (the UIUC models don't support brakes, period). I copied the newer code into uiuc_aero.c, and it compiled and ran, but all of the planes ended up sitting on their tails with their noses in the air. Since Tony made his gear code nicely parameterized, I experimented with different values, and found that it wasn't too hard to balance the Twin Otter by moving the gear back a bit. At first, I used properties to set different values, but then I decided to integrate the whole thing properly into the UIUC configuration framework. Thanks to Tony Peden, who did the real modelling work -- I can take credit only for two or three hours of integration. It turns out that Tony's code is generalized enough to deal with a wide range of different gear structures -- I suspect that it will even work for the 747, when I get around to trying some values.
This commit is contained in:
parent
84816c13af
commit
0ab39eea99
8 changed files with 114 additions and 258 deletions
|
@ -28,6 +28,7 @@
|
||||||
|
|
||||||
DATE PURPOSE BY
|
DATE PURPOSE BY
|
||||||
3/17/00 Initial test release
|
3/17/00 Initial test release
|
||||||
|
3/09/01 Added callout to UIUC gear function. (DPM)
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
|
@ -76,252 +77,8 @@ void uiuc_engine( SCALAR dt, int Initialize )
|
||||||
uiuc_engine_routine();
|
uiuc_engine_routine();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ***********************************************************************
|
|
||||||
* Gear model. Exact copy of C172_gear.c. Additional gear models will be
|
void uiuc_gear ()
|
||||||
* added later and the choice of the gear model could be specified at
|
|
||||||
* runtime.
|
|
||||||
* ***********************************************************************/
|
|
||||||
static void sub3( DATA v1[], DATA v2[], DATA result[] )
|
|
||||||
{
|
{
|
||||||
result[0] = v1[0] - v2[0];
|
uiuc_gear_routine();
|
||||||
result[1] = v1[1] - v2[1];
|
|
||||||
result[2] = v1[2] - v2[2];
|
|
||||||
}
|
|
||||||
|
|
||||||
static void add3( DATA v1[], DATA v2[], DATA result[] )
|
|
||||||
{
|
|
||||||
result[0] = v1[0] + v2[0];
|
|
||||||
result[1] = v1[1] + v2[1];
|
|
||||||
result[2] = v1[2] + v2[2];
|
|
||||||
}
|
|
||||||
|
|
||||||
static void cross3( DATA v1[], DATA v2[], DATA result[] )
|
|
||||||
{
|
|
||||||
result[0] = v1[1]*v2[2] - v1[2]*v2[1];
|
|
||||||
result[1] = v1[2]*v2[0] - v1[0]*v2[2];
|
|
||||||
result[2] = v1[0]*v2[1] - v1[1]*v2[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
static void multtrans3x3by3( DATA m[][3], DATA v[], DATA result[] )
|
|
||||||
{
|
|
||||||
result[0] = m[0][0]*v[0] + m[1][0]*v[1] + m[2][0]*v[2];
|
|
||||||
result[1] = m[0][1]*v[0] + m[1][1]*v[1] + m[2][1]*v[2];
|
|
||||||
result[2] = m[0][2]*v[0] + m[1][2]*v[1] + m[2][2]*v[2];
|
|
||||||
}
|
|
||||||
|
|
||||||
static void mult3x3by3( DATA m[][3], DATA v[], DATA result[] )
|
|
||||||
{
|
|
||||||
result[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2];
|
|
||||||
result[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2];
|
|
||||||
result[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2];
|
|
||||||
}
|
|
||||||
|
|
||||||
static void clear3( DATA v[] )
|
|
||||||
{
|
|
||||||
v[0] = 0.; v[1] = 0.; v[2] = 0.;
|
|
||||||
}
|
|
||||||
|
|
||||||
void uiuc_gear()
|
|
||||||
{
|
|
||||||
char rcsid[] = "$Id$";
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Aircraft specific initializations and data goes here
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define NUM_WHEELS 3
|
|
||||||
|
|
||||||
static int num_wheels = NUM_WHEELS; /* number of wheels */
|
|
||||||
static DATA d_wheel_rp_body_v[NUM_WHEELS][3] = /* X, Y, Z locations */
|
|
||||||
{
|
|
||||||
{ 10., 0., 4. }, /* in feet */
|
|
||||||
{ -1., 3., 4. },
|
|
||||||
{ -1., -3., 4. }
|
|
||||||
};
|
|
||||||
static DATA spring_constant[NUM_WHEELS] = /* springiness, lbs/ft */
|
|
||||||
{ 1500., 5000., 5000. };
|
|
||||||
static DATA spring_damping[NUM_WHEELS] = /* damping, lbs/ft/sec */
|
|
||||||
{ 100., 150., 150. };
|
|
||||||
static DATA percent_brake[NUM_WHEELS] = /* percent applied braking */
|
|
||||||
{ 0., 0., 0. }; /* 0 = none, 1 = full */
|
|
||||||
static DATA caster_angle_rad[NUM_WHEELS] = /* steerable tires - in */
|
|
||||||
{ 0., 0., 0.}; /* radians, +CW */
|
|
||||||
/*
|
|
||||||
* End of aircraft specific code
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Constants & coefficients for tyres on tarmac - ref [1]
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* skid function looks like:
|
|
||||||
*
|
|
||||||
* mu ^
|
|
||||||
* |
|
|
||||||
* max_mu | +
|
|
||||||
* | /|
|
|
||||||
* sliding_mu | / +------
|
|
||||||
* | /
|
|
||||||
* | /
|
|
||||||
* +--+------------------------>
|
|
||||||
* | | | sideward V
|
|
||||||
* 0 bkout skid
|
|
||||||
* V V
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
static DATA sliding_mu = 0.5;
|
|
||||||
static DATA rolling_mu = 0.01;
|
|
||||||
static DATA max_brake_mu = 0.6;
|
|
||||||
static DATA max_mu = 0.8;
|
|
||||||
static DATA bkout_v = 0.1;
|
|
||||||
static DATA skid_v = 1.0;
|
|
||||||
/*
|
|
||||||
* Local data variables
|
|
||||||
*/
|
|
||||||
|
|
||||||
DATA d_wheel_cg_body_v[3]; /* wheel offset from cg, X-Y-Z */
|
|
||||||
DATA d_wheel_cg_local_v[3]; /* wheel offset from cg, N-E-D */
|
|
||||||
DATA d_wheel_rwy_local_v[3]; /* wheel offset from rwy, N-E-U */
|
|
||||||
DATA v_wheel_body_v[3]; /* wheel velocity, X-Y-Z */
|
|
||||||
DATA v_wheel_local_v[3]; /* wheel velocity, N-E-D */
|
|
||||||
DATA f_wheel_local_v[3]; /* wheel reaction force, N-E-D */
|
|
||||||
DATA temp3a[3], temp3b[3], tempF[3], tempM[3];
|
|
||||||
DATA reaction_normal_force; /* wheel normal (to rwy) force */
|
|
||||||
DATA cos_wheel_hdg_angle, sin_wheel_hdg_angle; /* temp storage */
|
|
||||||
DATA v_wheel_forward, v_wheel_sideward, abs_v_wheel_sideward;
|
|
||||||
DATA forward_mu, sideward_mu; /* friction coefficients */
|
|
||||||
DATA beta_mu; /* breakout friction slope */
|
|
||||||
DATA forward_wheel_force, sideward_wheel_force;
|
|
||||||
|
|
||||||
int i; /* per wheel loop counter */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Execution starts here
|
|
||||||
*/
|
|
||||||
|
|
||||||
beta_mu = max_mu/(skid_v-bkout_v);
|
|
||||||
clear3( F_gear_v ); /* Initialize sum of forces... */
|
|
||||||
clear3( M_gear_v ); /* ...and moments */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Put aircraft specific executable code here
|
|
||||||
*/
|
|
||||||
|
|
||||||
percent_brake[1] = 0.; /* replace with cockpit brake handle connection code */
|
|
||||||
percent_brake[2] = percent_brake[1];
|
|
||||||
|
|
||||||
caster_angle_rad[0] = 0.03*Rudder_pedal;
|
|
||||||
|
|
||||||
for (i=0;i<num_wheels;i++) /* Loop for each wheel */
|
|
||||||
{
|
|
||||||
/*========================================*/
|
|
||||||
/* Calculate wheel position w.r.t. runway */
|
|
||||||
/*========================================*/
|
|
||||||
|
|
||||||
/* First calculate wheel location w.r.t. cg in body (X-Y-Z) axes... */
|
|
||||||
|
|
||||||
sub3( d_wheel_rp_body_v[i], D_cg_rp_body_v, d_wheel_cg_body_v );
|
|
||||||
|
|
||||||
/* then converting to local (North-East-Down) axes... */
|
|
||||||
|
|
||||||
multtrans3x3by3( T_local_to_body_m, d_wheel_cg_body_v, d_wheel_cg_local_v );
|
|
||||||
|
|
||||||
/* Runway axes correction - third element is Altitude, not (-)Z... */
|
|
||||||
|
|
||||||
d_wheel_cg_local_v[2] = -d_wheel_cg_local_v[2]; /* since altitude = -Z */
|
|
||||||
|
|
||||||
/* Add wheel offset to cg location in local axes */
|
|
||||||
|
|
||||||
add3( d_wheel_cg_local_v, D_cg_rwy_local_v, d_wheel_rwy_local_v );
|
|
||||||
|
|
||||||
/* remove Runway axes correction so right hand rule applies */
|
|
||||||
|
|
||||||
d_wheel_cg_local_v[2] = -d_wheel_cg_local_v[2]; /* now Z positive down */
|
|
||||||
|
|
||||||
/*============================*/
|
|
||||||
/* Calculate wheel velocities */
|
|
||||||
/*============================*/
|
|
||||||
|
|
||||||
/* contribution due to angular rates */
|
|
||||||
|
|
||||||
cross3( Omega_body_v, d_wheel_cg_body_v, temp3a );
|
|
||||||
|
|
||||||
/* transform into local axes */
|
|
||||||
|
|
||||||
multtrans3x3by3( T_local_to_body_m, temp3a, temp3b );
|
|
||||||
|
|
||||||
/* plus contribution due to cg velocities */
|
|
||||||
|
|
||||||
add3( temp3b, V_local_rel_ground_v, v_wheel_local_v );
|
|
||||||
|
|
||||||
|
|
||||||
/*===========================================*/
|
|
||||||
/* Calculate forces & moments for this wheel */
|
|
||||||
/*===========================================*/
|
|
||||||
|
|
||||||
/* Add any anticipation, or frame lead/prediction, here... */
|
|
||||||
|
|
||||||
/* no lead used at present */
|
|
||||||
|
|
||||||
/* Calculate sideward and forward velocities of the wheel
|
|
||||||
in the runway plane */
|
|
||||||
|
|
||||||
cos_wheel_hdg_angle = cos(caster_angle_rad[i] + Psi);
|
|
||||||
sin_wheel_hdg_angle = sin(caster_angle_rad[i] + Psi);
|
|
||||||
|
|
||||||
v_wheel_forward = v_wheel_local_v[0]*cos_wheel_hdg_angle
|
|
||||||
+ v_wheel_local_v[1]*sin_wheel_hdg_angle;
|
|
||||||
v_wheel_sideward = v_wheel_local_v[1]*cos_wheel_hdg_angle
|
|
||||||
- v_wheel_local_v[0]*sin_wheel_hdg_angle;
|
|
||||||
|
|
||||||
/* Calculate normal load force (simple spring constant) */
|
|
||||||
|
|
||||||
reaction_normal_force = 0.;
|
|
||||||
if( d_wheel_rwy_local_v[2] < 0. )
|
|
||||||
{
|
|
||||||
reaction_normal_force = spring_constant[i]*d_wheel_rwy_local_v[2]
|
|
||||||
- v_wheel_local_v[2]*spring_damping[i];
|
|
||||||
if (reaction_normal_force > 0.) reaction_normal_force = 0.;
|
|
||||||
/* to prevent damping component from swamping spring component */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calculate friction coefficients */
|
|
||||||
|
|
||||||
forward_mu = (max_brake_mu - rolling_mu)*percent_brake[i] + rolling_mu;
|
|
||||||
abs_v_wheel_sideward = sqrt(v_wheel_sideward*v_wheel_sideward);
|
|
||||||
sideward_mu = sliding_mu;
|
|
||||||
if (abs_v_wheel_sideward < skid_v)
|
|
||||||
sideward_mu = (abs_v_wheel_sideward - bkout_v)*beta_mu;
|
|
||||||
if (abs_v_wheel_sideward < bkout_v) sideward_mu = 0.;
|
|
||||||
|
|
||||||
/* Calculate foreward and sideward reaction forces */
|
|
||||||
|
|
||||||
forward_wheel_force = forward_mu*reaction_normal_force;
|
|
||||||
sideward_wheel_force = sideward_mu*reaction_normal_force;
|
|
||||||
if(v_wheel_forward < 0.) forward_wheel_force = -forward_wheel_force;
|
|
||||||
if(v_wheel_sideward < 0.) sideward_wheel_force = -sideward_wheel_force;
|
|
||||||
|
|
||||||
/* Rotate into local (N-E-D) axes */
|
|
||||||
|
|
||||||
f_wheel_local_v[0] = forward_wheel_force*cos_wheel_hdg_angle
|
|
||||||
- sideward_wheel_force*sin_wheel_hdg_angle;
|
|
||||||
f_wheel_local_v[1] = forward_wheel_force*sin_wheel_hdg_angle
|
|
||||||
+ sideward_wheel_force*cos_wheel_hdg_angle;
|
|
||||||
f_wheel_local_v[2] = reaction_normal_force;
|
|
||||||
|
|
||||||
/* Convert reaction force from local (N-E-D) axes to body (X-Y-Z) */
|
|
||||||
|
|
||||||
mult3x3by3( T_local_to_body_m, f_wheel_local_v, tempF );
|
|
||||||
|
|
||||||
/* Calculate moments from force and offsets in body axes */
|
|
||||||
|
|
||||||
cross3( d_wheel_cg_body_v, tempF, tempM );
|
|
||||||
|
|
||||||
/* Sum forces and moments across all wheels */
|
|
||||||
|
|
||||||
add3( tempF, F_gear_v, F_gear_v );
|
|
||||||
add3( tempM, M_gear_v, M_gear_v );
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ libUIUCModel_a_SOURCES = \
|
||||||
uiuc_controlInput.cpp uiuc_controlInput.h \
|
uiuc_controlInput.cpp uiuc_controlInput.h \
|
||||||
uiuc_convert.cpp uiuc_convert.h \
|
uiuc_convert.cpp uiuc_convert.h \
|
||||||
uiuc_engine.cpp uiuc_engine.h \
|
uiuc_engine.cpp uiuc_engine.h \
|
||||||
|
uiuc_gear.cpp uiuc_gear.h \
|
||||||
uiuc_ice.cpp uiuc_ice.h \
|
uiuc_ice.cpp uiuc_ice.h \
|
||||||
uiuc_initializemaps.cpp uiuc_initializemaps.h \
|
uiuc_initializemaps.cpp uiuc_initializemaps.h \
|
||||||
uiuc_map_CD.cpp uiuc_map_CD.h \
|
uiuc_map_CD.cpp uiuc_map_CD.h \
|
||||||
|
@ -32,6 +33,7 @@ libUIUCModel_a_SOURCES = \
|
||||||
uiuc_map_engine.cpp uiuc_map_engine.h \
|
uiuc_map_engine.cpp uiuc_map_engine.h \
|
||||||
uiuc_map_geometry.cpp uiuc_map_geometry.h \
|
uiuc_map_geometry.cpp uiuc_map_geometry.h \
|
||||||
uiuc_map_ice.cpp uiuc_map_ice.h \
|
uiuc_map_ice.cpp uiuc_map_ice.h \
|
||||||
|
uiuc_map_gear.cpp uiuc_map_gear.h \
|
||||||
uiuc_map_init.cpp uiuc_map_init.h \
|
uiuc_map_init.cpp uiuc_map_init.h \
|
||||||
uiuc_map_keyword.cpp uiuc_map_keyword.h \
|
uiuc_map_keyword.cpp uiuc_map_keyword.h \
|
||||||
uiuc_map_mass.cpp uiuc_map_mass.h \
|
uiuc_map_mass.cpp uiuc_map_mass.h \
|
||||||
|
|
|
@ -36,11 +36,13 @@
|
||||||
and Weight; added misc map
|
and Weight; added misc map
|
||||||
04/01/2000 (JS) added throttle, longitudinal, lateral,
|
04/01/2000 (JS) added throttle, longitudinal, lateral,
|
||||||
and rudder inputs to record map
|
and rudder inputs to record map
|
||||||
|
03/09/2001 (DPM) added support for gear
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
AUTHOR(S): Bipin Sehgal <bsehgal@uiuc.edu>
|
AUTHOR(S): Bipin Sehgal <bsehgal@uiuc.edu>
|
||||||
Jeff Scott <jscott@mail.com>
|
Jeff Scott <jscott@mail.com>
|
||||||
|
David Megginson <david@megginson.com>
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -96,7 +98,7 @@
|
||||||
#include <simgear/compiler.h>
|
#include <simgear/compiler.h>
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <iostream>
|
#include STL_IOSTREAM
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#include "uiuc_parsefile.h"
|
#include "uiuc_parsefile.h"
|
||||||
|
@ -171,7 +173,8 @@ enum {Cno_flag = 13000, Cn_beta_flag, Cn_p_flag, Cn_r_flag, Cn_da_flag,
|
||||||
Cn_dr_flag, Cn_q_flag, Cn_b3_flag, Cnfada_flag, Cnfbetadr_flag};
|
Cn_dr_flag, Cn_q_flag, Cn_b3_flag, Cnfada_flag, Cnfbetadr_flag};
|
||||||
|
|
||||||
// gear ======= Landing gear model quantities
|
// gear ======= Landing gear model quantities
|
||||||
// enum {xxx = 14000};
|
enum {Dx_gear_flag = 14000, Dy_gear_flag, Dz_gear_flag, cgear_flag,
|
||||||
|
kgear_flag, muGear_flag, strutLength_flag};
|
||||||
|
|
||||||
// ice ======== Ice model quantities
|
// ice ======== Ice model quantities
|
||||||
enum {iceTime_flag = 15000, transientTime_flag, eta_ice_final_flag,
|
enum {iceTime_flag = 15000, transientTime_flag, eta_ice_final_flag,
|
||||||
|
@ -851,6 +854,19 @@ typedef struct
|
||||||
map <string,int> gear_map;
|
map <string,int> gear_map;
|
||||||
|
|
||||||
#define gear_map aircraft_->gear_map
|
#define gear_map aircraft_->gear_map
|
||||||
|
#define MAX_GEAR 16
|
||||||
|
bool gear_model[MAX_GEAR];
|
||||||
|
double D_gear_v[MAX_GEAR][3];
|
||||||
|
double cgear[MAX_GEAR];
|
||||||
|
double kgear[MAX_GEAR];
|
||||||
|
double muGear[MAX_GEAR];
|
||||||
|
double strutLength[MAX_GEAR];
|
||||||
|
#define D_gear_v aircraft_->D_gear_v
|
||||||
|
#define gear_model aircraft_->gear_model
|
||||||
|
#define cgear aircraft_->cgear
|
||||||
|
#define kgear aircraft_->kgear
|
||||||
|
#define muGear aircraft_->muGear
|
||||||
|
#define strutLength aircraft_->strutLength
|
||||||
|
|
||||||
|
|
||||||
/* Variables (token2) ===========================================*/
|
/* Variables (token2) ===========================================*/
|
||||||
|
|
|
@ -18,11 +18,13 @@
|
||||||
|
|
||||||
HISTORY: 01/26/2000 initial release
|
HISTORY: 01/26/2000 initial release
|
||||||
04/08/2000 broke up into multiple map_xxxx functions
|
04/08/2000 broke up into multiple map_xxxx functions
|
||||||
|
03/09/2001 (DPM) initialize gear map
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
AUTHOR(S): Bipin Sehgal <bsehgal@uiuc.edu>
|
AUTHOR(S): Bipin Sehgal <bsehgal@uiuc.edu>
|
||||||
Jeff Scott <jscott@mail.com>
|
Jeff Scott <jscott@mail.com>
|
||||||
|
David Megginson <david@megginson.com>
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -81,7 +83,7 @@ void uiuc_initializemaps()
|
||||||
uiuc_map_CY();
|
uiuc_map_CY();
|
||||||
uiuc_map_Croll();
|
uiuc_map_Croll();
|
||||||
uiuc_map_Cn();
|
uiuc_map_Cn();
|
||||||
// uiuc_map_gear();
|
uiuc_map_gear();
|
||||||
uiuc_map_ice();
|
uiuc_map_ice();
|
||||||
uiuc_map_record1();
|
uiuc_map_record1();
|
||||||
uiuc_map_record2();
|
uiuc_map_record2();
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include "uiuc_map_Croll.h"
|
#include "uiuc_map_Croll.h"
|
||||||
#include "uiuc_map_Cn.h"
|
#include "uiuc_map_Cn.h"
|
||||||
#include "uiuc_map_ice.h"
|
#include "uiuc_map_ice.h"
|
||||||
|
#include "uiuc_map_gear.h"
|
||||||
#include "uiuc_map_record1.h"
|
#include "uiuc_map_record1.h"
|
||||||
#include "uiuc_map_record2.h"
|
#include "uiuc_map_record2.h"
|
||||||
#include "uiuc_map_record3.h"
|
#include "uiuc_map_record3.h"
|
||||||
|
|
|
@ -41,12 +41,14 @@
|
||||||
04/05/2000 (JS) added Altitude to init and record
|
04/05/2000 (JS) added Altitude to init and record
|
||||||
maps; added zero_Long_trim to
|
maps; added zero_Long_trim to
|
||||||
controlSurface map
|
controlSurface map
|
||||||
|
03/09/2001 (DPM) added support for gear.
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
AUTHOR(S): Bipin Sehgal <bsehgal@uiuc.edu>
|
AUTHOR(S): Bipin Sehgal <bsehgal@uiuc.edu>
|
||||||
Jeff Scott <jscott@mail.com>
|
Jeff Scott <jscott@mail.com>
|
||||||
Michael Selig <m-selig@uiuc.edu>
|
Michael Selig <m-selig@uiuc.edu>
|
||||||
|
David Megginson <david@megginson.com>
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -98,7 +100,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <iostream>
|
#include STL_IOSTREAM
|
||||||
|
|
||||||
#include "uiuc_menu.h"
|
#include "uiuc_menu.h"
|
||||||
|
|
||||||
|
@ -2124,15 +2126,82 @@ void uiuc_menu( string aircraft_name )
|
||||||
} // end Cn map
|
} // end Cn map
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
case gear_flag:
|
case gear_flag:
|
||||||
{
|
{
|
||||||
|
int index;
|
||||||
|
token3 >> index;
|
||||||
|
if (index < 0 || index >= 16)
|
||||||
|
uiuc_warnings_errors(1, *command_line);
|
||||||
switch(gear_map[linetoken2])
|
switch(gear_map[linetoken2])
|
||||||
{
|
{
|
||||||
case kgear:
|
case Dx_gear_flag:
|
||||||
{
|
{
|
||||||
// none yet
|
if (check_float(linetoken3))
|
||||||
|
token4 >> token_value;
|
||||||
|
else
|
||||||
|
uiuc_warnings_errors(1, *command_line);
|
||||||
|
D_gear_v[index][0] = token_value;
|
||||||
|
gear_model[index] = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case Dy_gear_flag:
|
||||||
|
{
|
||||||
|
if (check_float(linetoken3))
|
||||||
|
token4 >> token_value;
|
||||||
|
else
|
||||||
|
uiuc_warnings_errors(1, *command_line);
|
||||||
|
D_gear_v[index][1] = token_value;
|
||||||
|
gear_model[index] = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case Dz_gear_flag:
|
||||||
|
{
|
||||||
|
if (check_float(linetoken3))
|
||||||
|
token4 >> token_value;
|
||||||
|
else
|
||||||
|
uiuc_warnings_errors(1, *command_line);
|
||||||
|
D_gear_v[index][2] = token_value;
|
||||||
|
gear_model[index] = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case cgear_flag:
|
||||||
|
{
|
||||||
|
if (check_float(linetoken3))
|
||||||
|
token4 >> token_value;
|
||||||
|
else
|
||||||
|
uiuc_warnings_errors(1, *command_line);
|
||||||
|
cgear[index] = token_value;
|
||||||
|
gear_model[index] = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case kgear_flag:
|
||||||
|
{
|
||||||
|
if (check_float(linetoken3))
|
||||||
|
token4 >> token_value;
|
||||||
|
else
|
||||||
|
uiuc_warnings_errors(1, *command_line);
|
||||||
|
kgear[index] = token_value;
|
||||||
|
gear_model[index] = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case muGear_flag:
|
||||||
|
{
|
||||||
|
if (check_float(linetoken3))
|
||||||
|
token4 >> token_value;
|
||||||
|
else
|
||||||
|
uiuc_warnings_errors(1, *command_line);
|
||||||
|
muGear[index] = token_value;
|
||||||
|
gear_model[index] = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case strutLength_flag:
|
||||||
|
{
|
||||||
|
if (check_float(linetoken3))
|
||||||
|
token4 >> token_value;
|
||||||
|
else
|
||||||
|
uiuc_warnings_errors(1, *command_line);
|
||||||
|
strutLength[index] = token_value;
|
||||||
|
gear_model[index] = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -2141,10 +2210,9 @@ void uiuc_menu( string aircraft_name )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
break;
|
||||||
} // end gear map
|
} // end gear map
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
case ice_flag:
|
case ice_flag:
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,10 +18,12 @@
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
HISTORY: 01/26/2000 initial release
|
HISTORY: 01/26/2000 initial release
|
||||||
|
03/09/2001 (DPM) added support for gear
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
AUTHOR(S): Bipin Sehgal <bsehgal@uiuc.edu>
|
AUTHOR(S): Bipin Sehgal <bsehgal@uiuc.edu>
|
||||||
|
David Megginson <david@megginson.com>
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -69,6 +71,7 @@
|
||||||
#include "uiuc_aircraftdir.h"
|
#include "uiuc_aircraftdir.h"
|
||||||
#include "uiuc_coefficients.h"
|
#include "uiuc_coefficients.h"
|
||||||
#include "uiuc_engine.h"
|
#include "uiuc_engine.h"
|
||||||
|
#include "uiuc_gear.h"
|
||||||
#include "uiuc_aerodeflections.h"
|
#include "uiuc_aerodeflections.h"
|
||||||
#include "uiuc_recorder.h"
|
#include "uiuc_recorder.h"
|
||||||
#include "uiuc_menu.h"
|
#include "uiuc_menu.h"
|
||||||
|
@ -81,6 +84,7 @@ SG_USING_STD(endl);
|
||||||
extern "C" void uiuc_init_aeromodel ();
|
extern "C" void uiuc_init_aeromodel ();
|
||||||
extern "C" void uiuc_force_moment(double dt);
|
extern "C" void uiuc_force_moment(double dt);
|
||||||
extern "C" void uiuc_engine_routine();
|
extern "C" void uiuc_engine_routine();
|
||||||
|
extern "C" void uiuc_gear_routine();
|
||||||
|
|
||||||
AIRCRAFT *aircraft_ = new AIRCRAFT;
|
AIRCRAFT *aircraft_ = new AIRCRAFT;
|
||||||
AIRCRAFTDIR *aircraftdir_ = new AIRCRAFTDIR;
|
AIRCRAFTDIR *aircraftdir_ = new AIRCRAFTDIR;
|
||||||
|
@ -137,4 +141,9 @@ void uiuc_engine_routine()
|
||||||
uiuc_engine();
|
uiuc_engine();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void uiuc_gear_routine ()
|
||||||
|
{
|
||||||
|
uiuc_gear();
|
||||||
|
}
|
||||||
|
|
||||||
//end uiuc_wrapper.cpp
|
//end uiuc_wrapper.cpp
|
||||||
|
|
|
@ -2,3 +2,4 @@
|
||||||
void uiuc_init_aeromodel ();
|
void uiuc_init_aeromodel ();
|
||||||
void uiuc_force_moment(double dt);
|
void uiuc_force_moment(double dt);
|
||||||
void uiuc_engine_routine();
|
void uiuc_engine_routine();
|
||||||
|
void uiuc_gear_routine();
|
||||||
|
|
Loading…
Reference in a new issue