vtol_att_control: reset transition timer states when starting a transition

Signed-off-by: RomanBapst <bapstroman@gmail.com>
This commit is contained in:
RomanBapst 2022-12-15 18:11:01 +03:00 committed by Roman Bapst
parent 84c5ce3a53
commit ffdf186598
4 changed files with 17 additions and 7 deletions

View File

@ -94,8 +94,8 @@ void Standard::update_vtol_state()
} else if (_vtol_mode == vtol_mode::FW_MODE) {
// Regular backtransition
resetTransitionTimer();
_vtol_mode = vtol_mode::TRANSITION_TO_MC;
_transition_start_timestamp = hrt_absolute_time();
_reverse_output = _param_vt_b_rev_out.get();
} else if (_vtol_mode == vtol_mode::TRANSITION_TO_FW) {
@ -131,8 +131,8 @@ void Standard::update_vtol_state()
// start transition to fw mode
/* NOTE: The failsafe transition to fixed-wing was removed because it can result in an
* unsafe flying state. */
resetTransitionTimer();
_vtol_mode = vtol_mode::TRANSITION_TO_FW;
_transition_start_timestamp = hrt_absolute_time();
} else if (_vtol_mode == vtol_mode::FW_MODE) {
// in fw mode

View File

@ -87,8 +87,8 @@ void Tailsitter::update_vtol_state()
break;
case vtol_mode::FW_MODE:
resetTransitionTimer();
_vtol_mode = vtol_mode::TRANSITION_BACK;
_transition_start_timestamp = hrt_absolute_time();
break;
case vtol_mode::TRANSITION_FRONT_P1:
@ -112,7 +112,7 @@ void Tailsitter::update_vtol_state()
case vtol_mode::MC_MODE:
// initialise a front transition
_vtol_mode = vtol_mode::TRANSITION_FRONT_P1;
_transition_start_timestamp = hrt_absolute_time();
resetTransitionTimer();
break;
case vtol_mode::FW_MODE:

View File

@ -88,8 +88,8 @@ void Tiltrotor::update_vtol_state()
break;
case vtol_mode::FW_MODE:
resetTransitionTimer();
_vtol_mode = vtol_mode::TRANSITION_BACK;
_transition_start_timestamp = hrt_absolute_time();
break;
case vtol_mode::TRANSITION_FRONT_P1:
@ -131,8 +131,8 @@ void Tiltrotor::update_vtol_state()
switch (_vtol_mode) {
case vtol_mode::MC_MODE:
// initialise a front transition
resetTransitionTimer();
_vtol_mode = vtol_mode::TRANSITION_FRONT_P1;
_transition_start_timestamp = hrt_absolute_time();
break;
case vtol_mode::FW_MODE:
@ -159,7 +159,7 @@ void Tiltrotor::update_vtol_state()
if (transition_to_p2) {
_vtol_mode = vtol_mode::TRANSITION_FRONT_P2;
_transition_start_timestamp = hrt_absolute_time();
resetTransitionTimer();
}
break;

View File

@ -248,6 +248,16 @@ public:
*/
void setDt(float dt) {_dt = dt; }
/**
* @brief Resets the transition timer states.
*
*/
void resetTransitionTimer()
{
_transition_start_timestamp = hrt_absolute_time();
_time_since_trans_start = 0.f;
}
protected:
VtolAttitudeControl *_attc;
mode _common_vtol_mode;