WSF
P6DofCommonController.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2017 Infoscitex, a DCS Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef P6DOFCOMMONCONTROLLER_H
13#define P6DOFCOMMONCONTROLLER_H
14
15#include "p6dof_export.h"
16
17#include <vector>
18
20#include "P6DofPID.hpp"
21#include "P6DofVehicleData.hpp"
22#include "UtCloneablePtr.hpp"
23#include "UtLLAPos.hpp"
24#include "UtTable.hpp"
25#include "UtVec3dX.hpp"
26
27class P6DofAtmosphere;
29class P6DofAutopilotWaypointUtility;
30class P6DofVehicle;
31class UtInput;
32class UtInputBlock;
33
34class P6DOF_EXPORT P6DofCommonController
35{
36public:
53
60
62 {
63 double turnLeadDist_m{0.0};
64 double aimHeading_rad{0.0};
65 double rangeTrack_m{0.0};
66 double rangeRate_mps{0.0};
67 double deltaAlt_m{0.0};
68 double vertSpeed_mps{0.0};
69 double commandedBank_rad{0.0};
70 bool executeTurn{false};
71 };
72
73 explicit P6DofCommonController(const std::string& aConfigFile);
74 explicit P6DofCommonController(UtInput& aInput, const std::string& aCommand);
75 virtual ~P6DofCommonController() = default;
76
78
80
82
83 void ReadSupportFile(const std::string& aFilename);
84
85 void Update(P6DofVehicle* aParentObject, P6DofKinematicState& aState, sAutopilotControls& aControls, double aDT);
86
87 // This is called each time step by P6DofPilotController. These PilotController passes these
88 // values can be integrated to determine deltaRoll, for example.
89 void AngleDeltas(double aYaw_rad, double aPitch_rad, double aRoll_rad);
90
91 // This is used to reset the integrated yaw angle for delta yaw commands
93
94 // This is used to reset the integrated pitch angle for delta yaw commands
96
97 // This is used to reset the integrated roll angle for delta yaw commands
99
100 // This is used to reset the integrated yaw and roll angles for delta yaw and roll commands
101 void ResetLateralDeltaAngles();
102
103 // This is used to reset the integrated yaw, pitch, and roll angles for delta yaw, pitch, and roll commands
104 void ResetAllDeltaAngles();
105
106 // This is used to reset accumulated PID data between evaluations
107 void ResetAccumulatedPidData();
108
109 // The autopilot uses a P6DofAutopilotAction pointer that points to memory that
110 // is created and managed/deleted externally.
112
113 // The autopilot uses a P6DofAutopilotAction pointer that points to memory that
114 // is created and managed/deleted externally.
115 void SetCurrentActivity(P6DofAutopilotAction* aAPActivity);
116
117 // This is used to "enable" taxi mode. When in taxi mode, the vehicle may use different
118 // controls. For example, a bank-to-turn aircraft will use rudder pedals to control
119 // left/right motion rather than the control stick to control roll left/right.
120 void SetTaxiMode(bool aTaxiModeActive);
121
122 // Returns true is taxi mode is active
123 bool GetTaxiMode() const;
124
125 // Returns true when the current waypoint has been achieved
127
128 // Returns various turn data parameters
129 void GetAutoPilotTurnData(double& aAimHeading_rad,
130 double& aStartTurnHdg_rad,
131 double& aTurnRadius_m,
132 double& aTurnAngle_rad,
133 double& aTurnRefPtLat,
134 double& aTurnRefPtLon,
135 bool& aTurnCW,
136 bool& aTurning,
137 double& aTurnCenterLat,
138 double& aTurnCenterLon);
139
140 // Returns true when the afterburner use is enabled
141 bool GetAfterburnerEnabled();
142
143 // Afterburner use is enabled by default, but can be enabled/disabled
144 void SetAfterburnerEnabled(bool aEnabled);
145
146 // Returns the afterburner threshold value
147 double GetAfterburnerThreshold();
148
149 // Afterburner will be used (if enabled) if command exceeds the threshold value
150 void SetAfterburnerThreshold(double aValue = 1.0);
151
152 // Returns true when the speed brake use is enabled
153 bool GetSpeedBrakeEnabled();
154
155 // Speed brake use is enabled by default, but can be enabled/disabled
156 void SetSpeedBrakeEnabled(bool aEnabled);
157
158 // Returns the speed brake threshold value
159 double GetSpeedBrakeThreshold();
160
161 // Speed brake will be used (if enabled) if command is less than the threshold value
162 void SetSpeedBrakeThreshold(double aValue = 0.0);
163
164 // Get PID data based on PID type. Returns true if data is valid.
165 bool GetAutopilotPidGainData(P6DOF::Pid::Type aTableType,
166 size_t& aNumElements,
167 P6DOF::PidGainData aPidGainData[],
168 unsigned char& aPidFlags);
169
170 // This provides a vector of all PID gain data
171 std::vector<P6DOF::PidGainData>* GetAutopilotPidGainData(P6DOF::Pid::Type aTableType, unsigned char& aPidFlags);
172
173 // Gets PID data from the specified AutopilotPidGroupValueData
174 void GetAutopilotPidValues(P6DOF::AutopilotPidGroupValueData* aData);
175
176 // This returns the type of control being used, such as variants of BankToTurn or YawToTurn
177 P6DOF::Control::Method GetControlMethod();
178
179 // These functions get/set the middle and outer loop rate factors
180
187
188 void SetVerticalMiddleLoopFactor(unsigned char aValue) { mVerticalMiddleLoopFactor = aValue; }
189 void SetLateralMiddleLoopFactor(unsigned char aValue) { mLateralMiddleLoopFactor = aValue; }
190 void SetSpeedMiddleLoopFactor(unsigned char aValue) { mSpeedMiddleLoopFactor = aValue; }
191 void SetVerticalOuterLoopFactor(unsigned char aValue) { mVerticalOuterLoopFactor = aValue; }
192 void SetLateralOuterLoopFactor(unsigned char aValue) { mLateralOuterLoopFactor = aValue; }
193 void SetSpeedOuterLoopFactor(unsigned char aValue) { mSpeedOuterLoopFactor = aValue; }
194
195 void SetPidGainData(P6DOF::Pid::Type aPidType, int aNumElements, P6DOF::PidGainData aPidGainData[], unsigned char aPidFlags);
196
197 bool AddNewPidGainElement(P6DOF::Pid::Type aTableType, P6DOF::PidGainData& aPidGainData);
198 bool SetPidGainKP(P6DOF::Pid::Type aTableType, float aControllingValue, float aGainValue);
199 bool SetPidGainKI(P6DOF::Pid::Type aTableType, float aControllingValue, float aGainValue);
200 bool SetPidGainKD(P6DOF::Pid::Type aTableType, float aControllingValue, float aGainValue);
201 bool SetPidMaxAccum(P6DOF::Pid::Type aTableType, float aControllingValue, float aMaxAccumValue);
202
203 // This reverts autopilot limits and settings to the default values
204 void RevertLimitsAndSettingsToDefaults();
205
206 // This sets the autopilot limits and settings
207 void SetCurrentLimitsAndSettings(P6DOF::AutopilotLimitsAndSettings& aData);
208
209 // This returns the current autopilot limits and settings
211
212 void SetCurrentMinPitchGLimit(double aMinPitchGLimit);
213 void SetCurrentMaxPitchGLimit(double aMaxPitchGLimit);
214 void SetCurrentMinAlphaLimit(double aMinAlphaLimit);
215 void SetCurrentMaxAlphaLimit(double aMaxAlphaLimit);
216 void SetCurrentMinPitchRateLimit(double aMinPitchRateLimit);
217 void SetCurrentMaxPitchRateLimit(double aMaxPitchRateLimit);
218 void SetCurrentMinVertSpeedLimit(double aMinVertSpeedLimit);
219 void SetCurrentMaxVertSpeedLimit(double aMaxVertSpeedLimit);
220 void SetCurrentMaxYawGLimit(double aMaxYawGLimit);
221 void SetCurrentMaxBetaLimit(double aMaxBetaLimit);
222 void SetCurrentMaxYawRateLimit(double aMaxYawRateLimit);
223 void SetCurrentMaxRollRateLimit(double aMaxRollRateLimit);
224 void SetCurrentMaxBankAngleLimit(double aMaxBankAngleLimit);
225 void SetCurrentMinForwardAccelLimit(double aMinForwardAccelLimit);
226 void SetCurrentMaxForwardAccelLimit(double aMaxForwardAccelLimit);
227 void SetCurrentMaxTaxiSpeedLimit(double aMaxTaxiSpeedLimit);
228 void SetCurrentMaxTaxiYawRateLimit(double aMaxTaxiYawRateLimit);
229 void SetCurrentTurnRollInMultiplier(double aValue); // Sets the current turn roll-in multiplier for autopilot turns
230 // when following waypoints
231 void SetRouteAllowableAngleError_rad(double aValue_rad); // Sets the current allowable angle error when flying routes
232
233 void SetControlAugmentationModeActive(bool aControlAugmentationIsActive)
234 {
235 mControlAugmentationModeActive = aControlAugmentationIsActive;
236 }
238
239 void SetPitchStabilityAugmentationModeActive(bool aPitchStabilityAugmentationIsActive)
240 {
241 mPitchStabilityAugmentationModeActive = aPitchStabilityAugmentationIsActive;
242 }
243 void SetYawStabilityAugmentationModeActive(bool aYawStabilityAugmentationIsActive)
244 {
245 mYawStabilityAugmentationModeActive = aYawStabilityAugmentationIsActive;
246 }
247 void SetRollStabilityAugmentationModeActive(bool aRollStabilityAugmentationIsActive)
248 {
249 mRollStabilityAugmentationModeActive = aRollStabilityAugmentationIsActive;
250 }
254
255 void SetDesiredTaxiRadius(double aTaxiRadius_ft);
256
260 double GetCurrentTurnRollInMultiplier(); // Returns the current turn roll-in multiplier for autopilot turns when
261 // following waypoints
262 double GetDefaultTurnRollInMultiplier(); // Returns the default turn roll-in multiplier for autopilot turns when
263 // following waypoints
264 double GetCurrentRouteAllowableAngleError_rad(); // Returns the current allowable angle error when flying routes
265 double GetDefaultRouteAllowableAngleError_rad(); // Returns the default allowable angle error when flying routes
266
267 // This provides the CLMax as a function of Mach. Returns true if data is valid.
268 bool GetCLMaxMach(double aMach, double& aCLMax) const;
269
270 // This provides the CLMin as a function of Mach. Returns true if data is valid.
271 bool GetCLMinMach(double aMach, double& aCLMin) const;
272
273 // This provides the AlphaMax as a function of Mach. Returns true if data is valid.
274 bool GetAlphaMaxMach(double aMach, double& aAlphaMax_deg) const;
275
276 // This provides the AlphaMin as a function of Mach. Returns true if data is valid.
277 bool GetAlphaMinMach(double aMach, double& aAlphaMin_deg) const;
278
279 // This provides the stickBack position to create a zero moment at the specified mach and alpha.
280 // Returns true if data is valid.
281 bool GetStickForZeroMomentVsMachAlpha(double aMach, double aAlpha_rad, double aThrottleSetting, double& aStickBack) const;
282
283 // This provides the effective CL at the specified mach and alpha. Returns true if data is valid.
284 bool GetEffectiveCLVsMachAlpha(double aMach, double aAlpha_rad, double& aCL) const;
285
286 // This provides the alpha (in degrees) for the specified mach and CL.
287 // It is helpful for determining the alpha for a desired g-load at a specified Mach.
288 // Returns true if data is valid.
289 bool GetAlphaVsMachCL(double aMach, double aCL, double& aAlpha_deg) const;
290
291 // If true, a simple yaw damper should be used
293
294protected:
296
297 void LoadConfigFile(const std::string& aFilename);
298 void ProcessInput(UtInput& aInput);
299 void ProcessInputCommand(UtInput& aInput, const std::string& aCommand);
300 void ProcessPidGroupInputBlock(UtInputBlock& aInputBlock, UtInput& aInput);
301
302 // This function processes the data for a single PID. It will provide an error warning if a
303 // mixture of tabular and scalar gain data is used.
304 void ProcessPidInputBlock(UtInputBlock& aInputBlock, UtInput& aInput, P6DofPID& aPID);
305
306 void ProcessPidGainTableBlock(UtInputBlock& aInputBlock,
307 P6DOF::PidGainData& aTableElement,
308 bool& aValidControllingValue,
309 bool& aValidKpGain,
310 bool& aValidKiGain,
311 bool& aValidKdGain,
312 bool& aValidMaxAccum,
313 bool& aValidMaxErrorZero,
314 bool& aValidMinErrorZero,
315 bool& aValidLowpassAlpha,
316 bool& aValidKtAntiWindup,
317 unsigned char& aPackedFlags);
318
319 void ProcessLimitsAndSettingsInputBlock(UtInputBlock& aInputBlock);
320
321 // This is the autopilot update function for bank-to-turn vehicles
322 void UpdateBankToTurn(sAutopilotControls& aControls, double aDT);
323
324 // This is the autopilot update function for bank-to-turn vehicles
325 void UpdateYawToTurn(sAutopilotControls& aControls, double aDT);
326
327 void EnforceControlLimits();
328 void EnforceSingleControlLimit(double& aValue, const double& aMinValue, const double& aMaxValue);
329
330 void ProcessLaternalNavChannelsBankToTurn(double aDT);
331 void ProcessVerticalNavChannelBankToTurn(double aDT);
332 void ProcessSpeedChannelBankToTurn(double aDT);
333
334 void ProcessLaternalNavChannelsYawToTurn(double aDT);
335 void ProcessVerticalNavChannelYawToTurn(double aDT);
336 void ProcessSpeedChannelYawToTurn(double aDT);
337
338 // Lateral modes ------------------------------------------------------------------
339
340 void ProcessLateralNavMode_RollWaypoint(double aDT);
341 void ProcessLateralNavMode_RollPoint(double aDT);
342 void ProcessLateralNavMode_RollHeading(double aDT);
343 void ProcessLateralNavMode_Bank(double aDT);
344 void ProcessLateralNavMode_DeltaRoll(double aDT);
345 void ProcessLateralNavMode_RollRate(double aDT);
346 void ProcessLateralNavMode_YawWaypoint(double aDT);
347 void ProcessLateralNavMode_YawPoint(double aDT);
348 void ProcessLateralNavMode_YawHeading(double aDT);
349 void ProcessLateralNavMode_YawRate(double aDT);
350 void ProcessLateralNavMode_YawGLoad(double aDT);
351 void ProcessLateralNavMode_Taxi_Waypoint(double aDT);
352 void ProcessLateralNavMode_Taxi_Heading(double aDT);
353 void ProcessLateralNavMode_Taxi_YawRate(double aDT);
354 void ProcessLateralNavMode_Beta(double aBeta);
355 void ProcessLateralNavMode_NoControl();
356 void ProcessLateralNavMode_NoRollControl();
357 void ProcessLateralNavMode_NoYawControl();
358
359 void CalcLateralNavMode_RollHeadingCore(double aHeading_deg, double aMaxBankAngle_rad, double aDT);
360 void ProcessStandardLateralNavMode_RollHeading(double aHeading_deg, double aDT);
361 void ProcessStandardLateralNavMode_WaypointRollHeading(double aHeading_deg, double aDT);
362 void ProcessStandardLateralNavMode_Bank(double aBankAngle_deg, double aDT);
363 void ProcessStandardLateralNavMode_RollRate(double aCommandedRollRate_dps, double aDT);
364
365 void ProcessStandardLateralNavMode_YawHeading(double aHeading_deg, double aDT);
366 void ProcessStandardLateralNavMode_YawRate(double aCommandedYawRate_dps, double aDT);
367 void ProcessStandardLateralNavMode_Beta(double aCommandedBeta_deg, double aDT);
368 void ProcessStandardLateralNavMode_TaxiHeading(double aHeading_deg, double aTurnRate_dps, double aDT);
369 void ProcessStandardLateralNavMode_TaxiYawRate(double aCommandedYawRate_dps, double aDT);
370
371 // Vertical modes -----------------------------------------------------------------
372
373 void ProcessVerticalNavMode_Waypoint(double aDT);
374 void ProcessVerticalNavMode_Altitude(double aDT);
375 void ProcessVerticalNavMode_VertSpeed(double aDT);
376 void ProcessVerticalNavMode_PitchGLoad(double aDT);
377 void ProcessVerticalNavMode_PitchAng(double aDT);
378 void ProcessVerticalNavMode_PitchRate(double aDT);
379 void ProcessVerticalNavMode_FltPathAng(double aDT);
380 void ProcessVerticalNavMode_DeltaPitch(double aDT);
381 void ProcessVerticalNavMode_Point(double aDT); // (Not yet implemented) TODO
382 void ProcessVerticalNavMode_Taxi(double aDT); // (Not yet implemented) TODO
383 void ProcessVerticalNavMode_NoControl(double aDT);
384 void ProcessVerticalNavMode_Alpha(double aDT);
385
386 void ProcessStandardVerticalNavMode_Altitude(double aAltitude_ft, double aDT);
387 void ProcessStandardVerticalNavMode_VertSpeed(double aCommandedVertSpeed_fpm, double aDT);
388 void ProcessStandardVerticalNavMode_Alpha(double aCommandedAlpha_deg, double aDT);
389
390 // Speed modes --------------------------------------------------------------------
391
392 double ProcessSpeedMode_Waypoint(double aDT);
393 double ProcessSpeedMode_ForwardAccel(double aDT);
394 double ProcessSpeedMode_KIAS(double aDT);
395 double ProcessSpeedMode_KTAS(double aDT);
396 double ProcessSpeedMode_Mach(double aDT);
397 double ProcessSpeedMode_FPS(double aDT);
398 double ProcessSpeedMode_Taxi_Waypoint(double aDT); // (Not yet implemented) TODO
399 double ProcessSpeedMode_Taxi_ForwardAccel(double aDT); // (Not yet implemented) TODO
400 double ProcessSpeedMode_Taxi_KIAS(double aDT); // (Not yet implemented) TODO
401 double ProcessSpeedMode_Taxi_KTAS(double aDT); // (Not yet implemented) TODO
402 double ProcessSpeedMode_NoControl();
403 double ProcessStandardSpeedMode_FPS(double aSpeed_fps, double aDT);
404 double ProcessStandardForwardAccel(double aForwardAccel_g, double aDT);
405 double ProcessStandardSpeedModeTaxi_FPS(double aSpeed_fps, double aDT);
406
407 // --------------------------------------------------------------------------------
408
409 P6DofPID* GetPID_ByType(P6DOF::Pid::Type aTableType);
410
411 // This returns the current target heading (deg) when using waypoints
412 double GetAimHeadingForWaypointNav_deg(double aDT);
413
414 // This returns the current aim heading (deg) and turn rate (deg/sec)
415 void GetAimHeadingAndTurnRateForTaxiWaypointNav_deg(double aDT, double& aAimHeading_deg, double& aTurnRate_dps);
416
417 // These functions are use for calculating taxi turn radius and turn rates (yaw rates)
418 double CalcTurnRateBasedOnTurnRadiusAndCurrentSpeed_dps(double aTurnRadius_ft);
419 double CalcTurnRadiusBasedOnTurnRateAndCurrentSpeed_ft(double aTurnRate_dps);
420
421 // This returns the current target heading (deg) to the current point
422 double GetAimHeadingForPoint_deg();
423
424 // This is used (internally) to calculate g-limits for both yaw and pitch using
425 // alpha/beta limits as well as the baseline g-limits
426 void CalcAlphaBetaGLimits();
427
428 void SetControllingValueForAllPIDs(double aControllingValue);
429
430 // This calculates the current g-bias in terms of g-load and alpha, considering
431 // the current pitch and roll angles.
432 void CalcGBiasData(double& aGBias_g, double& aGBiasAlpha_deg);
433
434 // The Autopilot uses a P6DofAutopilotActivity pointer that points to memory that
435 // is created and managed/deleted externally. This is the command to the autopilot.
437
438 // This is updated in the Update() function so that the state data can be easily
439 // used in other functions in this class
441
442 // This is the output controls from the autopilot
444
448
450
454
458
462
470
471 // PID Middle Loop Timings -- These indicate how many times the inner loop processes
472 // before the middle loop processes (typically 10, but could be 5-20)
476
477 // PID Outer Loop Timings -- These indicate how many times the middle loop processes
478 // before the outer loop processes (typically 5-10, but could be 2-20)
482
483 // These count how many times the inner loop processed since the last middle loop update
487
488 // These count how many times the middle loop processed since the last outer loop update
491 unsigned char mSpeedOuterLoopCount;
492
493 // These flags indicate if the outer loop should execute during the current frame
497
498 // These flags indicate if the middle loop should execute during the current frame
502
503 // This is the control method used by the vehicle/autopilot
505
507
516
537
540
542
546
548
552
557
560
563
564 UtCloneablePtr<UtTable::Curve> mCLMaxMachTablePtr;
565 UtCloneablePtr<UtTable::Curve> mCLMinMachTablePtr;
566 UtCloneablePtr<UtTable::Curve> mAlphaMaxMachTablePtr;
567 UtCloneablePtr<UtTable::Curve> mAlphaMinMachTablePtr;
568
569 UtCloneablePtr<UtTable::Table> mStickForZeroMomentVsMachAlphaTablePtr;
573
574 UtCloneablePtr<UtTable::Table> mEffectiveCLVsMachAlphaTablePtr;
575 UtCloneablePtr<UtTable::Table> mAlphaVsMachCLTablePtr;
576
578
580
581 bool mUseLegacyBeta = true;
582};
583
584#endif // P6DOFCOMMONCONTROLLER_H
aObjectPtr Update(simTime)
P6DofAtmosphere provides atmospheric data for Pseudo 6DOF objects.
Definition P6DofAtmosphere.hpp:28
Definition P6DofAutopilotAction.hpp:22
Definition P6DofCommonController.hpp:35
unsigned char mSpeedOuterLoopCount
Definition P6DofCommonController.hpp:491
unsigned char mLateralMiddleLoopCount
Definition P6DofCommonController.hpp:485
P6DofPID mAlphaPID
Definition P6DofCommonController.hpp:517
P6DofPID mRollHeadingPID
Definition P6DofCommonController.hpp:531
WaypointNavData mNavData
Definition P6DofCommonController.hpp:547
eAutopilotTurnDir
Definition P6DofCommonController.hpp:55
@ TD_RIGHT
Definition P6DofCommonController.hpp:58
@ TD_DEFAULT
Definition P6DofCommonController.hpp:56
@ TD_LEFT
Definition P6DofCommonController.hpp:57
double mLimitedMaxAlpha_deg
Definition P6DofCommonController.hpp:545
unsigned char GetVerticalOuterLoopFactor()
Definition P6DofCommonController.hpp:184
P6DofKinematicState mState
Definition P6DofCommonController.hpp:440
double mLastCommandedSpeed_fps
Definition P6DofCommonController.hpp:514
bool mTurnCW
Definition P6DofCommonController.hpp:455
unsigned char GetVerticalMiddleLoopFactor()
Definition P6DofCommonController.hpp:181
UtCloneablePtr< UtTable::Table > mAlphaVsMachCLTablePtr
Definition P6DofCommonController.hpp:575
double GetCurrentAlphaMin_deg()
Definition P6DofCommonController.hpp:258
bool mTurning
Definition P6DofCommonController.hpp:456
bool mRollStabilityAugmentationModeActive
Definition P6DofCommonController.hpp:556
unsigned char GetLateralOuterLoopFactor()
Definition P6DofCommonController.hpp:185
sAutopilotControls mControlOutputsP6Dof
Definition P6DofCommonController.hpp:443
P6DOF::Control::Method mControlMethod
Definition P6DofCommonController.hpp:504
UtCloneablePtr< UtTable::Table > mEffectiveCLVsMachAlphaTablePtr
Definition P6DofCommonController.hpp:574
bool PitchStabilityAugmentationModeIsActive()
Definition P6DofCommonController.hpp:251
double mAimHeading_rad
Definition P6DofCommonController.hpp:459
double mTurnAngle_rad
Definition P6DofCommonController.hpp:453
P6DofPID mTaxiForwardAccelPID
Definition P6DofCommonController.hpp:534
unsigned char mVerticalOuterLoopFactor
Definition P6DofCommonController.hpp:479
double mIntegratedDeltaRoll_deg
Definition P6DofCommonController.hpp:551
unsigned char mLateralOuterLoopFactor
Definition P6DofCommonController.hpp:480
P6DofCommonController(const std::string &aConfigFile)
Definition P6DofCommonController.cpp:31
double mExternalLftWheelBrakeControlValue
Definition P6DofCommonController.hpp:468
P6DofAutopilotAction * GetCurrentActivity() const
Definition P6DofCommonController.hpp:111
double mLastCommandedVertRate_fpm
Definition P6DofCommonController.hpp:508
double mCombinedWheelBraking
Definition P6DofCommonController.hpp:445
P6DofPID mPitchRatePID
Definition P6DofCommonController.hpp:520
unsigned char mSpeedMiddleLoopCount
Definition P6DofCommonController.hpp:486
unsigned char mLateralOuterLoopCount
Definition P6DofCommonController.hpp:490
bool YawStabilityAugmentationModeIsActive()
Definition P6DofCommonController.hpp:252
bool mYawStabilityAugmentationModeActive
Definition P6DofCommonController.hpp:555
P6DofPID mVertSpeedPID
Definition P6DofCommonController.hpp:518
UtCloneablePtr< UtTable::Curve > mAlphaMinMachTablePtr
Definition P6DofCommonController.hpp:567
void AngleDeltas(double aYaw_rad, double aPitch_rad, double aRoll_rad)
Definition P6DofCommonController.cpp:2831
void SetSpeedOuterLoopFactor(unsigned char aValue)
Definition P6DofCommonController.hpp:193
P6DofPID mDeltaPitchPID
Definition P6DofCommonController.hpp:522
double mMinimumTaxiTurnRadius_ft
Definition P6DofCommonController.hpp:558
double mIntegratedDeltaPitch_deg
Definition P6DofCommonController.hpp:550
double mExternalFlapsControlValue
Definition P6DofCommonController.hpp:464
void SetVerticalMiddleLoopFactor(unsigned char aValue)
Definition P6DofCommonController.hpp:188
P6DofPID mRollRatePID
Definition P6DofCommonController.hpp:528
P6DofPID mTaxiHeadingPID
Definition P6DofCommonController.hpp:527
bool mTaxiModeActive
Definition P6DofCommonController.hpp:541
P6DofPID mYawRatePID
Definition P6DofCommonController.hpp:525
double mIntegratedDeltaYaw_deg
Definition P6DofCommonController.hpp:549
bool mControlAugmentationModeActive
Definition P6DofCommonController.hpp:553
UtCloneablePtr< UtTable::Table > mStickForZeroMomentVsMachAlphaTablePtr
Definition P6DofCommonController.hpp:569
double mTurnCenterLat
Definition P6DofCommonController.hpp:460
void SetLateralMiddleLoopFactor(unsigned char aValue)
Definition P6DofCommonController.hpp:189
unsigned char GetSpeedMiddleLoopFactor()
Definition P6DofCommonController.hpp:183
UtCloneablePtr< UtTable::Table > mZcgDeltaStickForZeroMomentVsMachAlphaTablePtr
Definition P6DofCommonController.hpp:572
unsigned char GetSpeedOuterLoopFactor()
Definition P6DofCommonController.hpp:186
bool mExecuteLateralMiddleLoop
Definition P6DofCommonController.hpp:500
P6DofCommonController & operator=(const P6DofCommonController &other)=delete
void SetLateralOuterLoopFactor(unsigned char aValue)
Definition P6DofCommonController.hpp:192
bool mUseLegacyBeta
Definition P6DofCommonController.hpp:581
void SetSpeedMiddleLoopFactor(unsigned char aValue)
Definition P6DofCommonController.hpp:190
bool UseSimpleYawDamper() const
Definition P6DofCommonController.hpp:292
P6DofPID mForwardAccelPID
Definition P6DofCommonController.hpp:532
double mExternalRgtWheelBrakeControlValue
Definition P6DofCommonController.hpp:469
double mCurrentGBias_g
Definition P6DofCommonController.hpp:561
double mWheelBrakingRight
Definition P6DofCommonController.hpp:447
double GetCurrentBetaMax_deg()
Definition P6DofCommonController.hpp:259
P6DofPID mBetaPID
Definition P6DofCommonController.hpp:524
P6DofPID mYawHeadingPID
Definition P6DofCommonController.hpp:526
double mExternalSpeedBrakesControlValue
Definition P6DofCommonController.hpp:466
double GetCurrentAlphaMax_deg()
Definition P6DofCommonController.hpp:257
unsigned char mVerticalMiddleLoopFactor
Definition P6DofCommonController.hpp:473
P6DofPID mSpeedPID
Definition P6DofCommonController.hpp:533
void ReadSupportFile(const std::string &aFilename)
Definition P6DofCommonController.cpp:1119
void ResetDeltaYawAngle()
Definition P6DofCommonController.hpp:92
void SetRollStabilityAugmentationModeActive(bool aRollStabilityAugmentationIsActive)
Definition P6DofCommonController.hpp:247
bool mExecuteSpeedMiddleLoop
Definition P6DofCommonController.hpp:501
P6DOF::AutopilotLimitsAndSettings mDefaultLimitsAndSettings
Definition P6DofCommonController.hpp:538
double mLastCommandedRollRate_dps
Definition P6DofCommonController.hpp:513
double mExternalAfterburnerControlValue
Definition P6DofCommonController.hpp:467
bool RollStabilityAugmentationModeIsActive()
Definition P6DofCommonController.hpp:253
UtCloneablePtr< UtTable::Curve > mAlphaMaxMachTablePtr
Definition P6DofCommonController.hpp:566
bool mExecuteVerticalMiddleLoop
Definition P6DofCommonController.hpp:499
bool mExecuteVerticalOuterLoop
Definition P6DofCommonController.hpp:494
P6DofPID mBankAnglePID
Definition P6DofCommonController.hpp:530
P6DofCommonController * Clone() const
Definition P6DofCommonController.cpp:337
double mCurrentGBiasAlpha_deg
Definition P6DofCommonController.hpp:562
double mTurnRadius_m
Definition P6DofCommonController.hpp:452
void SetControlAugmentationModeActive(bool aControlAugmentationIsActive)
Definition P6DofCommonController.hpp:233
double mLastCommandedYawRate_dps
Definition P6DofCommonController.hpp:510
bool ControlAugmentationModeIsActive()
Definition P6DofCommonController.hpp:237
bool mExecuteSpeedOuterLoop
Definition P6DofCommonController.hpp:496
double mLastCommandedAlpha_deg
Definition P6DofCommonController.hpp:509
double mLimitedBeta_deg
Definition P6DofCommonController.hpp:543
P6DofAtmosphere * mAtmosphere
Definition P6DofCommonController.hpp:579
UtCloneablePtr< UtTable::Table > mThrustDeltaStickForZeroMomentVsMachAlphaTablePtr
Definition P6DofCommonController.hpp:570
double mExternalSpoilersControlValue
Definition P6DofCommonController.hpp:465
P6DofPID mTaxiSpeedPID
Definition P6DofCommonController.hpp:535
double mWheelBrakingLeft
Definition P6DofCommonController.hpp:446
virtual ~P6DofCommonController()=default
P6DofPID mAltitudePID
Definition P6DofCommonController.hpp:523
unsigned char mSpeedOuterLoopFactor
Definition P6DofCommonController.hpp:481
bool UseLegacyBetaControl()
Definition P6DofCommonController.hpp:77
bool mExecuteLateralOuterLoop
Definition P6DofCommonController.hpp:495
void SetVerticalOuterLoopFactor(unsigned char aValue)
Definition P6DofCommonController.hpp:191
unsigned char mVerticalOuterLoopCount
Definition P6DofCommonController.hpp:489
P6DofPID mFltpathAnglePID
Definition P6DofCommonController.hpp:521
bool mUseSimpleYawDamper
Definition P6DofCommonController.hpp:577
bool GetWaypointAchieved()
Definition P6DofCommonController.hpp:126
double mLastCommandedBeta_deg
Definition P6DofCommonController.hpp:511
bool mPitchStabilityAugmentationModeActive
Definition P6DofCommonController.hpp:554
double mExternalGearControlValue
Definition P6DofCommonController.hpp:463
P6DofPID mTaxiYawRatePID
Definition P6DofCommonController.hpp:536
void ResetDeltaRollAngle()
Definition P6DofCommonController.hpp:98
unsigned char mLateralMiddleLoopFactor
Definition P6DofCommonController.hpp:474
UtCloneablePtr< UtTable::Curve > mCLMinMachTablePtr
Definition P6DofCommonController.hpp:565
UtLLAPos mTurnRefPoint
Definition P6DofCommonController.hpp:457
void SetYawStabilityAugmentationModeActive(bool aYawStabilityAugmentationIsActive)
Definition P6DofCommonController.hpp:243
double mTurnCenterLon
Definition P6DofCommonController.hpp:461
double mLimitedMinAlpha_deg
Definition P6DofCommonController.hpp:544
unsigned char mVerticalMiddleLoopCount
Definition P6DofCommonController.hpp:484
double mLastCommandedForwardAccel_g
Definition P6DofCommonController.hpp:515
P6DOF::AutopilotLimitsAndSettings mCurrentLimitsAndSettings
Definition P6DofCommonController.hpp:539
double mLastComandedBankAngle_deg
Definition P6DofCommonController.hpp:512
P6DofPID mPitchAnglePID
Definition P6DofCommonController.hpp:519
const P6DOF::AutopilotLimitsAndSettings & GetCurrentLimitsAndSettings() const
Definition P6DofCommonController.hpp:210
double mDesiredTaxiTurnRadius_ft
Definition P6DofCommonController.hpp:559
P6DofVehicle * mParentObjectPtr
Definition P6DofCommonController.hpp:506
P6DofPID mDeltaRollPID
Definition P6DofCommonController.hpp:529
void SetPitchStabilityAugmentationModeActive(bool aPitchStabilityAugmentationIsActive)
Definition P6DofCommonController.hpp:239
bool mAchievedWaypoint
Definition P6DofCommonController.hpp:449
unsigned char mSpeedMiddleLoopFactor
Definition P6DofCommonController.hpp:475
void ResetDeltaPitchAngle()
Definition P6DofCommonController.hpp:95
double mStartTurnHdg_rad
Definition P6DofCommonController.hpp:451
P6DofAutopilotAction * mCurrentActivityPtr
Definition P6DofCommonController.hpp:436
unsigned char GetLateralMiddleLoopFactor()
Definition P6DofCommonController.hpp:182
UtCloneablePtr< UtTable::Curve > mCLMaxMachTablePtr
Definition P6DofCommonController.hpp:564
UtCloneablePtr< UtTable::Table > mXcgDeltaStickForZeroMomentVsMachAlphaTablePtr
Definition P6DofCommonController.hpp:571
Definition P6DofKinematicState.hpp:31
Definition P6DofPID.hpp:33
Definition P6DofVehicle.hpp:53
Method
Definition P6DofVehicleData.hpp:352
Type
Definition P6DofVehicleData.hpp:182
Definition P6DofVehicleData.hpp:245
Definition P6DofVehicleData.hpp:220
Definition P6DofVehicleData.hpp:112
Definition P6DofCommonController.hpp:62
double commandedBank_rad
Definition P6DofCommonController.hpp:69
double rangeRate_mps
Definition P6DofCommonController.hpp:66
double turnLeadDist_m
Definition P6DofCommonController.hpp:63
bool executeTurn
Definition P6DofCommonController.hpp:70
double rangeTrack_m
Definition P6DofCommonController.hpp:65
double vertSpeed_mps
Definition P6DofCommonController.hpp:68
double aimHeading_rad
Definition P6DofCommonController.hpp:64
double deltaAlt_m
Definition P6DofCommonController.hpp:67
Definition P6DofCommonController.hpp:38
double wheelBrakeLeft
Definition P6DofCommonController.hpp:50
double thrustVectorYaw
Definition P6DofCommonController.hpp:44
double speedBrake
Definition P6DofCommonController.hpp:47
double rudderRight
Definition P6DofCommonController.hpp:41
double thrustVectorRoll
Definition P6DofCommonController.hpp:46
double noseWheelSteering
Definition P6DofCommonController.hpp:48
double stickRight
Definition P6DofCommonController.hpp:40
double throttleAfterburner
Definition P6DofCommonController.hpp:43
double stickBack
Definition P6DofCommonController.hpp:39
double thrustVectorPitch
Definition P6DofCommonController.hpp:45
double nwsSteering
Definition P6DofCommonController.hpp:49
double wheelBrakeRight
Definition P6DofCommonController.hpp:51
double throttleMilitary
Definition P6DofCommonController.hpp:42
Copyrights Multiple, All Rights Reserved