mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-15 20:35:33 +03:00
Resolved wrong pitch stick sign issue
This commit is contained in:
parent
c764c1f093
commit
bbb348575e
1 changed files with 5 additions and 5 deletions
|
@ -79,7 +79,7 @@ static void updateAstaticAccelZController(const pidProfile_t *pidProfile, float
|
||||||
const float servoVelocityLimit = 100.0f / (pidProfile->afcs_servo_time * 0.001f); // Limit servo velocity %/s
|
const float servoVelocityLimit = 100.0f / (pidProfile->afcs_servo_time * 0.001f); // Limit servo velocity %/s
|
||||||
float accelReq = pitchPilotCtrl > 0.0f ? (0.1f * pidProfile->afcs_pitch_accel_max - 1.0f) * pitchPilotCtrl * 0.01f + 1.0f
|
float accelReq = pitchPilotCtrl > 0.0f ? (0.1f * pidProfile->afcs_pitch_accel_max - 1.0f) * pitchPilotCtrl * 0.01f + 1.0f
|
||||||
: (0.1f * pidProfile->afcs_pitch_accel_min + 1.0f) * pitchPilotCtrl * 0.01f + 1.0f;
|
: (0.1f * pidProfile->afcs_pitch_accel_min + 1.0f) * pitchPilotCtrl * 0.01f + 1.0f;
|
||||||
float accelDelta = accelReq - accelZ;
|
float accelDelta = accelZ - accelReq;
|
||||||
float servoVelocity = accelDelta * (pidProfile->afcs_pitch_accel_i_gain * 0.1f);
|
float servoVelocity = accelDelta * (pidProfile->afcs_pitch_accel_i_gain * 0.1f);
|
||||||
servoVelocity = constrainf(servoVelocity, -servoVelocityLimit, servoVelocityLimit);
|
servoVelocity = constrainf(servoVelocity, -servoVelocityLimit, servoVelocityLimit);
|
||||||
pidRuntime.afcsElevatorAddition += servoVelocity * pidRuntime.dT;
|
pidRuntime.afcsElevatorAddition += servoVelocity * pidRuntime.dT;
|
||||||
|
@ -108,16 +108,16 @@ static bool updateAngleOfAttackLimiter(const pidProfile_t *pidProfile, float lif
|
||||||
float liftCoefDiff = 0.0f,
|
float liftCoefDiff = 0.0f,
|
||||||
servoVelocity = 0.0f;
|
servoVelocity = 0.0f;
|
||||||
if (liftCoef > 0.0f) {
|
if (liftCoef > 0.0f) {
|
||||||
liftCoefDiff = limitLiftC - liftCoef;
|
liftCoefDiff = liftCoef - limitLiftC;
|
||||||
if (liftCoefDiff < 0.0f) {
|
if (liftCoefDiff > 0.0f) {
|
||||||
isLimitAoA = true;
|
isLimitAoA = true;
|
||||||
servoVelocity = liftCoefDiff * (pidProfile->afcs_aoa_limiter_gain * 0.1f);
|
servoVelocity = liftCoefDiff * (pidProfile->afcs_aoa_limiter_gain * 0.1f);
|
||||||
servoVelocity = constrainf(servoVelocity, -servoVelocityLimit, servoVelocityLimit);
|
servoVelocity = constrainf(servoVelocity, -servoVelocityLimit, servoVelocityLimit);
|
||||||
pidRuntime.afcsElevatorAddition += servoVelocity * pidRuntime.dT;
|
pidRuntime.afcsElevatorAddition += servoVelocity * pidRuntime.dT;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
liftCoefDiff = -limitLiftC - liftCoef;
|
liftCoefDiff = liftCoef + limitLiftC;
|
||||||
if (liftCoefDiff > 0.0f) {
|
if (liftCoefDiff < 0.0f) {
|
||||||
isLimitAoA = true;
|
isLimitAoA = true;
|
||||||
servoVelocity = liftCoefDiff * (pidProfile->afcs_aoa_limiter_gain * 0.1f);
|
servoVelocity = liftCoefDiff * (pidProfile->afcs_aoa_limiter_gain * 0.1f);
|
||||||
servoVelocity = constrainf(servoVelocity, -servoVelocityLimit, servoVelocityLimit);
|
servoVelocity = constrainf(servoVelocity, -servoVelocityLimit, servoVelocityLimit);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue