diff --git a/libraries/AP_Motors/AP_MotorsHeli_Dual.cpp b/libraries/AP_Motors/AP_MotorsHeli_Dual.cpp index 486c681512..5902c8b5f2 100644 --- a/libraries/AP_Motors/AP_MotorsHeli_Dual.cpp +++ b/libraries/AP_Motors/AP_MotorsHeli_Dual.cpp @@ -475,19 +475,18 @@ void AP_MotorsHeli_Dual::move_actuators(float roll_out, float pitch_out, float c limit.throttle_upper = true; } - // Set rear collective to midpoint if required - float collective2_out = collective_out; - if (_servo_mode == SERVO_CONTROL_MODE_MANUAL_CENTER) { - collective2_out = _collective2_mid_pct; - } - - // ensure not below landed/landing collective if (_heliflags.landing_collective && collective_out < (_land_collective_min*0.001f)) { collective_out = _land_collective_min*0.001f; limit.throttle_lower = true; } + // Set rear collective to midpoint if required + float collective2_out = collective_out; + if (_servo_mode == SERVO_CONTROL_MODE_MANUAL_CENTER) { + collective2_out = _collective2_mid_pct; + } + // scale collective pitch for front swashplate (servos 1,2,3) float collective_scaler = ((float)(_collective_max-_collective_min))*0.001f; float collective_out_scaled = collective_out * collective_scaler + (_collective_min - 1000)*0.001f; @@ -509,9 +508,13 @@ void AP_MotorsHeli_Dual::move_actuators(float roll_out, float pitch_out, float c // swashplate servos float servo_out[AP_MOTORS_HELI_DUAL_NUM_SWASHPLATE_SERVOS]; - for (uint8_t i=0; i