mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-20 19:53:34 +08:00
vtol_att_control: reset transition timer states when starting a transition
Signed-off-by: RomanBapst <bapstroman@gmail.com>
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user