diff --git a/src/modules/mc_pos_control/mc_pos_control_main.cpp b/src/modules/mc_pos_control/mc_pos_control_main.cpp index a26a65d468..6776d78871 100644 --- a/src/modules/mc_pos_control/mc_pos_control_main.cpp +++ b/src/modules/mc_pos_control/mc_pos_control_main.cpp @@ -1141,6 +1141,16 @@ MulticopterPositionControl::task_main() _run_pos_control = true; _run_alt_control = true; + // reset the horizontal and vertical position hold flags for non-manual modes + // or if position is not controlled + if (!_control_mode.flag_control_position_enabled || !_control_mode.flag_control_manual_enabled) { + _pos_hold_engaged = false; + } + + if (!_control_mode.flag_control_altitude_enabled || !_control_mode.flag_control_manual_enabled) { + _alt_hold_engaged = false; + } + /* select control source */ if (_control_mode.flag_control_manual_enabled) { /* manual control */