diff --git a/src/modules/uuv_att_control/uuv_att_control.cpp b/src/modules/uuv_att_control/uuv_att_control.cpp index dfd93722fb..879b5c1dd0 100644 --- a/src/modules/uuv_att_control/uuv_att_control.cpp +++ b/src/modules/uuv_att_control/uuv_att_control.cpp @@ -238,7 +238,15 @@ void UUVAttitudeControl::Run() } /* Geometric Control*/ - control_attitude_geo(attitude, _attitude_setpoint, angular_velocity, _rates_setpoint); + int skip_controller = _param_skip_ctrl.get(); + + if (skip_controller) { + constrain_actuator_commands(_rates_setpoint.roll, _rates_setpoint.pitch, _rates_setpoint.yaw, + _rates_setpoint.thrust_body[0]); + + } else { + control_attitude_geo(attitude, _attitude_setpoint, angular_velocity, _rates_setpoint); + } } } diff --git a/src/modules/uuv_att_control/uuv_att_control.hpp b/src/modules/uuv_att_control/uuv_att_control.hpp index 648cfa46cc..d18bd8e78f 100644 --- a/src/modules/uuv_att_control/uuv_att_control.hpp +++ b/src/modules/uuv_att_control/uuv_att_control.hpp @@ -87,10 +87,6 @@ public: UUVAttitudeControl(); ~UUVAttitudeControl(); - UUVAttitudeControl(const UUVAttitudeControl &) = delete; - UUVAttitudeControl operator=(const UUVAttitudeControl &other) = delete; - - /** @see ModuleBase */ static int task_spawn(int argc, char *argv[]); @@ -131,6 +127,7 @@ private: (ParamFloat) _param_yaw_d, // control/input modes (ParamInt) _param_input_mode, + (ParamInt) _param_skip_ctrl, // direct access to inputs (ParamFloat) _param_direct_roll, (ParamFloat) _param_direct_pitch, diff --git a/src/modules/uuv_att_control/uuv_att_control_params.c b/src/modules/uuv_att_control/uuv_att_control_params.c index d25d8e9d43..7e5c8cf322 100644 --- a/src/modules/uuv_att_control/uuv_att_control_params.c +++ b/src/modules/uuv_att_control/uuv_att_control_params.c @@ -107,6 +107,14 @@ PARAM_DEFINE_FLOAT(UUV_YAW_D, 2.0f); */ PARAM_DEFINE_INT32(UUV_INPUT_MODE, 0); +/** + * Skip the controller + * + * @value 0 use the module's controller + * @value 1 skip the controller and feedthrough the setpoints + */ +PARAM_DEFINE_INT32(UUV_SKIP_CTRL, 0); + /** * Direct roll input *