12#ifndef WSFPOINTMASSSIXDOFFLIGHTCONTROLSYSTEM_HPP
13#define WSFPOINTMASSSIXDOFFLIGHTCONTROLSYSTEM_HPP
15#include "wsf_six_dof_export.h"
21#include "UtCloneablePtr.hpp"
57 void Update(int64_t aSimTime_nanosec);
61 mLastUpdateSimTime_nanosec = aLastUpdateSimTime_nanosec;
77 if (mStickRightCurvePtr !=
nullptr)
79 return mStickRightCurvePtr->Lookup(mStickRight);
87 if (mStickBackCurvePtr !=
nullptr)
89 return mStickBackCurvePtr->Lookup(mStickBack);
97 if (mRudderRightCurvePtr !=
nullptr)
99 return mRudderRightCurvePtr->Lookup(mRudderRight);
120 return FindControlPositionForRotationCommand(aPitchRate_rps, *mStickBackCurvePtr);
125 return FindControlPositionForRotationCommand(aRollRate_rps, *mStickRightCurvePtr);
130 return FindControlPositionForRotationCommand(aYawRate_rps, *mRudderRightCurvePtr);
137 double LinearInterpolation(
double aX,
double aX0,
double aX1,
double aY0,
double aY1)
139 return aY0 + (aX - aX0) * (aY1 - aY0) / (aX1 - aX0);
142 double FindControlPositionForRotationCommand(
double aOmegaCommand, UtTable::Curve aControlCurve);
144 PointMassPilotObject* mPointMassSixDOF_PilotObjectPtr =
nullptr;
145 PointMassPilotManager* mPointMassSixDOF_PilotManager =
nullptr;
147 int64_t mLastUpdateSimTime_nanosec = 0;
149 UtCloneablePtr<UtTable::Curve> mStickBackCurvePtr{
151 UtCloneablePtr<UtTable::Curve> mStickRightCurvePtr{
153 UtCloneablePtr<UtTable::Curve> mRudderRightCurvePtr{
156 double mStickBack = 0.0;
157 double mStickRight = 0.0;
158 double mRudderRight = 0.0;
159 double mThrottleMil = 0.0;
160 double mThrottleAb = 0.0;
162 PointMassControlActuator mFlaps = PointMassControlActuator(
this);
163 PointMassControlActuator mSpeedbrakes = PointMassControlActuator(
this);
164 PointMassControlActuator mSpoilers = PointMassControlActuator(
this);
aObjectPtr Update(simTime)
Definition WsfPointMassSixDOF_FlightControlSystem.hpp:44
double FindRudderRightForYawCommand(double aYawRate_rps)
Definition WsfPointMassSixDOF_FlightControlSystem.hpp:128
bool Initialize(int64_t aSimTime_nanosec)
Definition WsfPointMassSixDOF_FlightControlSystem.cpp:179
double GetSpoilersPosition()
Definition WsfPointMassSixDOF_FlightControlSystem.hpp:112
double GetPitchRateCommand_dps()
Definition WsfPointMassSixDOF_FlightControlSystem.hpp:85
const double * GetThrottleAbPtr() const
Definition WsfPointMassSixDOF_FlightControlSystem.hpp:73
double FindStickBackForPitchCommand(double aPitchRate_rps)
Definition WsfPointMassSixDOF_FlightControlSystem.hpp:118
PointMassFlightControlSystem()=default
double GetRollRateCommand_dps()
Definition WsfPointMassSixDOF_FlightControlSystem.hpp:75
double FindStickRightForRollCommand(double aRollRate_rps)
Definition WsfPointMassSixDOF_FlightControlSystem.hpp:123
PointMassFlightControlSystem * Clone() const
Definition WsfPointMassSixDOF_FlightControlSystem.cpp:101
double GetSpeedbrakesPosition()
Definition WsfPointMassSixDOF_FlightControlSystem.hpp:114
bool ProcessInput(UtInput &aInput)
Definition WsfPointMassSixDOF_FlightControlSystem.cpp:106
double GetFlapsPosition()
Definition WsfPointMassSixDOF_FlightControlSystem.hpp:110
UtVec3dX GetBodyRateCommands_dps()
Definition WsfPointMassSixDOF_FlightControlSystem.hpp:105
double GetYawRateCommand_dps()
Definition WsfPointMassSixDOF_FlightControlSystem.hpp:95
PointMassFlightControlSystem & operator=(const PointMassFlightControlSystem &other)=delete
void SetLastUpdateSimTime(int64_t aLastUpdateSimTime_nanosec)
Definition WsfPointMassSixDOF_FlightControlSystem.hpp:59
const double * GetThrottleMilPtr() const
Definition WsfPointMassSixDOF_FlightControlSystem.hpp:72
Definition WsfPointMassSixDOF_PilotManager.hpp:31
Definition WsfPointMassSixDOF_PilotObject.hpp:25
Definition WsfSA_Processor.hpp:35
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32