18 #ifndef UAVSTATEMACHINE_H
19 #define UAVSTATEMACHINE_H
29 class FrameworkManager;
44 class TrajectoryGenerator1D;
47 class TargetController;
70 enum class AltitudeMode_t { Manual, Custom };
71 const AltitudeMode_t &GetAltitudeMode(
void)
const {
return altitudeMode; }
72 bool SetAltitudeMode(
const AltitudeMode_t &altitudeMode);
77 bool GotoAltitude(
float desiredAltitude);
79 enum class OrientationMode_t { Manual, Custom };
80 const OrientationMode_t &GetOrientationMode(
void)
const {
81 return orientationMode;
83 bool SetOrientationMode(
const OrientationMode_t &orientationMode);
85 enum class ThrustMode_t { Default, Custom };
86 const ThrustMode_t &GetThrustMode()
const {
return thrustMode; }
87 bool SetThrustMode(
const ThrustMode_t &thrustMode);
89 enum class TorqueMode_t { Default, Custom };
90 const TorqueMode_t &GetTorqueMode(
void)
const {
return torqueMode; }
91 bool SetTorqueMode(
const TorqueMode_t &torqueMode);
115 void EmergencyLand(
void);
117 void EmergencyStop(
void);
127 virtual void AltitudeValues(
float &z,
float &dz)
const;
128 void EnterFailSafeMode(
void);
129 bool ExitFailSafeMode(
void);
130 void FailSafeAltitudeValues(
float &z,
float &dz)
const;
144 virtual void ExtraSecurityCheck(
void){};
145 virtual void ExtraCheckJoystick(
void){};
146 virtual void ExtraCheckPushButton(
void){};
148 void GetDefaultReferenceAltitude(
float &refAltitude,
149 float &refVerticalVelocity);
150 virtual void GetReferenceAltitude(
float &refAltitude,
151 float &refVerticalVelocity);
260 gui::Tab *uavTab,*setupLawTab, *graphLawTab;
267 enum class AltitudeState_t {
276 AltitudeState_t altitudeState;
277 void ProcessAltitudeFiniteStateMachine();
278 void ComputeReferenceAltitude(
float &refAltitude,
float &refVerticalVelocity);
280 float groundAltitude;
281 float currentAltitude, currentVerticalSpeed;
284 void SecurityCheck(
void);
285 void MandatorySecurityCheck(
void);
286 void CheckJoystick();
287 void GenericCheckJoystick();
288 void CheckPushButton(
void);
289 void GenericCheckPushButton(
void);
290 void Run(
void)
override;
291 void StopMotors(
void);
292 bool IsValuePossible(
float value,std::string desc);
303 void ComputeOrientation(
void);
304 void ComputeAltitude(
void);
306 void ComputeTorques(
void);
308 bool needToComputeDefaultTorques;
310 void ComputeThrust(
void);
311 float currentThrust, savedDefaultThrust;
312 bool needToComputeDefaultThrust;
315 *button_start_log, *button_stop_log;
318 AltitudeMode_t altitudeMode;
319 OrientationMode_t orientationMode;
320 ThrustMode_t thrustMode;
321 TorqueMode_t torqueMode;
323 bool flagConnectionLost;
324 bool flagCriticalSensorLost;
325 bool flagZTrajectoryFinished;
335 #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 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.
Abstract class for altitude sensor.
Definition: AltitudeSensor.h:31
Base Class for target side remote controls.
Definition: TargetController.h:48
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:37
Class displaying a QDoubleSpinBox on the ground station.
Definition: DoubleSpinBox.h:28
Class defining a quaternion.
Definition: Quaternion.h:26
Class displaying a QTab on the ground station.
Definition: Tab.h:29
Class defining euler angles.