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 4a154ecf30..2032367283 100644 --- a/src/modules/mc_pos_control/mc_pos_control_main.cpp +++ b/src/modules/mc_pos_control/mc_pos_control_main.cpp @@ -908,9 +908,13 @@ MulticopterPositionControl::cross_sphere_line(const math::Vector<3> &sphere_c, f void MulticopterPositionControl::control_auto(float dt) { - if (!_mode_auto) { + if (!_mode_auto || _vehicle_status.in_transition_mode || !_vehicle_status.is_rotary_wing) { _mode_auto = true; /* reset position setpoint on AUTO mode activation */ + if (_vehicle_status.in_transition_mode || !_vehicle_status.is_rotary_wing) { + _reset_pos_sp = true; + _reset_alt_sp = true; + } reset_pos_sp(); reset_alt_sp(); /* set current velocity as last target velocity to smooth out transition */