diff --git a/src/lib/FlightTasks/tasks/FlightTaskManualAltitude.cpp b/src/lib/FlightTasks/tasks/FlightTaskManualAltitude.cpp index 40fe4704e1..8e7f8c85e5 100644 --- a/src/lib/FlightTasks/tasks/FlightTaskManualAltitude.cpp +++ b/src/lib/FlightTasks/tasks/FlightTaskManualAltitude.cpp @@ -34,7 +34,7 @@ /** * @file FlightTaskManual.hpp * - * Flight task for manual controlled altitude. + * Flight-task for manual controlled altitude. * */ @@ -51,7 +51,9 @@ FlightTaskManualAltitude::FlightTaskManualAltitude(control::SuperBlock *parent, _vel_max_up(parent, "MPC_Z_VEL_MAX_UP", false), _yaw_rate_scaling(parent, "MPC_MAN_Y_MAX", false), _acc_max_up(parent, "MPC_ACC_UP_MAX", false), - _acc_max_down(parent, "MPC_ACC_DOWN_MAX", false) + _acc_max_down(parent, "MPC_ACC_DOWN_MAX", false), + _stick_deadzone(parent, "MPC_HOLD_DZ", false) + {} bool FlightTaskManualAltitude::activate() @@ -76,7 +78,7 @@ void FlightTaskManualAltitude::scaleSticks() void FlightTaskManualAltitude::updateHeadingSetpoints() { - if (fabsf(_sticks(3)) < FLT_EPSILON) { + if (fabsf(_sticks(3)) < _stick_deadzone.get()) { /* Want to hold yaw */ _yaw_rate_sp = NAN; _yaw_sp = _yaw_sp_predicted; diff --git a/src/lib/FlightTasks/tasks/FlightTaskManualAltitude.hpp b/src/lib/FlightTasks/tasks/FlightTaskManualAltitude.hpp index 3715e66c9f..0749effeca 100644 --- a/src/lib/FlightTasks/tasks/FlightTaskManualAltitude.hpp +++ b/src/lib/FlightTasks/tasks/FlightTaskManualAltitude.hpp @@ -65,6 +65,7 @@ protected: control::BlockParamFloat _yaw_rate_scaling; /**< scaling factor from stick to yaw rate */ control::BlockParamFloat _acc_max_up; /**< maximum acceleration upward */ control::BlockParamFloat _acc_max_down; /**< maximum acceleration downward */ + control::BlockParamFloat _stick_deadzone; /**< stick is considered zero if below deadzone */ virtual void updateSetpoints(); /**< updates all setpoints */ virtual void scaleSticks(); /**< scales sticks to velocity */