]> git.mxchange.org Git - flightgear.git/commitdiff
Latest JSBSim changes, mostly to support yaw and roll trim.
authordavid <david>
Mon, 17 Dec 2001 15:36:20 +0000 (15:36 +0000)
committerdavid <david>
Mon, 17 Dec 2001 15:36:20 +0000 (15:36 +0000)
src/FDM/JSBSim.cxx
src/FDM/JSBSim/FGAerodynamics.cpp
src/FDM/JSBSim/FGAerodynamics.h
src/FDM/JSBSim/FGCoefficient.cpp
src/FDM/JSBSim/FGCoefficient.h
src/FDM/JSBSim/FGFCS.h

index 332e6c97a787d5474464cc2f23014e33e72756df..b869f3e74d79131f10de9f687199181c3c3efa1a 100644 (file)
@@ -317,11 +317,11 @@ bool FGJSBsim::copy_to_JSBsim() {
     // copy control positions into the JSBsim structure
 
     FCS->SetDaCmd( globals->get_controls()->get_aileron());
-    FCS->SetRollTrimCmd(globals->get_controls()->get_aileron_trim());
+    FCS->SetRollTrimCmd( globals->get_controls()->get_aileron_trim() );
     FCS->SetDeCmd( globals->get_controls()->get_elevator());
-    FCS->SetPitchTrimCmd(globals->get_controls()->get_elevator_trim());
-    FCS->SetDrCmd( -globals->get_controls()->get_rudder());
-    FCS->SetYawTrimCmd(globals->get_controls()->get_rudder_trim());
+    FCS->SetPitchTrimCmd( globals->get_controls()->get_elevator_trim() );
+    FCS->SetDrCmd( -globals->get_controls()->get_rudder() );
+    FCS->SetYawTrimCmd( -globals->get_controls()->get_rudder_trim() );
     FCS->SetDfCmd(  globals->get_controls()->get_flaps() );
     FCS->SetDsbCmd( 0.0 ); //speedbrakes
     FCS->SetDspCmd( 0.0 ); //spoilers
index ac33907bd6fc052145ae4956fccb57f8bceaa081..c721709541cf9a003ad5d1fb20a710fd8c4146a8 100644 (file)
@@ -138,9 +138,11 @@ bool FGAerodynamics::Load(FGConfigFile* AC_cfg)
         if( token == "COEFFICIENT" ) {
           ca.push_back( new FGCoefficient(FDMExec) );
           ca.back()->Load(AC_cfg);
+          cm[ca.back()->Getname()]=ca.back();
         } else if ( token == "GROUP" ) {
           ca.push_back( new FGFactorGroup(FDMExec) );
           ca.back()->Load(AC_cfg);
+          cm[ca.back()->Getname()]=ca.back();
         }
       }
       Coeff[AxisIdx[axis]] = ca;
index d70f8145e3bcb5f8cd382bebd81545b325d73ab9..55905a57fbc2f21c8e3f41ccb173d2b48116e027 100644 (file)
@@ -133,6 +133,8 @@ public:
       @return a string containing the numeric values for the current set of
       coefficients */
   string GetCoefficientValues(void);
+  
+  inline FGCoefficient* GetCoefficient(string name) { return cm[name]; }
 
 
 private:
@@ -140,6 +142,8 @@ private:
   AxisIndex AxisIdx;
   typedef vector<FGCoefficient*> CoeffArray;
   CoeffArray* Coeff;
+  typedef map<string,FGCoefficient*> CoeffMap;
+  CoeffMap cm;
   FGColumnVector3 vFs;
   FGColumnVector3 vForces;
   FGColumnVector3 vMoments;
index c7c2d06e29f1d38a39a98b0385f4f2f21844fee4..6838d86f08eae8280fd0564b8b0ee19439578c04 100644 (file)
@@ -71,6 +71,9 @@ FGCoefficient::FGCoefficient( FGFDMExec* fdex )
   FDMExec = fdex;
   State   = FDMExec->GetState();
   Table   = 0;
+  
+  bias=0;
+  gain=1;
 
   if (debug_lvl & 2) cout << "Instantiated: FGCoefficient" << endl;
 }
@@ -151,7 +154,7 @@ bool FGCoefficient::Load(FGConfigFile *AC_cfg)
     }
 
     AC_cfg->GetNextConfigLine();
