Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/Settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -6454,7 +6454,7 @@ Throttle PID attenuation also reduces influence on YAW for multi-rotor, Should b

### tpa_pitch_compensation

Pitch angle based throttle compensation for fixed wing. Positive values will increase throttle when pitching up, and decrease throttle when pitching down.
Pitch angle based throttle compensation for fixed wing, used as a proxy for airspeed when no airspeed sensor is fitted. Positive values will increase this virtual throttle (attenuating PID gains) when pitching down, and decrease it when pitching up, since diving increases airspeed and climbing reduces it.

| Default | Min | Max |
| --- | --- | --- |
Expand Down
2 changes: 1 addition & 1 deletion src/main/fc/settings.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1399,7 +1399,7 @@ groups:
min: PWM_RANGE_MIN
max: PWM_RANGE_MAX
- name: tpa_pitch_compensation
description: "Pitch angle based throttle compensation for fixed wing. Positive values will increase throttle when pitching up, and decrease throttle when pitching down."
description: "Pitch angle based throttle compensation for fixed wing, used as a proxy for airspeed when no airspeed sensor is fitted. Positive values will increase this virtual throttle (attenuating PID gains) when pitching down, and decrease it when pitching up, since diving increases airspeed and climbing reduces it."
default_value: 8
field: throttle.tpa_pitch_compensation
min: 0
Expand Down
2 changes: 1 addition & 1 deletion src/main/flight/pid.c
Original file line number Diff line number Diff line change
Expand Up @@ -517,7 +517,7 @@ static float calculateTPAThtrottle(void)
if (usedPidControllerType == PID_TYPE_PIFF && (currentControlProfile->throttle.fixedWingTauMs > 0)) { //fixed wing TPA with filtering
fpVector3_t vForward = { .v = { HeadVecEFFiltered.x, -HeadVecEFFiltered.y, -HeadVecEFFiltered.z } };
float groundCos = vectorDotProduct(&vForward, &vDown);
int16_t throttleAdjustment = currentControlProfile->throttle.tpa_pitch_compensation * groundCos * 90.0f / 1.57079632679f; //when 1deg pitch up, increase throttle by pitch(deg)_to_throttle. cos(89 deg)*90/(pi/2)=0.99995,cos(80 deg)*90/(pi/2)=9.9493,
int16_t throttleAdjustment = currentControlProfile->throttle.tpa_pitch_compensation * groundCos * 90.0f / 1.57079632679f; //groundCos is positive while diving; this raises the virtual throttle (and so attenuates PID gains) when pitching down, since diving increases airspeed. cos(89 deg)*90/(pi/2)=0.99995,cos(80 deg)*90/(pi/2)=9.9493,
uint16_t throttleAdjusted = rcCommand[THROTTLE] + constrain(throttleAdjustment, -1000, 1000);
tpaThrottle = pt1FilterApply(&fixedWingTpaFilter, constrain(throttleAdjusted, 1000, 2000));
}
Expand Down
Loading