35 #include <Eigen/Eigen>
36 #include <auterion_sdk/auterion.hpp>
37 #include <auterion_sdk/control/control.hpp>
71 bool needs_angular_velocity{
false};
72 bool needs_attitude{
false};
73 bool needs_local_altitude{
false};
74 bool needs_local_position{
false};
75 bool needs_local_position_relaxed{
false};
76 bool needs_global_position{
false};
77 bool needs_valid_mission{
false};
78 bool needs_valid_home{
false};
79 bool needs_manual_control_input{
false};
80 bool can_prevent_arming{
false};
82 ModeConfiguration merge(
const ModeConfiguration& other)
const {
83 ModeConfiguration config = *
this;
84 config.needs_angular_velocity =
85 config.needs_angular_velocity || other.needs_angular_velocity;
86 config.needs_attitude = config.needs_attitude || other.needs_attitude;
87 config.needs_local_altitude = config.needs_local_altitude || other.needs_local_altitude;
88 config.needs_local_position = config.needs_local_position || other.needs_local_position;
89 config.needs_local_position_relaxed =
90 config.needs_local_position_relaxed || other.needs_local_position_relaxed;
91 config.needs_global_position = config.needs_global_position || other.needs_global_position;
92 config.needs_valid_mission = config.needs_valid_mission || other.needs_valid_mission;
93 config.needs_valid_home = config.needs_valid_home || other.needs_valid_home;
94 config.needs_manual_control_input =
95 config.needs_manual_control_input || other.needs_manual_control_input;
96 config.can_prevent_arming = config.can_prevent_arming || other.can_prevent_arming;
112 needs_angular_velocity = needs;
116 ModeConfiguration& needsAttitude(
bool needs =
true) {
117 needs_attitude = needs;
121 ModeConfiguration& needsLocalAltitude(
bool needs =
true) {
122 needs_local_altitude = needs;
126 ModeConfiguration& needsLocalPosition(
bool needs =
true) {
127 needs_local_position = needs;
131 ModeConfiguration& needsLocalPositionRelaxed(
bool needs =
true) {
132 needs_local_position_relaxed = needs;
136 ModeConfiguration& needsGlobalPosition(
bool needs =
true) {
137 needs_global_position = needs;
141 ModeConfiguration& needsValidMission(
bool needs =
true) {
142 needs_valid_mission = needs;
146 ModeConfiguration& needsValidHome(
bool needs =
true) {
147 needs_valid_home = needs;
151 ModeConfiguration& needsManualControlInput(
bool needs =
true) {
152 needs_manual_control_input = needs;
156 ModeConfiguration& canPreventArming(
bool can =
true) {
157 can_prevent_arming = can;
169 float roll_input_normalized;
170 float pitch_input_normalized;
171 float yaw_input_normalized;
172 float throttle_input_normalized;
174 float aux1_input_normalized;
175 float aux2_input_normalized;
176 float aux3_input_normalized;
177 float aux4_input_normalized;
178 float aux5_input_normalized;
179 float aux6_input_normalized;
223 std::shared_ptr<ModeImpl> _impl;
235 Mode(
SDK& sdk,
const std::string& mode_name,
const std::vector<ModalityConfig>& controls,
Configuration flags for specifying mode requirements and capabilities.
Definition: mode.hpp:50
ModeConfiguration & replacesPX4Mode(PX4Mode::ID px4_mode_id)
Configures a Mode to replace an existing PX4 mode.
Definition: mode.hpp:106
PX4Mode::ID replace_px4_mode
Definition: mode.hpp:67
Defines a mode to control the vehicle using a (set) of setpoint types.
Definition: mode.hpp:221
void onDeactivate(const std::function< void()> &callback)
Sets a callback function to be called when the mode is deactivated.
Mode(SDK &sdk, const std::string &mode_name, const std::vector< ModalityConfig > &controls, ModeConfiguration config=ModeConfiguration{})
Constructor to initialize a mode.
void onActivate(const std::function< void()> &callback)
Sets a callback function to be called when the mode is activated.
void onUpdateSetpoint(const std::function< Setpoint(float)> &callback)
Sets a callback function to be called at periodically at the update frequency of the mode.
SDK execution class. All callbacks are called on the same thread.
Definition: auterion.hpp:45
std::variant< RateSetpoint, AttitudeSetpoint, multicopter::LocalFrameDynamicsSetpoint, multicopter::BodyFrameDynamicsSetpoint, multicopter::LocalFrameGotoSetpoint, multicopter::GlobalFrameGotoSetpoint > Setpoint
Type alias for representing various types of setpoints.
Definition: control.hpp:66
Struct storing PX4 mode IDs.
Definition: mode.hpp:55
static const ID kModeIDRtl
PX4 RTL mode.
Definition: mode.hpp:63
static const ID kModeIDPrecisionLand
PX4 Precision Land mode.
Definition: mode.hpp:64
static const ID kModeIDLand
PX4 Land mode.
Definition: mode.hpp:62
static const ID kModeIDInvalid
Invalid mode, will not replace any PX4 mode.
Definition: mode.hpp:57
static const ID kModeIDDescend
PX4 Descend mode.
Definition: mode.hpp:61
static const ID kModeIDTakeoff
PX4 Takeoff mode.
Definition: mode.hpp:60
static const ID kModeIDPosctl
PX4 Position mode.
Definition: mode.hpp:59