WSF
WsfSixDOF_AutopilotAction.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 2020 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 WSFSIXDOFAUTOPILOTACTION_HPP
13#define WSFSIXDOFAUTOPILOTACTION_HPP
14
15#include "wsf_six_dof_export.h"
16
17#include "WsfSixDOF_Route.hpp"
19class Waypoint;
20
21namespace wsf
22{
23namespace six_dof
24{
25class WSF_SIX_DOF_EXPORT AutopilotAction
26{
27public:
28 AutopilotAction() = default;
29 ~AutopilotAction() = default;
31
32 AutopilotAction* Clone() const;
33
34 // Waypoint info ..............................................................
35
36 // This returns the previous waypoint
37 const Waypoint* GetPrevWaypoint() const { return mPrevWaypointPtr; }
38
39 // This returns the current waypoint
40 const Waypoint* GetCurrWaypoint() const { return mCurrWaypointPtr; }
41
42 // This returns the next waypoint (beyond the current waypoint)
43 const Waypoint* GetNextWaypoint() const { return mNextWaypointPtr; }
44
45 // This returns the current route segment
47
48 // This returns the next route segment
50
51 // Set the previous, current, and next waypoints needed to navigate this action,
52 // as well as the route segments between the waypoints
53 void SetNavWaypoints(const Waypoint* aPrevWpt,
54 const Waypoint* aCurrWpt,
55 const Waypoint* aNextWpt,
56 const Route::sRouteSegment* aCurrSegment,
57 const Route::sRouteSegment* aNextSegment);
58
59 // Lateral channel (yaw/roll) .................................................
60
61 // TODO -- We still need to support:
62 // Lateral::Taxi_Waypoint
63 // Lateral::Taxi_Heading
64 // Lateral::Point
65
66 void SetLateralChannelMode(Lateral::Mode aMode);
67 void SetStabilizingChannelMode(Lateral::Mode aMode);
68 void SetVerticalChannelMode(Vertical::Mode aMode);
69 void SetSpeedChannelMode(Speed::Mode aMode);
70
71 float GetHeading_rad() const { return mHeading_rad; }
72 void SetHeading_rad(float aHeading_rad);
73 float GetHeading_deg() const;
74 void SetHeading_deg(float aHeading_deg);
75
76 float GetBank_rad() const { return mBank_rad; }
77 void SetBank_rad(float aBank_rad);
78 float GetBank_deg() const;
79 void SetBank_deg(float aBank_deg);
80
81 float GetRollRate_dps() const { return mRollRate_dps; }
82 void SetRollRate_dps(float aRollRate_dps);
83
84 float GetRollDelta_deg() const { return mRollDelta_deg; }
85 void SetRollDelta_deg(float aRollDelta_deg);
86
87 float GetYawGLoad_g() const { return mYawGLoad_g; }
88 void SetYawGLoad_g(float aGLoad_g);
89
90 float GetYawRate_dps() const { return mYawRate_dps; }
91 void SetYawRate_dps(float aYawRate_dps);
92
93 float GetBeta_deg() const { return mBeta_deg; }
94 void SetBeta_deg(float aBeta_deg);
95
96 // Speed channel ..............................................................
97
99 void SetForwardAcceleration_g(float aAcceleration_g);
100
102 void SetCalibratedAirSpeed_KCAS(float aCalibratedAirSpeed_KCAS);
103
104 float GetTrueAirSpeed_KTAS() const { return mTrueAirSpeed_KTAS; }
105 void SetTrueAirSpeed_KTAS(float aTrueAirSpeed_KTAS);
106
107 float GetMach() const { return mMach; }
108 void SetMach(float aMach);
109
110 float GetSpeed_fps() const { return mSpeed_fps; }
111 void SetSpeed_fps(float aSpeed_fps);
112
113 float GetThrottle() const { return mThrottle; }
114 void SetThrottle(float aThrottle);
115
116 void SetNoSpeedControl();
117
118 // Vertical channel (pitch) ...................................................
119
120 // TODO - We still need to support:
121 // Vertical::Point
122
123 float GetAltitudeMSL_ft() const { return mAltitudeMSL_ft; }
124 float GetAltitudeMSL_m() const;
125 void SetAltitudeMSL_ft(float aAltitudeMSL_ft);
126
127 float GetVerticalRate_fpm() const { return mVerticalRate_fpm; }
128 void SetVerticalRate_fpm(float aVerticalRate_fpm);
129
130 float GetPitchGLoad_g() const { return mPitchGLoad_g; }
131 void SetPitchGLoad_g(float aGLoad_g);
132
133 float GetPitchAngle_deg() const { return mPitchAngle_deg; }
134 void SetPitchAngle_deg(float aPitchAngle_deg);
135
136 float GetPitchRate_dps() const { return mPitchRate_dps; }
137 void SetPitchRate_dps(float aPitchRate_dps);
138
139 float GetFlightPathAngle_deg() const;
140 void SetFlightPathAngle_deg(float aVerticalAngle_deg);
141
142 float GetDeltaPitch_deg() const { return mDeltaPitch_deg; }
143 void SetDeltaPitch_deg(float aDeltaPitch_deg);
144
145 float GetAlpha_deg() const { return mAlpha_deg; }
146 void SetAlpha_deg(float aAlpha_deg);
147
148 // Mode accessors .............................................................
149
154
155 // Turn direction accessor
157
158protected:
159 AutopilotAction(const AutopilotAction& aSrc) = default;
160
161 // Data needed to navigate the route
162 const Waypoint* mPrevWaypointPtr = nullptr;
163 const Waypoint* mCurrWaypointPtr = nullptr;
164 const Waypoint* mNextWaypointPtr = nullptr;
167
168 // Lateral channel
169
170 float mHeading_rad = 0.0f; // -pi to pi abs, or -INF to INF for rel
171 float mRateOfTurn_dps = 0.0f;
172 float mBank_rad = 0.0f; // -pi to pi abs, or -INF to INF for rel
173 float mRadiusFt = 0.0f;
174 float mRollRate_dps = 0.0f;
175 float mRollDelta_deg = 0.0f;
176 float mYawGLoad_g = 0.0f;
177 float mYawRate_dps = 0.0f;
178 float mBeta_deg = 0.0f;
179
180 // Vertical channel
181
182 float mAltitudeMSL_ft = 0.0f;
183 float mVerticalRate_fpm = 0.0f;
185 float mPitchAngle_deg = 0.0f;
186 float mPitchRate_dps = 0.0f;
187 float mPitchGLoad_g = 0.0f;
188 float mDeltaPitch_deg = 0.0f;
189 float mAlpha_deg = 0.0f;
190
191 // Speed channel
192
193 float mMach = 0.0f;
194 float mTrueAirSpeed_KTAS = 0.0f;
197 float mSpeed_fps = 0.0f;
198 float mThrottle = 0.0f;
199
201
206};
207} // namespace six_dof
208} // namespace wsf
209
210#endif // COMMONAIRAUTOPILOTACTION_H
CommonController::eAutopilotTurnDir GetAPTurnDir() const
Definition WsfSixDOF_AutopilotAction.hpp:156
float GetPitchRate_dps() const
Definition WsfSixDOF_AutopilotAction.hpp:136
float GetRollRate_dps() const
Definition WsfSixDOF_AutopilotAction.hpp:81
AutopilotAction * Clone() const
Definition WsfSixDOF_AutopilotAction.cpp:17
float mVerticalRate_fpm
Definition WsfSixDOF_AutopilotAction.hpp:183
float GetCalibratedAirSpeed_KCAS() const
Definition WsfSixDOF_AutopilotAction.hpp:101
CommonController::eAutopilotTurnDir mTurnDirection
Definition WsfSixDOF_AutopilotAction.hpp:200
float mTrueAirSpeed_KTAS
Definition WsfSixDOF_AutopilotAction.hpp:194
const Route::sRouteSegment * GetCurrSegment() const
Definition WsfSixDOF_AutopilotAction.hpp:46
float mAlpha_deg
Definition WsfSixDOF_AutopilotAction.hpp:189
float mSpeed_fps
Definition WsfSixDOF_AutopilotAction.hpp:197
Speed::Mode GetSpeedChannelMode() const
Definition WsfSixDOF_AutopilotAction.hpp:153
float mYawRate_dps
Definition WsfSixDOF_AutopilotAction.hpp:177
float mRadiusFt
Definition WsfSixDOF_AutopilotAction.hpp:173
float mBeta_deg
Definition WsfSixDOF_AutopilotAction.hpp:178
Vertical::Mode GetVerticalChannelMode() const
Definition WsfSixDOF_AutopilotAction.hpp:152
float GetAlpha_deg() const
Definition WsfSixDOF_AutopilotAction.hpp:145
float GetTrueAirSpeed_KTAS() const
Definition WsfSixDOF_AutopilotAction.hpp:104
float GetVerticalRate_fpm() const
Definition WsfSixDOF_AutopilotAction.hpp:127
Lateral::Mode GetStabilizingChannelMode() const
Definition WsfSixDOF_AutopilotAction.hpp:151
const Waypoint * GetCurrWaypoint() const
Definition WsfSixDOF_AutopilotAction.hpp:40
const Waypoint * GetPrevWaypoint() const
Definition WsfSixDOF_AutopilotAction.hpp:37
float mRateOfTurn_dps
Definition WsfSixDOF_AutopilotAction.hpp:171
float GetYawRate_dps() const
Definition WsfSixDOF_AutopilotAction.hpp:90
float mPitchAngle_deg
Definition WsfSixDOF_AutopilotAction.hpp:185
float mForwardAcceleration_g
Definition WsfSixDOF_AutopilotAction.hpp:196
float mCalibratedAirSpeed_KCAS
Definition WsfSixDOF_AutopilotAction.hpp:195
float mHeading_rad
Definition WsfSixDOF_AutopilotAction.hpp:170
float mMach
Definition WsfSixDOF_AutopilotAction.hpp:193
float GetYawGLoad_g() const
Definition WsfSixDOF_AutopilotAction.hpp:87
float GetMach() const
Definition WsfSixDOF_AutopilotAction.hpp:107
float GetForwardAcceleration_g() const
Definition WsfSixDOF_AutopilotAction.hpp:98
float GetThrottle() const
Definition WsfSixDOF_AutopilotAction.hpp:113
Vertical::Mode mVerticalChannelMode
Definition WsfSixDOF_AutopilotAction.hpp:202
float GetPitchAngle_deg() const
Definition WsfSixDOF_AutopilotAction.hpp:133
AutopilotAction & operator=(const AutopilotAction &)=delete
float mRollDelta_deg
Definition WsfSixDOF_AutopilotAction.hpp:175
Lateral::Mode GetLateralChannelMode() const
Definition WsfSixDOF_AutopilotAction.hpp:150
float GetSpeed_fps() const
Definition WsfSixDOF_AutopilotAction.hpp:110
const Waypoint * mCurrWaypointPtr
Definition WsfSixDOF_AutopilotAction.hpp:163
Speed::Mode mSpeedChannelMode
Definition WsfSixDOF_AutopilotAction.hpp:205
const Route::sRouteSegment * GetNextSegment() const
Definition WsfSixDOF_AutopilotAction.hpp:49
float mPitchGLoad_g
Definition WsfSixDOF_AutopilotAction.hpp:187
float mYawGLoad_g
Definition WsfSixDOF_AutopilotAction.hpp:176
float GetRollDelta_deg() const
Definition WsfSixDOF_AutopilotAction.hpp:84
float GetBeta_deg() const
Definition WsfSixDOF_AutopilotAction.hpp:93
const Waypoint * mNextWaypointPtr
Definition WsfSixDOF_AutopilotAction.hpp:164
float mAltitudeMSL_ft
Definition WsfSixDOF_AutopilotAction.hpp:182
float GetHeading_rad() const
Definition WsfSixDOF_AutopilotAction.hpp:71
float mDeltaPitch_deg
Definition WsfSixDOF_AutopilotAction.hpp:188
float mRollRate_dps
Definition WsfSixDOF_AutopilotAction.hpp:174
const Route::sRouteSegment * mCurrSegmentPtr
Definition WsfSixDOF_AutopilotAction.hpp:165
float mPitchRate_dps
Definition WsfSixDOF_AutopilotAction.hpp:186
float GetAltitudeMSL_ft() const
Definition WsfSixDOF_AutopilotAction.hpp:123
AutopilotAction(const AutopilotAction &aSrc)=default
float mFlightPathAngle_rad
Definition WsfSixDOF_AutopilotAction.hpp:184
float mThrottle
Definition WsfSixDOF_AutopilotAction.hpp:198
float GetDeltaPitch_deg() const
Definition WsfSixDOF_AutopilotAction.hpp:142
float GetBank_rad() const
Definition WsfSixDOF_AutopilotAction.hpp:76
float GetPitchGLoad_g() const
Definition WsfSixDOF_AutopilotAction.hpp:130
const Route::sRouteSegment * mNextSegmentPtr
Definition WsfSixDOF_AutopilotAction.hpp:166
Lateral::Mode mStabilizingChannelMode
Definition WsfSixDOF_AutopilotAction.hpp:204
Lateral::Mode mLateralChannelMode
Definition WsfSixDOF_AutopilotAction.hpp:203
const Waypoint * mPrevWaypointPtr
Definition WsfSixDOF_AutopilotAction.hpp:162
const Waypoint * GetNextWaypoint() const
Definition WsfSixDOF_AutopilotAction.hpp:43
float mBank_rad
Definition WsfSixDOF_AutopilotAction.hpp:172
eAutopilotTurnDir
Definition WsfSixDOF_CommonController.hpp:58
@ TD_DEFAULT
Definition WsfSixDOF_CommonController.hpp:59
Definition WsfSixDOF_Waypoint.hpp:26
@ Waypoint
Definition P6DofVehicleData.hpp:304
Mode
Definition WsfSixDOF_VehicleData.hpp:196
@ Undefined
Definition WsfSixDOF_VehicleData.hpp:197
Mode
Definition WsfSixDOF_VehicleData.hpp:232
@ Undefined
Definition WsfSixDOF_VehicleData.hpp:233
Mode
Definition WsfSixDOF_VehicleData.hpp:213
@ Undefined
Definition WsfSixDOF_VehicleData.hpp:214
Definition WsfSA_Processor.hpp:35
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Definition WsfSixDOF_Route.hpp:45
Copyrights Multiple, All Rights Reserved