X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FLaRCsim%2Fls_step.c;h=3927425cd07df99c2296f0372c5c4751fd6f618c;hb=e1d5a52a3a535007d4249aeba84fc645158997a7;hp=7bbae99a871738b4cb2edd2479889a8f47d9ad50;hpb=c90db01dc8d5462a3da22771ffa7c96f5ea31217;p=flightgear.git diff --git a/src/FDM/LaRCsim/ls_step.c b/src/FDM/LaRCsim/ls_step.c index 7bbae99a8..3927425cd 100644 --- a/src/FDM/LaRCsim/ls_step.c +++ b/src/FDM/LaRCsim/ls_step.c @@ -50,8 +50,184 @@ $Header$ $Log$ -Revision 1.1 1999/04/05 21:32:45 curt -Initial revision +Revision 1.5 2003/07/25 17:53:47 mselig +UIUC code initilization mods to tidy things up a bit. + +Revision 1.4 2003/06/20 19:53:56 ehofman +Get rid of a multiple defined symbol warning" src/FDM/LaRCsim/ls_step.c +" + +Revision 1.3 2003/06/09 02:50:23 mselig +mods made to setup for some initializations in uiuc code + +Revision 1.2 2003/05/25 12:14:46 ehofman +Rename some defines to prevent a namespace clash + +Revision 1.1.1.1 2002/09/10 01:14:02 curt +Initial revision of FlightGear-0.9.0 + +Revision 1.5 2001/09/14 18:47:27 curt +More changes in support of UIUCModel. + +Revision 1.4 2001/03/24 05:03:12 curt +SG-ified logstream. + +Revision 1.3 2000/10/23 22:34:55 curt +I tested: +LaRCsim c172 on-ground and in-air starts, reset: all work +UIUC Cessna172 on-ground and in-air starts work as expected, reset +results in an aircraft that is upside down but does not crash FG. I +don't know what it was like before, so it may well be no change. +JSBSim c172 and X15 in-air starts work fine, resets now work (and are +trimmed), on-ground starts do not -- the c172 ends up on its back. I +suspect this is no worse than before. + +I did not test: +Balloon (the weather code returns nan's for the atmosphere data --this +is in the weather module and apparently is a linux only bug) +ADA (don't know how) +MagicCarpet (needs work yet) +External (don't know how) + +known to be broken: +LaRCsim c172 on-ground starts with a negative terrain altitude (this +happens at KPAO when the scenery is not present). The FDM inits to +about 50 feet AGL and the model falls to the ground. It does stay +upright, however, and seems to be fine once it settles out, FWIW. + +To do: +--implement set_Model on the bus +--bring Christian's weather data into JSBSim +-- add default method to bus for updating things like the sin and cos of +latitude (for Balloon, MagicCarpet) +-- lots of cleanup + +The files: +src/FDM/flight.cxx +src/FDM/flight.hxx +-- all data members now declared protected instead of private. +-- eliminated all but a small set of 'setters', no change to getters. +-- that small set is declared virtual, the default implementation +provided preserves the old behavior +-- all of the vector data members are now initialized. +-- added busdump() method -- SG_LOG's all the bus data when called, +useful for diagnostics. + +src/FDM/ADA.cxx +-- bus data members now directly assigned to + +src/FDM/Balloon.cxx +-- bus data members now directly assigned to +-- changed V_equiv_kts to V_calibrated_kts + +src/FDM/JSBSim.cxx +src/FDM/JSBSim.hxx +-- bus data members now directly assigned to +-- implemented the FGInterface virtual setters with JSBSim specific +logic +-- changed the static FDMExec to a dynamic fdmex (needed so that the +JSBSim object can be deleted when a model change is called for) +-- implemented constructor and destructor, moved some of the logic +formerly in init() to constructor +-- added logic to bring up FGEngInterface objects and set the RPM and +throttle values. + +src/FDM/LaRCsim.cxx +src/FDM/LaRCsim.hxx +-- bus data members now directly assigned to +-- implemented the FGInterface virtual setters with LaRCsim specific +logic, uses LaRCsimIC +-- implemented constructor and destructor, moved some of the logic +formerly in init() to constructor +-- moved default inertias to here from fg_init.cxx +-- eliminated the climb rate calculation. The equivalent, climb_rate = +-1*vdown, is now in copy_from_LaRCsim(). + +src/FDM/LaRCsimIC.cxx +src/FDM/LaRCsimIC.hxx +-- similar to FGInitialCondition, this class has all the logic needed to +turn data like Vc and Mach into the more fundamental quantities LaRCsim +needs to initialize. +-- put it in src/FDM since it is a class + +src/FDM/MagicCarpet.cxx + -- bus data members now directly assigned to + +src/FDM/Makefile.am +-- adds LaRCsimIC.hxx and cxx + +src/FDM/JSBSim/FGAtmosphere.h +src/FDM/JSBSim/FGDefs.h +src/FDM/JSBSim/FGInitialCondition.cpp +src/FDM/JSBSim/FGInitialCondition.h +src/FDM/JSBSim/JSBSim.cpp +-- changes to accomodate the new bus + +src/FDM/LaRCsim/atmos_62.h +src/FDM/LaRCsim/ls_geodesy.h +-- surrounded prototypes with #ifdef __cplusplus ... #endif , functions +here are needed in LaRCsimIC + +src/FDM/LaRCsim/c172_main.c +src/FDM/LaRCsim/cherokee_aero.c +src/FDM/LaRCsim/ls_aux.c +src/FDM/LaRCsim/ls_constants.h +src/FDM/LaRCsim/ls_geodesy.c +src/FDM/LaRCsim/ls_geodesy.h +src/FDM/LaRCsim/ls_step.c +src/FDM/UIUCModel/uiuc_betaprobe.cpp +-- changed PI to LS_PI, eliminates preprocessor naming conflict with +weather module + +src/FDM/LaRCsim/ls_interface.c +src/FDM/LaRCsim/ls_interface.h +-- added function ls_set_model_dt() + +src/Main/bfi.cxx +-- eliminated calls that set the NED speeds to body components. They +are no longer needed and confuse the new bus. + +src/Main/fg_init.cxx +-- eliminated calls that just brought the bus data up-to-date (e.g. +set_sin_cos_latitude). or set default values. The bus now handles the +defaults and updates itself when the setters are called (for LaRCsim and +JSBSim). A default method for doing this needs to be added to the bus. +-- added fgVelocityInit() to set the speed the user asked for. Both +JSBSim and LaRCsim can now be initialized using any of: +vc,mach, NED components, UVW components. + +src/Main/main.cxx +--eliminated call to fgFDMSetGroundElevation, this data is now 'pulled' +onto the bus every update() + +src/Main/options.cxx +src/Main/options.hxx +-- added enum to keep track of the speed requested by the user +-- eliminated calls to set NED velocity properties to body speeds, they +are no longer needed. +-- added options for the NED components. + +src/Network/garmin.cxx +src/Network/nmea.cxx +--eliminated calls that just brought the bus data up-to-date (e.g. +set_sin_cos_latitude). The bus now updates itself when the setters are +called (for LaRCsim and JSBSim). A default method for doing this needs +to be added to the bus. +-- changed set_V_equiv_kts to set_V_calibrated_kts. set_V_equiv_kts no +longer exists ( get_V_equiv_kts still does, though) + +src/WeatherCM/FGLocalWeatherDatabase.cpp +-- commented out the code to put the weather data on the bus, a +different scheme for this is needed. + +Revision 1.2 1999/10/29 16:08:33 curt +Added flaps support to c172 model. + +Revision 1.1.1.1 1999/06/17 18:07:33 curt +Start of 0.7.x branch + +Revision 1.1.1.1 1999/04/05 21:32:45 curt +Start of 0.6.x branch. Revision 1.4 1998/08/24 20:09:27 curt Code optimization tweaks from Norman Vine. @@ -121,6 +297,8 @@ Initial Flight Gear revision. --------------------------------------------------------------------------*/ +//#include + #include "ls_types.h" #include "ls_constants.h" #include "ls_generic.h" @@ -133,8 +311,21 @@ Initial Flight Gear revision. /* #include "ls_sim_control.h" */ #include +extern Model current_model; /* defined in ls_model.c */ extern SCALAR Simtime; /* defined in ls_main.c */ +void uiuc_init_vars() { + static int init = 0; + + if (init==0) { + init=-1; + uiuc_init_aeromodel(); + } + + uiuc_initial_init(); +} + + void ls_step( SCALAR dt, int Initialize ) { static int inited = 0; SCALAR dth; @@ -173,6 +364,10 @@ void ls_step( SCALAR dt, int Initialize ) { V_east = V_east + local_gnd_veast; /* Initialize quaternions and transformation matrix from Euler angles */ + // Initialize UIUC aircraft model + if (current_model == UIUC) { + uiuc_init_2_wrapper(); + } e_0 = cos(Psi*0.5)*cos(Theta*0.5)*cos(Phi*0.5) + sin(Psi*0.5)*sin(Theta*0.5)*sin(Phi*0.5); @@ -192,6 +387,12 @@ void ls_step( SCALAR dt, int Initialize ) { T_local_to_body_32 = 2*(e_2*e_3 - e_0*e_1); T_local_to_body_33 = e_0*e_0 - e_1*e_1 - e_2*e_2 + e_3*e_3; + // Initialize local velocities (V_north, V_east, V_down) + // based on transformation matrix calculated above + if (current_model == UIUC) { + uiuc_local_vel_init(); + } + /* Calculate local gravitation acceleration */ ls_gravity( Radius_to_vehicle, Lat_geocentric, &Gravity ); @@ -208,13 +409,13 @@ void ls_step( SCALAR dt, int Initialize ) { /* Initialize auxiliary variables */ ls_aux(); - Alpha_dot = 0.; - Beta_dot = 0.; + Std_Alpha_dot = 0.; + Std_Beta_dot = 0.; /* set flag; disable integrators */ inited = -1; - dt = 0; + dt = 0.0; } @@ -341,7 +542,7 @@ void ls_step( SCALAR dt, int Initialize ) { /* Resolve Psi to 0 - 359.9999 */ - if (Psi < 0 ) Psi = Psi + 2*PI; + if (Psi < 0 ) Psi = Psi + 2*LS_PI; /* L I N E A R P O S I T I O N S */