Compensate VTOL transition time for air density (#19293)

* vtol: compensate front transition minimum time and front transiton openloop time
for air density

Signed-off-by: RomanBapst <bapstroman@gmail.com>
This commit is contained in:
Roman Bapst
2022-03-09 08:41:30 -05:00
committed by GitHub
parent 0617fd2b6f
commit 69560bd4f4
6 changed files with 64 additions and 8 deletions
+5 -5
View File
@@ -180,13 +180,13 @@ void Tiltrotor::update_vtol_state()
bool transition_to_p2 = false;
if (time_since_trans_start > _params->front_trans_time_min) {
if (time_since_trans_start > getMinimumFrontTransitionTime()) {
if (airspeed_triggers_transition) {
transition_to_p2 = _airspeed_validated->calibrated_airspeed_m_s >= _params->transition_airspeed;
} else {
transition_to_p2 = _tilt_control >= _params_tiltrotor.tilt_transition &&
time_since_trans_start > _params->front_trans_time_openloop;;
time_since_trans_start > getOpenLoopFrontTransitionTime();
}
}
@@ -359,9 +359,9 @@ void Tiltrotor::update_transition_state()
// without airspeed do timed weight changes
if ((_params->airspeed_disabled || !PX4_ISFINITE(_airspeed_validated->calibrated_airspeed_m_s)) &&
time_since_trans_start > _params->front_trans_time_min) {
_mc_roll_weight = 1.0f - (time_since_trans_start - _params->front_trans_time_min) /
(_params->front_trans_time_openloop - _params->front_trans_time_min);
time_since_trans_start > getMinimumFrontTransitionTime()) {
_mc_roll_weight = 1.0f - (time_since_trans_start - getMinimumFrontTransitionTime()) /
(getOpenLoopFrontTransitionTime() - getMinimumFrontTransitionTime());
_mc_yaw_weight = _mc_roll_weight;
}