Tiltrotor: option to enable differential thrust in forwards flight

This commit is contained in:
Andreas Antener
2017-02-18 08:03:19 +01:00
committed by Andreas Daniel Antener
parent b19cd19411
commit e04fe593e0
3 changed files with 42 additions and 0 deletions
@@ -70,6 +70,8 @@ Tiltrotor::Tiltrotor(VtolAttitudeControl *attc) :
_params_handles_tiltrotor.front_trans_dur_p2 = param_find("VT_TRANS_P2_DUR");
_params_handles_tiltrotor.fw_motors_off = param_find("VT_FW_MOT_OFFID");
_params_handles_tiltrotor.airspeed_mode = param_find("FW_ARSP_MODE");
_params_handles_tiltrotor.diff_thrust = param_find("VT_FW_DIFTHR_EN");
_params_handles_tiltrotor.diff_thrust_scale = param_find("VT_FW_DIFTHR_SC");
}
Tiltrotor::~Tiltrotor()
@@ -134,6 +136,11 @@ Tiltrotor::parameters_update()
/* airspeed mode */
param_get(_params_handles_tiltrotor.airspeed_mode, &l);
_params_tiltrotor.airspeed_mode = math::constrain(l, 0, 2);
param_get(_params_handles_tiltrotor.diff_thrust, &_params_tiltrotor.diff_thrust);
param_get(_params_handles_tiltrotor.diff_thrust_scale, &v);
_params_tiltrotor.diff_thrust_scale = math::constrain(v, -1.0f, 1.0f);
}
int Tiltrotor::get_motor_off_channels(int channels)
@@ -425,6 +432,12 @@ void Tiltrotor::fill_actuator_outputs()
_actuators_out_0->control[actuator_controls_s::INDEX_THROTTLE] =
_actuators_fw_in->control[actuator_controls_s::INDEX_THROTTLE];
/* allow differential thrust if enabled */
if (_params_tiltrotor.diff_thrust == 1) {
_actuators_out_0->control[actuator_controls_s::INDEX_ROLL] =
_actuators_fw_in->control[actuator_controls_s::INDEX_YAW] * _params_tiltrotor.diff_thrust_scale;
}
} else {
_actuators_out_0->control[actuator_controls_s::INDEX_THROTTLE] =
_actuators_mc_in->control[actuator_controls_s::INDEX_THROTTLE];;