From 10dcb90d5211de9d4926a9eb6b06b00a3c36da40 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sat, 11 Mar 2017 22:33:33 +0100 Subject: [PATCH] Commander: Store last manual stick setpoints only when actually in manual control mode --- src/modules/commander/commander.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/modules/commander/commander.cpp b/src/modules/commander/commander.cpp index 832d55cc42..bced812a50 100644 --- a/src/modules/commander/commander.cpp +++ b/src/modules/commander/commander.cpp @@ -3361,9 +3361,18 @@ set_main_state_rc(struct vehicle_status_s *status_local) (_last_sp_man.stab_switch == sp_man.stab_switch) && (_last_sp_man.man_switch == sp_man.man_switch)))) { - // update these fields for the geofence system + // store the last manual control setpoint set by the pilot in a manual state + // if the system now later enters an autonomous state the pilot can move + // the sticks to break out of the autonomous state + + if (!warning_action_on + && (internal_state.main_state == commander_state_s::MAIN_STATE_MANUAL || + internal_state.main_state == commander_state_s::MAIN_STATE_ALTCTL || + internal_state.main_state == commander_state_s::MAIN_STATE_POSCTL || + internal_state.main_state == commander_state_s::MAIN_STATE_ACRO || + internal_state.main_state == commander_state_s::MAIN_STATE_RATTITUDE || + internal_state.main_state == commander_state_s::MAIN_STATE_STAB)) { - if (!warning_action_on) { _last_sp_man.timestamp = sp_man.timestamp; _last_sp_man.x = sp_man.x; _last_sp_man.y = sp_man.y;