-    Debug(2);
+    FGCoefficient::Debug(2);
 
     return true;
   } else {
@@ -168,7 +171,8 @@ double FGCoefficient::Value(double rVal, double cVal)
   double Value;
   unsigned int midx;
 
-  SD = Value = Table->GetValue(rVal, cVal);
+  SD = Value = gain*Table->GetValue(rVal, cVal) + bias;
+  
 
   for (midx=0; midx < multipliers.size(); midx++) {
       Value *= State->GetParameter(multipliers[midx]);
@@ -182,7 +186,7 @@ double FGCoefficient::Value(double Val)
 {
   double Value;
 
-  SD = Value = Table->GetValue(Val);
+  SD = Value = gain*Table->GetValue(Val) + bias;
   
   for (unsigned int midx=0; midx < multipliers.size(); midx++) 
       Value *= State->GetParameter(multipliers[midx]);
@@ -196,7 +200,7 @@ double FGCoefficient::Value(void)
 {
        double Value;
 
-  SD = Value = StaticValue;
+  SD = Value = gain*StaticValue + bias;
 
   for (unsigned int midx=0; midx < multipliers.size(); midx++)
     Value *= State->GetParameter(multipliers[midx]);
@@ -283,6 +287,7 @@ void FGCoefficient::Debug(int from)
   if (debug_lvl <= 0) return;
 
   if (debug_lvl & 1) { // Standard console startup message output
+    
     if (from == 2) { // Loading
       cout << "\n   " << highint << underon << name << underoff << normint << endl;
       cout << "   " << description << endl;
index 0c1e1c951bcb394e01bac6ba8f94c2964d35f43a..7c7083d0b2225ee2d7b740e474a95d855da4fdd2 100644 (file)
@@ -117,6 +117,11 @@ public:
   virtual void DisplayCoeffFactors(void);
   virtual inline string GetCoefficientStrings(void) { return name; }
   virtual string GetCoefficientValues(void);
+  
+  inline void setBias(double b) { bias=b; }
+  inline void setGain(double g) { gain=g; };
+  inline double getBias(void) { return bias; }
+  inline double getGain(void) { return gain; }
 
 private:
   enum Type {UNKNOWN, VALUE, VECTOR, TABLE, EQUATION};
@@ -133,6 +138,7 @@ private:
   double Value(double);
   double Value(void);
   double StaticValue;
+  double bias,gain;
   eParam LookupR, LookupC;
   MultVec multipliers;
   int rows, columns;
index 44e9843b262ff6f710ddef37b00968f3a6ad9fe8..112705271ab1d15c2a9251fa1cc5fcd723a53d7c 100644 (file)
@@ -170,27 +170,27 @@ public:
   /// @name Pilot input command retrieval
   //@{
   /** Gets the aileron command.
-      @return aileron command in radians */
+      @return aileron command in percent */
   inline double GetDaCmd(void) { return DaCmd; }
 
   /** Gets the elevator command.
-      @return elevator command in radians */
+      @return elevator command in percent */
   inline double GetDeCmd(void) { return DeCmd; }
 
   /** Gets the rudder command.
-      @return rudder command in radians */
+      @return rudder command in percent */
   inline double GetDrCmd(void) { return DrCmd; }
 
   /** Gets the flaps command.
-      @return flaps command in radians */
+      @return flaps command in percent */
   inline double GetDfCmd(void) { return DfCmd; }
 
   /** Gets the speedbrake command.
-      @return speedbrake command in radians */
+      @return speedbrake command in percent */
   inline double GetDsbCmd(void) { return DsbCmd; }
 
   /** Gets the spoiler command.
-      @return spoiler command in radians */
+      @return spoiler command in percent */
   inline double GetDspCmd(void) { return DspCmd; }
 
   /** Gets the throttle command.
@@ -209,15 +209,15 @@ public:
   inline double GetPropAdvanceCmd(int engine) { return PropAdvanceCmd[engine]; }
 
   /** Gets the pitch trim command.
-      @return pitch trim command in radians */
+      @return pitch trim command in percent */
   inline double GetPitchTrimCmd(void) { return PTrimCmd; }
   
   /** Gets the rudder trim command.
-      @return rudder trim command in radians */
+      @return rudder trim command in percent */
   inline double GetYawTrimCmd(void) { return YTrimCmd; }
   
   /** Gets the aileron trim command.
-      @return aileron trim command in radians */
+      @return aileron trim command in percent */
   inline double GetRollTrimCmd(void) { return RTrimCmd; }
   
   /** Get the gear extend/retract command. 0 commands gear up, 1 down.
@@ -296,39 +296,39 @@ public:
   /// @name Pilot input command setting
   //@{
   /** Sets the aileron command
-      @param cmd aileron command in radians*/
+      @param cmd aileron command in percent*/
   inline void SetDaCmd(double cmd) { DaCmd = cmd; }
 
   /** Sets the elevator command
-      @param cmd elevator command in radians*/
+      @param cmd elevator command in percent*/
   inline void SetDeCmd(double cmd) { DeCmd = cmd; }
 
   /** Sets the rudder command
-      @param cmd rudder command in radians*/
+      @param cmd rudder command in percent*/
   inline void SetDrCmd(double cmd) { DrCmd = cmd; }
 
   /** Sets the flaps command
-      @param cmd flaps command in radians*/
+      @param cmd flaps command in percent*/
   inline void SetDfCmd(double cmd) { DfCmd = cmd; }
 
   /** Sets the speedbrake command
-      @param cmd speedbrake command in radians*/
+      @param cmd speedbrake command in percent*/
   inline void SetDsbCmd(double cmd) { DsbCmd = cmd; }
 
   /** Sets the spoilers command
-      @param cmd spoilers command in radians*/
+      @param cmd spoilers command in percent*/
   inline void SetDspCmd(double cmd) { DspCmd = cmd; }
 
   /** Sets the pitch trim command
-      @param cmd pitch trim command in radians*/
+      @param cmd pitch trim command in percent*/
   inline void SetPitchTrimCmd(double cmd) { PTrimCmd = cmd; }
 
   /** Sets the rudder trim command
-      @param cmd rudder trim command in radians*/
+      @param cmd rudder trim command in percent*/
   inline void SetYawTrimCmd(double cmd) { YTrimCmd = cmd; }
 
   /** Sets the aileron trim command
-      @param cmd aileron trim command in radians*/
+      @param cmd aileron trim command in percent*/
   inline void SetRollTrimCmd(double cmd) { RTrimCmd = cmd; }
 
   /** Sets the throttle command for the specified engine