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-16 11:36:00 +03:00
committed by Roman Bapst
parent 84c5ce3a53
commit ffdf186598
4 changed files with 17 additions and 7 deletions
+2 -2
View File
@@ -94,8 +94,8 @@ void Standard::update_vtol_state()
} else if (_vtol_mode == vtol_mode::FW_MODE) { } else if (_vtol_mode == vtol_mode::FW_MODE) {
// Regular backtransition // Regular backtransition
resetTransitionTimer();
_vtol_mode = vtol_mode::TRANSITION_TO_MC; _vtol_mode = vtol_mode::TRANSITION_TO_MC;
_transition_start_timestamp = hrt_absolute_time();
_reverse_output = _param_vt_b_rev_out.get(); _reverse_output = _param_vt_b_rev_out.get();
} else if (_vtol_mode == vtol_mode::TRANSITION_TO_FW) { } else if (_vtol_mode == vtol_mode::TRANSITION_TO_FW) {
@@ -131,8 +131,8 @@ void Standard::update_vtol_state()
// start transition to fw mode // start transition to fw mode
/* NOTE: The failsafe transition to fixed-wing was removed because it can result in an /* NOTE: The failsafe transition to fixed-wing was removed because it can result in an
* unsafe flying state. */ * unsafe flying state. */
resetTransitionTimer();
_vtol_mode = vtol_mode::TRANSITION_TO_FW; _vtol_mode = vtol_mode::TRANSITION_TO_FW;
_transition_start_timestamp = hrt_absolute_time();
} else if (_vtol_mode == vtol_mode::FW_MODE) { } else if (_vtol_mode == vtol_mode::FW_MODE) {
// in fw mode // in fw mode
+2 -2
View File
@@ -87,8 +87,8 @@ void Tailsitter::update_vtol_state()
break; break;
case vtol_mode::FW_MODE: case vtol_mode::FW_MODE:
resetTransitionTimer();
_vtol_mode = vtol_mode::TRANSITION_BACK; _vtol_mode = vtol_mode::TRANSITION_BACK;
_transition_start_timestamp = hrt_absolute_time();
break; break;
case vtol_mode::TRANSITION_FRONT_P1: case vtol_mode::TRANSITION_FRONT_P1:
@@ -112,7 +112,7 @@ void Tailsitter::update_vtol_state()
case vtol_mode::MC_MODE: case vtol_mode::MC_MODE:
// initialise a front transition // initialise a front transition
_vtol_mode = vtol_mode::TRANSITION_FRONT_P1; _vtol_mode = vtol_mode::TRANSITION_FRONT_P1;
_transition_start_timestamp = hrt_absolute_time(); resetTransitionTimer();
break; break;
case vtol_mode::FW_MODE: case vtol_mode::FW_MODE:
+3 -3
View File
@@ -88,8 +88,8 @@ void Tiltrotor::update_vtol_state()
break; break;
case vtol_mode::FW_MODE: case vtol_mode::FW_MODE:
resetTransitionTimer();
_vtol_mode = vtol_mode::TRANSITION_BACK; _vtol_mode = vtol_mode::TRANSITION_BACK;
_transition_start_timestamp = hrt_absolute_time();
break; break;
case vtol_mode::TRANSITION_FRONT_P1: case vtol_mode::TRANSITION_FRONT_P1:
@@ -131,8 +131,8 @@ void Tiltrotor::update_vtol_state()
switch (_vtol_mode) { switch (_vtol_mode) {
case vtol_mode::MC_MODE: case vtol_mode::MC_MODE:
// initialise a front transition // initialise a front transition
resetTransitionTimer();
_vtol_mode = vtol_mode::TRANSITION_FRONT_P1; _vtol_mode = vtol_mode::TRANSITION_FRONT_P1;
_transition_start_timestamp = hrt_absolute_time();
break; break;
case vtol_mode::FW_MODE: case vtol_mode::FW_MODE:
@@ -159,7 +159,7 @@ void Tiltrotor::update_vtol_state()
if (transition_to_p2) { if (transition_to_p2) {
_vtol_mode = vtol_mode::TRANSITION_FRONT_P2; _vtol_mode = vtol_mode::TRANSITION_FRONT_P2;
_transition_start_timestamp = hrt_absolute_time(); resetTransitionTimer();
} }
break; break;
+10
View File
@@ -248,6 +248,16 @@ public:
*/ */
void setDt(float dt) {_dt = dt; } 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: protected:
VtolAttitudeControl *_attc; VtolAttitudeControl *_attc;
mode _common_vtol_mode; mode _common_vtol_mode;