18 #ifndef UAVSTATEMACHINE_H
19 #define UAVSTATEMACHINE_H
29 class FrameworkManager;
44 class TrajectoryGenerator1D;
47 class TargetController;
68 enum class AltitudeMode_t { Manual, Custom };
69 const AltitudeMode_t &GetAltitudeMode(
void)
const {
return altitudeMode; }
70 bool SetAltitudeMode(
const AltitudeMode_t &altitudeMode);
75 bool GotoAltitude(
float desiredAltitude);
77 enum class OrientationMode_t { Manual, Custom };
78 const OrientationMode_t &GetOrientationMode(
void)
const {
79 return orientationMode;
81 bool SetOrientationMode(
const OrientationMode_t &orientationMode);
83 enum class ThrustMode_t { Default, Custom };
84 const ThrustMode_t &GetThrustMode()
const {
return thrustMode; }
85 bool SetThrustMode(
const ThrustMode_t &thrustMode);
87 enum class TorqueMode_t { Default, Custom };
88 const TorqueMode_t &GetTorqueMode(
void)
const {
return torqueMode; }
89 bool SetTorqueMode(
const TorqueMode_t &torqueMode);
113 void EmergencyLand(
void);
115 void EmergencyStop(
void);
125 virtual void AltitudeValues(
float &z,
float &dz)
const;
126 void EnterFailSafeMode(
void);
127 bool ExitFailSafeMode(
void);
128 void FailSafeAltitudeValues(
float &z,
float &dz)
const;
131 virtual void ExtraSecurityCheck(
void){};
132 virtual void ExtraCheckJoystick(
void){};
133 virtual void ExtraCheckPushButton(
void){};
135 void GetDefaultReferenceAltitude(
float &refAltitude,
136 float &refVerticalVelocity);
137 virtual void GetReferenceAltitude(
float &refAltitude,
138 float &refVerticalVelocity);
231 gui::Tab *setupLawTab, *graphLawTab;
238 enum class AltitudeState_t {
247 AltitudeState_t altitudeState;
248 void ProcessAltitudeFiniteStateMachine();
249 void ComputeReferenceAltitude(
float &refAltitude,
float &refVerticalVelocity);
251 float groundAltitude;
252 float currentAltitude, currentVerticalSpeed;
255 void SecurityCheck(
void);
256 void MandatorySecurityCheck(
void);
257 void CheckJoystick();
258 void GenericCheckJoystick();
259 void CheckPushButton(
void);
260 void GenericCheckPushButton(
void);
262 void StopMotors(
void);
263 bool IsValuePossible(
float value,std::string desc);
273 void ComputeOrientation(
void);
274 void ComputeAltitude(
void);
276 void ComputeTorques(
void);
278 bool needToComputeDefaultTorques;
280 void ComputeThrust(
void);
281 float currentThrust, savedDefaultThrust;
282 bool needToComputeDefaultThrust;
285 *button_start_log, *button_stop_log;
288 AltitudeMode_t altitudeMode;
289 OrientationMode_t orientationMode;
290 ThrustMode_t thrustMode;
291 TorqueMode_t torqueMode;
293 bool flagConnectionLost;
294 bool flagCriticalSensorLost;
295 bool flagZTrajectoryFinished;
306 #endif // UAVSTATEMACHINE_H
Abstract class for data types.
Definition: io_data.h:94
Abstract class for input/ouput system.
Definition: IODevice.h:45
namespace of the flair Framework
Definition: Ahrs.h:19
Class defining a 3D vector.
Definition: Vector3D.h:28
Class defining euler angles.
Definition: Euler.h:27
Class defining a 2D vector.
Class displaying a QGridLayout on the ground station.
Definition: GridLayout.h:27
Class defining a Pid for Thrust. This Pid as an extra offset for compensating gravity.
Definition: PidThrust.h:33
Class defining AHRS datas.
Definition: AhrsData.h:30
Class defining a 3D vector.
Base Class for target side remote controls.
Definition: TargetController.h:49
Class generating a trajectory in 1D.
Definition: TrajectoryGenerator1D.h:47
Class defining a PID.
Definition: Pid.h:32
Abstract class for a thread.
Class defining a quaternion.
Class defining a PID with saturations.
Definition: NestedSat.h:43
Abstract class for a thread.
Definition: Thread.h:38
Class displaying a QDoubleSpinBox on the ground station.
Definition: DoubleSpinBox.h:28
Class defining a quaternion.
Definition: Quaternion.h:25
Class displaying a QTab on the ground station.
Definition: Tab.h:29
Class defining euler angles.