Browse Source

AC_AttControl: roll, pitch, yaw output to motors in -1 to +1 range

mission-4.1.18
Leonard Hall 9 years ago committed by Randy Mackay
parent
commit
979534279a
  1. 18
      libraries/AC_AttitudeControl/AC_AttitudeControl.cpp

18
libraries/AC_AttitudeControl/AC_AttitudeControl.cpp

@ -513,11 +513,11 @@ float AC_AttitudeControl::rate_bf_to_motor_roll(float rate_target_rads)
integrator = _pid_rate_roll.get_i(); integrator = _pid_rate_roll.get_i();
} }
// Compute output // Compute output in range -1 ~ +1
float output = _pid_rate_roll.get_p() + integrator + _pid_rate_roll.get_d(); float output = (_pid_rate_roll.get_p() + integrator + _pid_rate_roll.get_d()) / 4500.0f;
// Constrain output // Constrain output
return constrain_float(output, -AC_ATTITUDE_RATE_RP_CONTROLLER_OUT_MAX, AC_ATTITUDE_RATE_RP_CONTROLLER_OUT_MAX); return constrain_float(output, -1.0f, 1.0f);
} }
float AC_AttitudeControl::rate_bf_to_motor_pitch(float rate_target_rads) float AC_AttitudeControl::rate_bf_to_motor_pitch(float rate_target_rads)
@ -536,11 +536,11 @@ float AC_AttitudeControl::rate_bf_to_motor_pitch(float rate_target_rads)
integrator = _pid_rate_pitch.get_i(); integrator = _pid_rate_pitch.get_i();
} }
// Compute output // Compute output in range -1 ~ +1
float output = _pid_rate_pitch.get_p() + integrator + _pid_rate_pitch.get_d(); float output = (_pid_rate_pitch.get_p() + integrator + _pid_rate_pitch.get_d()) / 4500.0f;
// Constrain output // Constrain output
return constrain_float(output, -AC_ATTITUDE_RATE_RP_CONTROLLER_OUT_MAX, AC_ATTITUDE_RATE_RP_CONTROLLER_OUT_MAX); return constrain_float(output, -1.0f, 1.0f);
} }
float AC_AttitudeControl::rate_bf_to_motor_yaw(float rate_target_rads) float AC_AttitudeControl::rate_bf_to_motor_yaw(float rate_target_rads)
@ -559,11 +559,11 @@ float AC_AttitudeControl::rate_bf_to_motor_yaw(float rate_target_rads)
integrator = _pid_rate_yaw.get_i(); integrator = _pid_rate_yaw.get_i();
} }
// Compute output // Compute output in range -1 ~ +1
float output = _pid_rate_yaw.get_p() + integrator + _pid_rate_yaw.get_d(); float output = (_pid_rate_yaw.get_p() + integrator + _pid_rate_yaw.get_d()) / 4500.0f;
// Constrain output // Constrain output
return constrain_float(output, -AC_ATTITUDE_RATE_YAW_CONTROLLER_OUT_MAX, AC_ATTITUDE_RATE_YAW_CONTROLLER_OUT_MAX); return constrain_float(output, -1.0f, 1.0f);
} }
void AC_AttitudeControl::accel_limiting(bool enable_limits) void AC_AttitudeControl::accel_limiting(bool enable_limits)

Loading…
Cancel
Save