ACMotors: bug fix to yaw limit

This commit is contained in:
rmackay9 2013-07-05 13:48:03 -10:00
parent db893d288b
commit b4115c79ec

View File

@ -166,20 +166,23 @@ void AP_MotorsMatrix::output_armed()
// calculate amount of yaw we can fit into the throttle range
// this is always equal to or less than the requested yaw from the pilot or rate controller
yaw_allowed = min(out_max - out_max_range, out_max_range - out_min) - (rpy_high-rpy_low)/2;
yaw_allowed = max(yaw_allowed, AP_MOTORS_MATRIX_YAW_LOWER_LIMIT_PWM); // allow at least 200 of yaw
yaw_allowed = max(yaw_allowed, AP_MOTORS_MATRIX_YAW_LOWER_LIMIT_PWM);
if (_rc_yaw->pwm_out > 0) {
if (_rc_yaw->pwm_out >= 0) {
// if yawing right
yaw_allowed = min(yaw_allowed, _rc_yaw->pwm_out); // minimum that we can fit vs what we have asked for
// we haven't even been able to apply full yaw command
_reached_limit |= AP_MOTOR_YAW_LIMIT;
}else if(_rc_yaw->pwm_out < 0) {
// if yawing left
yaw_allowed = max(-yaw_allowed, _rc_yaw->pwm_out);
// we haven't even been able to apply full yaw command
_reached_limit |= AP_MOTOR_YAW_LIMIT;
if (yaw_allowed > _rc_yaw->pwm_out) {
yaw_allowed = _rc_yaw->pwm_out; // to-do: this is bad form for yaw_allows to change meaning to become the amount that we are going to output
}else{
_reached_limit |= AP_MOTOR_YAW_LIMIT;
}
}else{
yaw_allowed = 0;
// if yawing left
yaw_allowed = -yaw_allowed;
if( yaw_allowed < _rc_yaw->pwm_out ) {
yaw_allowed = _rc_yaw->pwm_out; // to-do: this is bad form for yaw_allows to change meaning to become the amount that we are going to output
}else{
_reached_limit |= AP_MOTOR_YAW_LIMIT;
}
}
// add yaw to intermediate numbers for each motor