From: tony Date: Tue, 26 Feb 2002 22:28:41 +0000 (+0000) Subject: Trimming in turn now works X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=51587dbe75e001e3a8f9e4e557b3ce0301c4c17b;p=flightgear.git Trimming in turn now works --- diff --git a/src/FDM/JSBSim/FGAircraft.cpp b/src/FDM/JSBSim/FGAircraft.cpp index 6f61c7298..20dd46854 100644 --- a/src/FDM/JSBSim/FGAircraft.cpp +++ b/src/FDM/JSBSim/FGAircraft.cpp @@ -158,7 +158,7 @@ bool FGAircraft::Run(void) float FGAircraft::GetNlf(void) { - return vNwcg(3); + return -1*Aerodynamics->GetvFs(3)/MassBalance->GetWeight(); } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/FDM/JSBSim/FGState.cpp b/src/FDM/JSBSim/FGState.cpp index 148ac74cd..5d891c6f0 100644 --- a/src/FDM/JSBSim/FGState.cpp +++ b/src/FDM/JSBSim/FGState.cpp @@ -832,12 +832,14 @@ void FGState::ReportState(void) { Aircraft->GetNlf(), GetParameter(FG_PITCHRATE)*radtodeg ); cout << out; - snprintf(out,80, " Heading: %3.0f deg true Sideslip: %5.2f deg\n", + snprintf(out,80, " Heading: %3.0f deg true Sideslip: %5.2f deg Yaw Rate: %5.2f deg/s\n", Rotation->Getpsi()*radtodeg, - GetParameter(FG_BETA)*radtodeg ); + GetParameter(FG_BETA)*radtodeg, + Rotation->GetPQR(3)*radtodeg ); cout << out; - snprintf(out,80, " Bank Angle: %5.2f deg\n", - Rotation->Getphi()*radtodeg ); + snprintf(out,80, " Bank Angle: %5.2f deg Roll Rate: %5.2f deg/s\n", + Rotation->Getphi()*radtodeg, + Rotation->GetPQR(1)*radtodeg ); cout << out; snprintf(out,80, " Elevator: %5.2f deg Left Aileron: %5.2f deg Rudder: %5.2f deg\n", GetParameter(FG_ELEVATOR_POS)*radtodeg, diff --git a/src/FDM/JSBSim/FGTrim.cpp b/src/FDM/JSBSim/FGTrim.cpp index 1e36a1abd..c3adc62c2 100644 --- a/src/FDM/JSBSim/FGTrim.cpp +++ b/src/FDM/JSBSim/FGTrim.cpp @@ -118,9 +118,9 @@ FGTrim::FGTrim(FGFDMExec *FDMExec,FGInitialCondition *FGIC, TrimMode tt ) { TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tWdot,tAlpha )); TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tUdot,tThrottle )); TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tQdot,tPitchTrim )); - //TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tVdot,tBeta )); - //TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tPdot,tAileron )); - //TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tRdot,tRudder )); + TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tVdot,tBeta )); + TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tPdot,tAileron )); + TrimAxes.push_back(new FGTrimAxis(fdmex,fgic,tRdot,tRudder )); break; case tCustom: case tNone: @@ -605,19 +605,22 @@ void FGTrim::setupPullup() { void FGTrim::setupTurn(void){ double g,phi; phi = fgic->GetRollAngleRadIC(); - if( fabs(phi) > 0.01 && fabs(phi) < 1.56 ) { + if( fabs(phi) > 0.001 && fabs(phi) < 1.56 ) { targetNlf = 1 / cos(phi); g = fdmex->GetInertial()->gravity(); - psidot = g*tan(phi) / fgic->GetVtrueFpsIC(); + psidot = g*tan(phi) / fgic->GetUBodyFpsIC(); cout << targetNlf << ", " << psidot << endl; } } void FGTrim::updateRates(void){ - if(mode == tTurn) { + double phi = fgic->GetRollAngleRadIC(); + double g = fdmex->GetInertial()->gravity(); + if(fabs(phi) > 0.001 && fabs(phi) < 1.56 ) { double p,q,r,theta,phi; theta=fgic->GetPitchAngleRadIC(); phi=fgic->GetRollAngleRadIC(); + psidot = g*tan(phi) / fgic->GetUBodyFpsIC(); p=-psidot*sin(theta); q=psidot*cos(theta)*sin(phi); r=psidot*cos(theta)*cos(phi);