1999-02-05 21:26:01 +00:00
|
|
|
/*******************************************************************************
|
1999-02-11 21:05:34 +00:00
|
|
|
|
1999-02-05 21:26:01 +00:00
|
|
|
Module: FGState.cpp
|
|
|
|
Author: Jon Berndt
|
|
|
|
Date started: 11/17/98
|
|
|
|
Called by: FGFDMExec and accessed by all models.
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
|
1999-02-05 21:26:01 +00:00
|
|
|
------------- Copyright (C) 1999 Jon S. Berndt (jsb@hal-pc.org) -------------
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
|
1999-02-05 21:26:01 +00:00
|
|
|
This program is free software; you can redistribute it and/or modify it under
|
|
|
|
the terms of the GNU General Public License as published by the Free Software
|
|
|
|
Foundation; either version 2 of the License, or (at your option) any later
|
|
|
|
version.
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
|
1999-02-05 21:26:01 +00:00
|
|
|
This program is distributed in the hope that it will be useful, but WITHOUT
|
|
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
|
|
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
|
|
details.
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
|
1999-02-05 21:26:01 +00:00
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
|
|
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
|
|
|
Place - Suite 330, Boston, MA 02111-1307, USA.
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
|
1999-02-05 21:26:01 +00:00
|
|
|
Further information about the GNU General Public License can also be found on
|
|
|
|
the world wide web at http://www.gnu.org.
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
|
1999-02-05 21:26:01 +00:00
|
|
|
FUNCTIONAL DESCRIPTION
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
See header file.
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
|
1999-02-05 21:26:01 +00:00
|
|
|
HISTORY
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
11/17/98 JSB Created
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
|
1999-02-05 21:26:01 +00:00
|
|
|
********************************************************************************
|
|
|
|
INCLUDES
|
|
|
|
*******************************************************************************/
|
|
|
|
|
1999-02-26 22:09:10 +00:00
|
|
|
#ifdef FGFS
|
2000-02-15 03:30:01 +00:00
|
|
|
# include <simgear/compiler.h>
|
1999-02-26 22:09:10 +00:00
|
|
|
# ifdef FG_HAVE_STD_INCLUDES
|
|
|
|
# include <cmath>
|
|
|
|
# else
|
|
|
|
# include <math.h>
|
|
|
|
# endif
|
|
|
|
#else
|
|
|
|
# include <cmath>
|
|
|
|
#endif
|
1999-02-13 01:12:03 +00:00
|
|
|
|
1999-02-05 21:26:01 +00:00
|
|
|
#include "FGState.h"
|
1999-02-11 21:05:34 +00:00
|
|
|
#include "FGFDMExec.h"
|
|
|
|
#include "FGAtmosphere.h"
|
|
|
|
#include "FGFCS.h"
|
1999-02-05 21:26:01 +00:00
|
|
|
#include "FGAircraft.h"
|
1999-02-11 21:05:34 +00:00
|
|
|
#include "FGTranslation.h"
|
|
|
|
#include "FGRotation.h"
|
|
|
|
#include "FGPosition.h"
|
|
|
|
#include "FGAuxiliary.h"
|
|
|
|
#include "FGOutput.h"
|
1999-02-05 21:26:01 +00:00
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
************************************ CODE **************************************
|
|
|
|
*******************************************************************************/
|
|
|
|
|
|
|
|
|
2000-04-24 23:49:06 +00:00
|
|
|
FGState::FGState(FGFDMExec* fdex) : mTb2l(3,3),
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
mTl2b(3,3),
|
|
|
|
mTs2b(3,3),
|
2000-05-27 05:48:14 +00:00
|
|
|
vQtrn(4)
|
|
|
|
{
|
1999-02-11 21:05:34 +00:00
|
|
|
FDMExec = fdex;
|
|
|
|
|
1999-02-05 21:26:01 +00:00
|
|
|
adot = bdot = 0.0;
|
|
|
|
a = 1000.0;
|
2000-01-10 21:07:00 +00:00
|
|
|
sim_time = 0.0;
|
|
|
|
dt = 1.0/120.0;
|
2000-04-24 23:49:06 +00:00
|
|
|
|
|
|
|
coeffdef["FG_QBAR"] = 1 ;
|
|
|
|
coeffdef["FG_WINGAREA"] = 2 ;
|
|
|
|
coeffdef["FG_WINGSPAN"] = 4 ;
|
|
|
|
coeffdef["FG_CBAR"] = 8 ;
|
|
|
|
coeffdef["FG_ALPHA"] = 16 ;
|
|
|
|
coeffdef["FG_ALPHADOT"] = 32 ;
|
|
|
|
coeffdef["FG_BETA"] = 64 ;
|
|
|
|
coeffdef["FG_BETADOT"] = 128 ;
|
|
|
|
coeffdef["FG_PITCHRATE"] = 256 ;
|
|
|
|
coeffdef["FG_ROLLRATE"] = 512 ;
|
|
|
|
coeffdef["FG_YAWRATE"] = 1024 ;
|
|
|
|
coeffdef["FG_MACH"] = 2048 ;
|
|
|
|
coeffdef["FG_ALTITUDE"] = 4096 ;
|
|
|
|
coeffdef["FG_BI2VEL"] = 8192 ;
|
|
|
|
coeffdef["FG_CI2VEL"] = 16384 ;
|
|
|
|
coeffdef["FG_ELEVATOR_POS"] = 32768L ;
|
|
|
|
coeffdef["FG_AILERON_POS"] = 65536L ;
|
|
|
|
coeffdef["FG_RUDDER_POS"] = 131072L ;
|
|
|
|
coeffdef["FG_SPDBRAKE_POS"] = 262144L ;
|
|
|
|
coeffdef["FG_SPOILERS_POS"] = 524288L ;
|
|
|
|
coeffdef["FG_FLAPS_POS"] = 1048576L ;
|
|
|
|
coeffdef["FG_ELEVATOR_CMD"] = 2097152L ;
|
|
|
|
coeffdef["FG_AILERON_CMD"] = 4194304L ;
|
|
|
|
coeffdef["FG_RUDDER_CMD"] = 8388608L ;
|
|
|
|
coeffdef["FG_SPDBRAKE_CMD"] = 16777216L ;
|
|
|
|
coeffdef["FG_SPOILERS_CMD"] = 33554432L ;
|
|
|
|
coeffdef["FG_FLAPS_CMD"] = 67108864L ;
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
coeffdef["FG_THROTTLE_CMD"] = 134217728L ;
|
|
|
|
coeffdef["FG_THROTTLE_POS"] = 268435456L ;
|
|
|
|
coeffdef["FG_HOVERB"] = 536870912L ;
|
|
|
|
coeffdef["FG_PITCH_TRIM_CMD"] = 1073741824L ;
|
1999-02-05 21:26:01 +00:00
|
|
|
}
|
|
|
|
|
2000-04-24 23:49:06 +00:00
|
|
|
/******************************************************************************/
|
1999-02-05 21:26:01 +00:00
|
|
|
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
FGState::~FGState(void) {}
|
1999-02-05 21:26:01 +00:00
|
|
|
|
1999-08-17 21:18:11 +00:00
|
|
|
//***************************************************************************
|
|
|
|
//
|
|
|
|
// Reset: Assume all angles READ FROM FILE IN DEGREES !!
|
|
|
|
//
|
|
|
|
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
|
|
|
|
|
|
|
|
bool FGState::Reset(string path, string acname, string fname) {
|
1999-02-13 01:12:03 +00:00
|
|
|
string resetDef;
|
1999-02-11 21:05:34 +00:00
|
|
|
float U, V, W;
|
|
|
|
float phi, tht, psi;
|
2000-04-28 19:59:46 +00:00
|
|
|
float latitude, longitude, h;
|
1999-02-05 21:26:01 +00:00
|
|
|
|
2000-04-24 23:49:06 +00:00
|
|
|
resetDef = path + "/" + acname + "/" + fname;
|
1999-02-05 21:26:01 +00:00
|
|
|
|
1999-02-26 22:09:10 +00:00
|
|
|
ifstream resetfile(resetDef.c_str());
|
1999-02-05 21:26:01 +00:00
|
|
|
|
|
|
|
if (resetfile) {
|
|
|
|
resetfile >> U;
|
|
|
|
resetfile >> V;
|
|
|
|
resetfile >> W;
|
|
|
|
resetfile >> latitude;
|
|
|
|
resetfile >> longitude;
|
|
|
|
resetfile >> phi;
|
|
|
|
resetfile >> tht;
|
|
|
|
resetfile >> psi;
|
|
|
|
resetfile >> h;
|
|
|
|
resetfile.close();
|
|
|
|
|
2000-04-28 19:59:46 +00:00
|
|
|
FDMExec->GetPosition()->SetLatitude(latitude*DEGTORAD);
|
|
|
|
FDMExec->GetPosition()->SetLongitude(longitude*DEGTORAD);
|
|
|
|
FDMExec->GetPosition()->Seth(h);
|
|
|
|
|
1999-08-17 21:18:11 +00:00
|
|
|
Initialize(U, V, W, phi*DEGTORAD, tht*DEGTORAD, psi*DEGTORAD,
|
1999-12-20 20:24:49 +00:00
|
|
|
latitude*DEGTORAD, longitude*DEGTORAD, h);
|
1999-02-11 21:05:34 +00:00
|
|
|
|
1999-02-05 21:26:01 +00:00
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
cerr << "Unable to load reset file " << fname << endl;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1999-08-17 21:18:11 +00:00
|
|
|
//***************************************************************************
|
|
|
|
//
|
|
|
|
// Initialize: Assume all angles GIVEN IN RADIANS !!
|
|
|
|
//
|
1999-02-05 21:26:01 +00:00
|
|
|
|
1999-07-31 04:55:23 +00:00
|
|
|
void FGState::Initialize(float U, float V, float W,
|
|
|
|
float phi, float tht, float psi,
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
float Latitude, float Longitude, float H) {
|
2000-04-24 23:49:06 +00:00
|
|
|
FGColumnVector vUVW(3);
|
2000-04-28 19:59:46 +00:00
|
|
|
FGColumnVector vLocalVelNED(3);
|
2000-04-24 23:49:06 +00:00
|
|
|
FGColumnVector vEuler(3);
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
float alpha, beta;
|
2000-04-28 19:59:46 +00:00
|
|
|
float qbar, Vt;
|
|
|
|
|
2000-05-02 18:25:30 +00:00
|
|
|
FDMExec->GetPosition()->SetLatitude(Latitude);
|
|
|
|
FDMExec->GetPosition()->SetLongitude(Longitude);
|
2000-04-28 19:59:46 +00:00
|
|
|
FDMExec->GetPosition()->Seth(H);
|
1999-07-31 04:55:23 +00:00
|
|
|
|
2000-04-24 23:49:06 +00:00
|
|
|
FDMExec->GetAtmosphere()->Run();
|
1999-07-31 04:55:23 +00:00
|
|
|
|
|
|
|
if (W != 0.0)
|
|
|
|
alpha = U*U > 0.0 ? atan2(W, U) : 0.0;
|
|
|
|
else
|
|
|
|
alpha = 0.0;
|
|
|
|
if (V != 0.0)
|
|
|
|
beta = U*U+W*W > 0.0 ? atan2(V, (fabs(U)/U)*sqrt(U*U + W*W)) : 0.0;
|
|
|
|
else
|
|
|
|
beta = 0.0;
|
|
|
|
|
2000-04-24 23:49:06 +00:00
|
|
|
vUVW << U << V << W;
|
|
|
|
FDMExec->GetTranslation()->SetUVW(vUVW);
|
2000-04-28 19:59:46 +00:00
|
|
|
|
2000-04-24 23:49:06 +00:00
|
|
|
vEuler << phi << tht << psi;
|
|
|
|
FDMExec->GetRotation()->SetEuler(vEuler);
|
2000-04-28 19:59:46 +00:00
|
|
|
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
FDMExec->GetTranslation()->SetAB(alpha, beta);
|
1999-07-31 04:55:23 +00:00
|
|
|
|
|
|
|
Vt = sqrt(U*U + V*V + W*W);
|
2000-04-28 19:59:46 +00:00
|
|
|
FDMExec->GetTranslation()->SetVt(Vt);
|
|
|
|
|
2000-04-24 23:49:06 +00:00
|
|
|
qbar = 0.5*(U*U + V*V + W*W)*FDMExec->GetAtmosphere()->GetDensity();
|
2000-04-28 19:59:46 +00:00
|
|
|
FDMExec->GetTranslation()->Setqbar(qbar);
|
2000-04-24 23:49:06 +00:00
|
|
|
|
|
|
|
InitMatrices(phi, tht, psi);
|
2000-04-28 19:59:46 +00:00
|
|
|
|
|
|
|
vLocalVelNED = mTb2l*vUVW;
|
|
|
|
FDMExec->GetPosition()->SetvVel(vLocalVelNED);
|
1999-07-31 04:55:23 +00:00
|
|
|
}
|
|
|
|
|
2000-04-24 23:49:06 +00:00
|
|
|
/******************************************************************************/
|
1999-07-31 04:55:23 +00:00
|
|
|
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
void FGState::Initialize(FGInitialCondition *FGIC) {
|
1999-12-20 20:24:49 +00:00
|
|
|
|
1999-08-17 21:18:11 +00:00
|
|
|
float tht,psi,phi;
|
2000-04-28 19:59:46 +00:00
|
|
|
float U, V, W, h;
|
|
|
|
float latitude, longitude;
|
1999-08-17 21:18:11 +00:00
|
|
|
|
|
|
|
latitude = FGIC->GetLatitudeRadIC();
|
|
|
|
longitude = FGIC->GetLongitudeRadIC();
|
|
|
|
h = FGIC->GetAltitudeFtIC();
|
|
|
|
U = FGIC->GetUBodyFpsIC();
|
|
|
|
V = FGIC->GetVBodyFpsIC();
|
|
|
|
W = FGIC->GetWBodyFpsIC();
|
|
|
|
tht = FGIC->GetThetaRadIC();
|
|
|
|
phi = FGIC->GetPhiRadIC();
|
|
|
|
psi = FGIC->GetPsiRadIC();
|
|
|
|
|
2000-04-24 23:49:06 +00:00
|
|
|
Initialize(U, V, W, phi, tht, psi, latitude, longitude, h);
|
1999-08-17 21:18:11 +00:00
|
|
|
}
|
|
|
|
|
2000-04-24 23:49:06 +00:00
|
|
|
/******************************************************************************/
|
1999-08-17 21:18:11 +00:00
|
|
|
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
bool FGState::StoreData(string fname) {
|
1999-02-26 22:09:10 +00:00
|
|
|
ofstream datafile(fname.c_str());
|
1999-02-05 21:26:01 +00:00
|
|
|
|
|
|
|
if (datafile) {
|
2000-04-24 23:49:06 +00:00
|
|
|
datafile << (FDMExec->GetTranslation()->GetUVW())(1);
|
|
|
|
datafile << (FDMExec->GetTranslation()->GetUVW())(2);
|
|
|
|
datafile << (FDMExec->GetTranslation()->GetUVW())(3);
|
2000-04-28 19:59:46 +00:00
|
|
|
datafile << FDMExec->GetPosition()->GetLatitude();
|
|
|
|
datafile << FDMExec->GetPosition()->GetLongitude();
|
2000-04-24 23:49:06 +00:00
|
|
|
datafile << (FDMExec->GetRotation()->GetEuler())(1);
|
|
|
|
datafile << (FDMExec->GetRotation()->GetEuler())(2);
|
|
|
|
datafile << (FDMExec->GetRotation()->GetEuler())(3);
|
2000-04-28 19:59:46 +00:00
|
|
|
datafile << FDMExec->GetPosition()->Geth();
|
1999-02-05 21:26:01 +00:00
|
|
|
datafile.close();
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
cerr << "Could not open dump file " << fname << endl;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2000-04-24 23:49:06 +00:00
|
|
|
/******************************************************************************/
|
1999-02-05 21:26:01 +00:00
|
|
|
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
float FGState::GetParameter(string val_string) {
|
2000-04-24 23:49:06 +00:00
|
|
|
return GetParameter(coeffdef[val_string]);
|
|
|
|
}
|
1999-02-05 21:26:01 +00:00
|
|
|
|
2000-04-24 23:49:06 +00:00
|
|
|
/******************************************************************************/
|
|
|
|
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
int FGState::GetParameterIndex(string val_string) {
|
2000-04-24 23:49:06 +00:00
|
|
|
return coeffdef[val_string];
|
|
|
|
}
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
//
|
|
|
|
// NEED WORK BELOW TO ADD NEW PARAMETERS !!!
|
|
|
|
//
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
float FGState::GetParameter(int val_idx) {
|
2000-04-24 23:49:06 +00:00
|
|
|
switch(val_idx) {
|
|
|
|
case FG_QBAR:
|
2000-04-28 19:59:46 +00:00
|
|
|
return FDMExec->GetTranslation()->Getqbar();
|
2000-04-24 23:49:06 +00:00
|
|
|
case FG_WINGAREA:
|
|
|
|
return FDMExec->GetAircraft()->GetWingArea();
|
|
|
|
case FG_WINGSPAN:
|
|
|
|
return FDMExec->GetAircraft()->GetWingSpan();
|
|
|
|
case FG_CBAR:
|
|
|
|
return FDMExec->GetAircraft()->Getcbar();
|
|
|
|
case FG_ALPHA:
|
|
|
|
return FDMExec->GetTranslation()->Getalpha();
|
|
|
|
case FG_ALPHADOT:
|
|
|
|
return Getadot();
|
|
|
|
case FG_BETA:
|
|
|
|
return FDMExec->GetTranslation()->Getbeta();
|
|
|
|
case FG_BETADOT:
|
|
|
|
return Getbdot();
|
|
|
|
case FG_PITCHRATE:
|
|
|
|
return (FDMExec->GetRotation()->GetPQR())(2);
|
|
|
|
case FG_ROLLRATE:
|
|
|
|
return (FDMExec->GetRotation()->GetPQR())(1);
|
|
|
|
case FG_YAWRATE:
|
|
|
|
return (FDMExec->GetRotation()->GetPQR())(3);
|
|
|
|
case FG_ELEVATOR_POS:
|
|
|
|
return FDMExec->GetFCS()->GetDePos();
|
|
|
|
case FG_AILERON_POS:
|
|
|
|
return FDMExec->GetFCS()->GetDaPos();
|
|
|
|
case FG_RUDDER_POS:
|
|
|
|
return FDMExec->GetFCS()->GetDrPos();
|
|
|
|
case FG_SPDBRAKE_POS:
|
|
|
|
return FDMExec->GetFCS()->GetDsbPos();
|
|
|
|
case FG_SPOILERS_POS:
|
|
|
|
return FDMExec->GetFCS()->GetDspPos();
|
|
|
|
case FG_FLAPS_POS:
|
|
|
|
return FDMExec->GetFCS()->GetDfPos();
|
|
|
|
case FG_ELEVATOR_CMD:
|
|
|
|
return FDMExec->GetFCS()->GetDeCmd();
|
|
|
|
case FG_AILERON_CMD:
|
|
|
|
return FDMExec->GetFCS()->GetDaCmd();
|
|
|
|
case FG_RUDDER_CMD:
|
|
|
|
return FDMExec->GetFCS()->GetDrCmd();
|
|
|
|
case FG_SPDBRAKE_CMD:
|
|
|
|
return FDMExec->GetFCS()->GetDsbCmd();
|
|
|
|
case FG_SPOILERS_CMD:
|
|
|
|
return FDMExec->GetFCS()->GetDspCmd();
|
|
|
|
case FG_FLAPS_CMD:
|
|
|
|
return FDMExec->GetFCS()->GetDfCmd();
|
|
|
|
case FG_MACH:
|
2000-04-28 19:59:46 +00:00
|
|
|
return FDMExec->GetTranslation()->GetMach();
|
2000-04-24 23:49:06 +00:00
|
|
|
case FG_ALTITUDE:
|
2000-04-28 19:59:46 +00:00
|
|
|
return FDMExec->GetPosition()->Geth();
|
2000-04-24 23:49:06 +00:00
|
|
|
case FG_BI2VEL:
|
2000-05-27 05:48:14 +00:00
|
|
|
if(FDMExec->GetTranslation()->GetVt() > 0)
|
|
|
|
return FDMExec->GetAircraft()->GetWingSpan()/(2.0 * FDMExec->GetTranslation()->GetVt());
|
|
|
|
else
|
|
|
|
return 0;
|
2000-04-24 23:49:06 +00:00
|
|
|
case FG_CI2VEL:
|
2000-05-27 05:48:14 +00:00
|
|
|
if(FDMExec->GetTranslation()->GetVt() > 0)
|
|
|
|
return FDMExec->GetAircraft()->Getcbar()/(2.0 * FDMExec->GetTranslation()->GetVt());
|
|
|
|
else
|
|
|
|
return 0;
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
case FG_THROTTLE_CMD:
|
|
|
|
return FDMExec->GetFCS()->GetThrottleCmd(0);
|
|
|
|
case FG_THROTTLE_POS:
|
|
|
|
return FDMExec->GetFCS()->GetThrottlePos(0);
|
|
|
|
case FG_HOVERB:
|
|
|
|
return FDMExec->GetPosition()->GetHOverB();
|
|
|
|
case FG_PITCH_TRIM_CMD:
|
|
|
|
return FDMExec->GetFCS()->GetPitchTrimCmd();
|
2000-04-24 23:49:06 +00:00
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
void FGState::SetParameter(int val_idx, float val) {
|
2000-04-24 23:49:06 +00:00
|
|
|
switch(val_idx) {
|
|
|
|
case FG_ELEVATOR_POS:
|
|
|
|
FDMExec->GetFCS()->SetDePos(val);
|
|
|
|
break;
|
|
|
|
case FG_AILERON_POS:
|
|
|
|
FDMExec->GetFCS()->SetDaPos(val);
|
|
|
|
break;
|
|
|
|
case FG_RUDDER_POS:
|
|
|
|
FDMExec->GetFCS()->SetDrPos(val);
|
|
|
|
break;
|
|
|
|
case FG_SPDBRAKE_POS:
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
FDMExec->GetFCS()->SetDsbPos(val);
|
2000-04-24 23:49:06 +00:00
|
|
|
break;
|
|
|
|
case FG_SPOILERS_POS:
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
FDMExec->GetFCS()->SetDspPos(val);
|
2000-04-24 23:49:06 +00:00
|
|
|
break;
|
|
|
|
case FG_FLAPS_POS:
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
FDMExec->GetFCS()->SetDfPos(val);
|
2000-04-24 23:49:06 +00:00
|
|
|
break;
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
case FG_THROTTLE_POS:
|
|
|
|
FDMExec->GetFCS()->SetThrottlePos(-1,val);
|
1999-02-05 21:26:01 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2000-04-24 23:49:06 +00:00
|
|
|
/******************************************************************************/
|
1999-02-05 21:26:01 +00:00
|
|
|
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
void FGState::InitMatrices(float phi, float tht, float psi) {
|
2000-04-24 23:49:06 +00:00
|
|
|
float thtd2, psid2, phid2;
|
|
|
|
float Sthtd2, Spsid2, Sphid2;
|
|
|
|
float Cthtd2, Cpsid2, Cphid2;
|
|
|
|
float Cphid2Cthtd2;
|
|
|
|
float Cphid2Sthtd2;
|
|
|
|
float Sphid2Sthtd2;
|
|
|
|
float Sphid2Cthtd2;
|
|
|
|
|
|
|
|
thtd2 = tht/2.0;
|
|
|
|
psid2 = psi/2.0;
|
|
|
|
phid2 = phi/2.0;
|
|
|
|
|
|
|
|
Sthtd2 = sin(thtd2);
|
|
|
|
Spsid2 = sin(psid2);
|
|
|
|
Sphid2 = sin(phid2);
|
|
|
|
|
|
|
|
Cthtd2 = cos(thtd2);
|
|
|
|
Cpsid2 = cos(psid2);
|
|
|
|
Cphid2 = cos(phid2);
|
|
|
|
|
|
|
|
Cphid2Cthtd2 = Cphid2*Cthtd2;
|
|
|
|
Cphid2Sthtd2 = Cphid2*Sthtd2;
|
|
|
|
Sphid2Sthtd2 = Sphid2*Sthtd2;
|
|
|
|
Sphid2Cthtd2 = Sphid2*Cthtd2;
|
|
|
|
|
|
|
|
vQtrn(1) = Cphid2Cthtd2*Cpsid2 + Sphid2Sthtd2*Spsid2;
|
|
|
|
vQtrn(2) = Sphid2Cthtd2*Cpsid2 - Cphid2Sthtd2*Spsid2;
|
|
|
|
vQtrn(3) = Cphid2Sthtd2*Cpsid2 + Sphid2Cthtd2*Spsid2;
|
|
|
|
vQtrn(4) = Cphid2Cthtd2*Spsid2 - Sphid2Sthtd2*Cpsid2;
|
|
|
|
|
|
|
|
CalcMatrices();
|
1999-02-05 21:26:01 +00:00
|
|
|
}
|
2000-04-24 23:49:06 +00:00
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
void FGState::CalcMatrices(void) {
|
2000-04-24 23:49:06 +00:00
|
|
|
float Q0Q0, Q1Q1, Q2Q2, Q3Q3;
|
|
|
|
float Q0Q1, Q0Q2, Q0Q3, Q1Q2;
|
|
|
|
float Q1Q3, Q2Q3;
|
|
|
|
|
|
|
|
Q0Q0 = vQtrn(1)*vQtrn(1);
|
|
|
|
Q1Q1 = vQtrn(2)*vQtrn(2);
|
|
|
|
Q2Q2 = vQtrn(3)*vQtrn(3);
|
|
|
|
Q3Q3 = vQtrn(4)*vQtrn(4);
|
|
|
|
Q0Q1 = vQtrn(1)*vQtrn(2);
|
|
|
|
Q0Q2 = vQtrn(1)*vQtrn(3);
|
|
|
|
Q0Q3 = vQtrn(1)*vQtrn(4);
|
|
|
|
Q1Q2 = vQtrn(2)*vQtrn(3);
|
|
|
|
Q1Q3 = vQtrn(2)*vQtrn(4);
|
|
|
|
Q2Q3 = vQtrn(3)*vQtrn(4);
|
|
|
|
|
2000-05-27 05:48:14 +00:00
|
|
|
mTl2b(1,1) = Q0Q0 + Q1Q1 - Q2Q2 - Q3Q3;
|
|
|
|
mTl2b(1,2) = 2*(Q1Q2 + Q0Q3);
|
|
|
|
mTl2b(1,3) = 2*(Q1Q3 - Q0Q2);
|
|
|
|
mTl2b(2,1) = 2*(Q1Q2 - Q0Q3);
|
|
|
|
mTl2b(2,2) = Q0Q0 - Q1Q1 + Q2Q2 - Q3Q3;
|
|
|
|
mTl2b(2,3) = 2*(Q2Q3 + Q0Q1);
|
|
|
|
mTl2b(3,1) = 2*(Q1Q3 + Q0Q2);
|
|
|
|
mTl2b(3,2) = 2*(Q2Q3 - Q0Q1);
|
|
|
|
mTl2b(3,3) = Q0Q0 - Q1Q1 - Q2Q2 + Q3Q3;
|
|
|
|
|
|
|
|
mTb2l = mTl2b;
|
|
|
|
mTb2l.T();
|
2000-04-24 23:49:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
void FGState::IntegrateQuat(FGColumnVector vPQR, int rate) {
|
2000-04-24 23:49:06 +00:00
|
|
|
static FGColumnVector vlastQdot(4);
|
|
|
|
static FGColumnVector vQdot(4);
|
|
|
|
|
|
|
|
vQdot(1) = -0.5*(vQtrn(2)*vPQR(eP) + vQtrn(3)*vPQR(eQ) + vQtrn(4)*vPQR(eR));
|
|
|
|
vQdot(2) = 0.5*(vQtrn(1)*vPQR(eP) + vQtrn(3)*vPQR(eR) - vQtrn(4)*vPQR(eQ));
|
|
|
|
vQdot(3) = 0.5*(vQtrn(1)*vPQR(eQ) + vQtrn(4)*vPQR(eP) - vQtrn(2)*vPQR(eR));
|
|
|
|
vQdot(4) = 0.5*(vQtrn(1)*vPQR(eR) + vQtrn(2)*vPQR(eQ) - vQtrn(3)*vPQR(eP));
|
|
|
|
|
|
|
|
vQtrn += 0.5*dt*rate*(vlastQdot + vQdot);
|
|
|
|
|
|
|
|
vQtrn.Normalize();
|
|
|
|
|
|
|
|
vlastQdot = vQdot;
|
|
|
|
}
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
FGColumnVector FGState::CalcEuler(void) {
|
2000-04-24 23:49:06 +00:00
|
|
|
static FGColumnVector vEuler(3);
|
|
|
|
|
2000-05-27 05:48:14 +00:00
|
|
|
if (mTl2b(3,3) == 0) vEuler(ePhi) = 0.0;
|
|
|
|
else vEuler(ePhi) = atan2(mTl2b(2,3), mTl2b(3,3));
|
2000-04-24 23:49:06 +00:00
|
|
|
|
2000-05-27 05:48:14 +00:00
|
|
|
vEuler(eTht) = asin(-mTl2b(1,3));
|
2000-04-24 23:49:06 +00:00
|
|
|
|
2000-05-27 05:48:14 +00:00
|
|
|
if (mTl2b(1,1) == 0.0) vEuler(ePsi) = 0.0;
|
|
|
|
else vEuler(ePsi) = atan2(mTl2b(1,2), mTl2b(1,1));
|
2000-04-24 23:49:06 +00:00
|
|
|
|
|
|
|
if (vEuler(ePsi) < 0.0) vEuler(ePsi) += 2*M_PI;
|
|
|
|
|
|
|
|
return vEuler;
|
|
|
|
}
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
Updates from the Jon and Tony show.
Tony submitted:
JSBsim:
Added trimming routine, it is longitudinal & in-air only at this point
Added support for taking wind & weather data from external source
Added support for flaps.
Added independently settable pitch trim
Added alphamin and max to config file, stall modeling and warning to
follow
c172.cfg:
Flaps!
Adjusted Cmo, model should be speed stable now
FG:
Hooked up Christian's weather code, should be using it soon.
Hooked up the trimming routine. Note that the X-15 will not trim.
This is not a model or trimming routine deficiency, just the
nature of the X-15
The trimming routine sets the pitch trim and and throttle at startup.
The throttle is set using Norman's code for the autothrottle so the
autothrottle is on by default. --notrim will turn it off.
Added --vc, --mach, and --notrim switches
(vc is airspeed in knots)
uBody, vBody, and wBody are still supported, last one entered
on the command line counts, i.e. you can set vc or mach or u,v,
and w but any combination will be ignored.
2000-05-16 21:35:11 +00:00
|
|
|
FGMatrix FGState::GetTs2b(float alpha, float beta) {
|
2000-04-24 23:49:06 +00:00
|
|
|
float ca, cb, sa, sb;
|
|
|
|
|
|
|
|
ca = cos(alpha);
|
|
|
|
sa = sin(alpha);
|
|
|
|
cb = cos(beta);
|
|
|
|
sb = sin(beta);
|
|
|
|
|
|
|
|
mTs2b(1,1) = -ca*cb;
|
|
|
|
mTs2b(1,2) = -ca*sb;
|
|
|
|
mTs2b(1,3) = sa;
|
2000-05-02 18:25:30 +00:00
|
|
|
mTs2b(2,1) = -sb;
|
2000-04-24 23:49:06 +00:00
|
|
|
mTs2b(2,2) = cb;
|
|
|
|
mTs2b(2,3) = 0.0;
|
|
|
|
mTs2b(3,1) = -sa*cb;
|
|
|
|
mTs2b(3,2) = -sa*sb;
|
|
|
|
mTs2b(3,3) = -ca;
|
|
|
|
|
|
|
|
return mTs2b;
|
|
|
|
}
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|