Skip to content

Commit

Permalink
Making angle mode more responsive (#689)
Browse files Browse the repository at this point in the history
* make angle feel more responsive
* Update pid.c
Co-authored-by: ctzsnooze <[email protected]>
  • Loading branch information
Quick-Flash authored Aug 23, 2021
1 parent b0a671d commit 3bcb359
Showing 1 changed file with 5 additions and 12 deletions.
17 changes: 5 additions & 12 deletions src/main/flight/pid.c
Original file line number Diff line number Diff line change
Expand Up @@ -486,28 +486,21 @@ static float pidLevel(int axis, const pidProfile_t *pidProfile, const rollAndPit
// calculate error angle and limit the angle to the max inclination
// rcDeflection is in range [-1.0, 1.0]
static float attitudePrevious[2], previousAngle[2];
float p_term_low, p_term_high, d_term_low, d_term_high, f_term_low, currentAngle, scaledRcDeflection, scaledAngle = 0.0f;
float p_term_low, p_term_high, d_term_low, d_term_high, f_term_low, currentAngle, angle, scaledAngle = 0.0f;

if (getRcDeflection(axis) != 0) {
scaledRcDeflection = getRcDeflectionAbs(axis) / (getRcDeflectionAbs(FD_PITCH) + getRcDeflectionAbs(FD_ROLL));
} else {
scaledRcDeflection = 0.0f;
}

float angle;
if (!FLIGHT_MODE(HORIZON_MODE)) {
if (pidProfile->angleExpo > 0) {
const float expof = pidProfile->angleExpo / 100.0f;
angle = pidProfile->levelAngleLimit * scaledRcDeflection * (getRcDeflection(axis) * power3(getRcDeflectionAbs(axis)) * expof + getRcDeflection(axis) * (1 - expof));
angle = pidProfile->levelAngleLimit * (getRcDeflection(axis) * power3(getRcDeflectionAbs(axis)) * expof + getRcDeflection(axis) * (1 - expof));
} else {
angle = pidProfile->levelAngleLimit * scaledRcDeflection * getRcDeflection(axis);
angle = pidProfile->levelAngleLimit * getRcDeflection(axis);
}
} else {
if (pidProfile->angleExpo > 0) {
const float expof = pidProfile->angleExpo / 100.0f;
angle = horizonCutoffDegrees * scaledRcDeflection * (getRcDeflection(axis) * power3(getRcDeflectionAbs(axis)) * expof + getRcDeflection(axis) * (1 - expof));
angle = horizonCutoffDegrees * (getRcDeflection(axis) * power3(getRcDeflectionAbs(axis)) * expof + getRcDeflection(axis) * (1 - expof));
} else {
angle = horizonCutoffDegrees * scaledRcDeflection * getRcDeflection(axis);
angle = horizonCutoffDegrees * getRcDeflection(axis);
}
}
#ifdef USE_GPS_RESCUE
Expand Down

0 comments on commit 3bcb359

Please sign in to comment.