%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "models/propulsion/FGForce.h"
+#include "models/FGPropagate.h"
#include "math/FGColumnVector3.h"
#include <string>
DEFINITIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#define ID_LGEAR "$Id$"
+#define ID_LGEAR "$Id: FGLGear.h,v 1.41 2010/09/22 11:33:40 jberndt Exp $"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS
class FGAircraft;
class FGPropagate;
class FGFCS;
-class FGState;
class FGMassBalance;
class FGAuxiliary;
class FGTable;
<h3>Operational Properties</h3>
<ol>
<li>Name</li>
- <li>Steerability attribute {one of STEERABLE | FIXED | CASTERED}</li>
<li>Brake Group Membership {one of LEFT | CENTER | RIGHT | NOSE | TAIL | NONE}</li>
<li>Max Steer Angle, in degrees</li>
</ol></p>
<y> {number} </y>
<z> {number} </z>
</location>
+ <orientation unit="{RAD | DEG}">
+ <pitch> {number} </pitch>
+ <roll> {number} </roll>
+ <yaw> {number} </yaw>
+ </orientation>
<static_friction> {number} </static_friction>
<dynamic_friction> {number} </dynamic_friction>
<rolling_friction> {number} </rolling_friction>
<spring_coeff unit="{LBS/FT | N/M}"> {number} </spring_coeff>
- <damping_coeff unit="{LBS/FT/SEC | N/M/SEC}"> {number} </damping_coeff>
- <damping_coeff_rebound unit="{LBS/FT/SEC | N/M/SEC}"> {number} </damping_coeff_rebound>
+ <damping_coeff [type="SQUARE"] unit="{LBS/FT/SEC | N/M/SEC}"> {number} </damping_coeff>
+ <damping_coeff_rebound [type="SQUARE"] unit="{LBS/FT/SEC | N/M/SEC}"> {number} </damping_coeff_rebound>
<max_steer unit="DEG"> {number | 0 | 360} </max_steer>
<brake_group> {NONE | LEFT | RIGHT | CENTER | NOSE | TAIL} </brake_group>
<retractable>{0 | 1}</retractable>
<table type="{CORNERING_COEFF}">
</table>
- <relaxation_velocity>
- <rolling unit="{FT/SEC | KTS | M/S}"> {number} </rolling>
- <side unit="{FT/SEC | KTS | M/S}"> {number} </side>
- </relaxation_velocity>
- <force_lag_filter>
- <rolling> {number} </rolling>
- <side> {number} </side>
- </force_lag_filter>
- <wheel_slip_filter> {number} </wheel_slip_filter>
</contact>
@endcode
@author Jon S. Berndt
- @version $Id$
+ @version $Id: FGLGear.h,v 1.41 2010/09/22 11:33:40 jberndt Exp $
@see Richard E. McFarland, "A Standard Kinematic Model for Flight Simulation at
NASA-Ames", NASA CR-2497, January 1975
@see Barnes W. McCormick, "Aerodynamics, Aeronautics, and Flight Mechanics",
enum ReportType {erNone=0, erTakeoff, erLand};
/// Damping types
enum DampType {dtLinear=0, dtSquare};
+ /// Friction types
+ enum FrictionType {ftRoll=0, ftSide, ftDynamic};
/** Constructor
@param el a pointer to the XML element that contains the CONTACT info.
@param Executive a pointer to the parent executive object
double GetWheelVel(int axis) const { return vWhlVelVec(axis);}
bool IsBogey(void) const { return (eContactType == ctBOGEY);}
double GetGearUnitPos(void);
+ double GetSteerAngleDeg(void) const { return radtodeg*SteerAngle; }
+ FGPropagate::LagrangeMultiplier* GetMultiplierEntry(int entry);
+ void SetLagrangeMultiplier(double lambda, int entry);
+ FGColumnVector3& UpdateForces(void);
void bind(void);
bool isRetractable;
bool GearUp, GearDown;
bool Servicable;
+ bool Castered;
+ bool StaticFriction;
std::string name;
std::string sSteerType;
std::string sBrakeGroup;
DampType eDampType;
DampType eDampTypeRebound;
double maxSteerAngle;
- double RFRV; // Rolling force relaxation velocity
- double SFRV; // Side force relaxation velocity
- double LongForceLagFilterCoeff; // Longitudinal Force Lag Filter Coefficient
- double LatForceLagFilterCoeff; // Lateral Force Lag Filter Coefficient
- double WheelSlipLagFilterCoeff; // Wheel slip angle lag filter coefficient
-
- Filter LongForceFilter;
- Filter LatForceFilter;
- Filter WheelSlipFilter;
-
- FGState* State;
- FGAircraft* Aircraft;
- FGPropagate* Propagate;
- FGAuxiliary* Auxiliary;
- FGFCS* FCS;
- FGMassBalance* MassBalance;
+
+ FGPropagate::LagrangeMultiplier LMultiplier[3];
+
+ FGAuxiliary* Auxiliary;
+ FGPropagate* Propagate;
+ FGFCS* FCS;
+ FGMassBalance* MassBalance;
+ FGGroundReactions* GroundReactions;
void ComputeRetractionState(void);
void ComputeBrakeForceCoefficient(void);
void ComputeSideForceCoefficient(void);
void ComputeVerticalStrutForce(void);
void ComputeGroundCoordSys(void);
+ void ComputeJacobian(const FGColumnVector3& vWhlContactVec);
void CrashDetect(void);
void InitializeReporting(void);
void ResetReporting(void);