mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-24 16:55:29 +03:00
Drop no longer previous generation dampening solution
This commit is contained in:
parent
37bb8580db
commit
5f4dbb7913
3 changed files with 4 additions and 30 deletions
|
@ -1934,12 +1934,6 @@ groups:
|
|||
field: fixedWingCoordinatedPitchGain
|
||||
min: 0
|
||||
max: 2
|
||||
- name: fw_iterm_limit_stick_position
|
||||
description: "Iterm is not allowed to grow when stick position is above threshold. This solves the problem of bounceback or followthrough when full stick deflection is applied on poorely tuned fixed wings. In other words, stabilization is partialy disabled when pilot is actively controlling the aircraft and active when sticks are not touched. `0` mean stick is in center position, `1` means it is fully deflected to either side"
|
||||
default_value: 0.5
|
||||
field: fixedWingItermLimitOnStickPosition
|
||||
min: 0
|
||||
max: 1
|
||||
- name: fw_yaw_iterm_freeze_bank_angle
|
||||
description: "Yaw Iterm is frozen when bank angle is above this threshold [degrees]. This solves the problem of the rudder counteracting turns by partially disabling yaw stabilization when making banked turns. Setting to 0 (the default) disables this feature. Only applies when autopilot is not active and TURN ASSIST is disabled."
|
||||
default_value: 0
|
||||
|
|
|
@ -158,7 +158,6 @@ static EXTENDED_FASTRAM uint8_t usedPidControllerType;
|
|||
typedef void (*pidControllerFnPtr)(pidState_t *pidState, flight_dynamics_index_t axis, float dT, float dT_inv);
|
||||
static EXTENDED_FASTRAM pidControllerFnPtr pidControllerApplyFn;
|
||||
static EXTENDED_FASTRAM filterApplyFnPtr dTermLpfFilterApplyFn;
|
||||
static EXTENDED_FASTRAM bool levelingEnabled = false;
|
||||
static EXTENDED_FASTRAM bool restartAngleHoldMode = true;
|
||||
static EXTENDED_FASTRAM bool angleHoldIsLevel = false;
|
||||
|
||||
|
@ -170,7 +169,7 @@ static EXTENDED_FASTRAM bool angleHoldIsLevel = false;
|
|||
static EXTENDED_FASTRAM float fixedWingLevelTrim;
|
||||
static EXTENDED_FASTRAM pidController_t fixedWingLevelTrimController;
|
||||
|
||||
PG_REGISTER_PROFILE_WITH_RESET_TEMPLATE(pidProfile_t, pidProfile, PG_PID_PROFILE, 6);
|
||||
PG_REGISTER_PROFILE_WITH_RESET_TEMPLATE(pidProfile_t, pidProfile, PG_PID_PROFILE, 7);
|
||||
|
||||
PG_RESET_TEMPLATE(pidProfile_t, pidProfile,
|
||||
.bank_mc = {
|
||||
|
@ -271,7 +270,6 @@ PG_RESET_TEMPLATE(pidProfile_t, pidProfile,
|
|||
.fixedWingReferenceAirspeed = SETTING_FW_REFERENCE_AIRSPEED_DEFAULT,
|
||||
.fixedWingCoordinatedYawGain = SETTING_FW_TURN_ASSIST_YAW_GAIN_DEFAULT,
|
||||
.fixedWingCoordinatedPitchGain = SETTING_FW_TURN_ASSIST_PITCH_GAIN_DEFAULT,
|
||||
.fixedWingItermLimitOnStickPosition = SETTING_FW_ITERM_LIMIT_STICK_POSITION_DEFAULT,
|
||||
.fixedWingYawItermBankFreeze = SETTING_FW_YAW_ITERM_FREEZE_BANK_ANGLE_DEFAULT,
|
||||
|
||||
.navVelXyDTermLpfHz = SETTING_NAV_MC_VEL_XY_DTERM_LPF_HZ_DEFAULT,
|
||||
|
@ -672,19 +670,6 @@ static void pidApplySetpointRateLimiting(pidState_t *pidState, flight_dynamics_i
|
|||
}
|
||||
}
|
||||
|
||||
bool isFixedWingItermLimitActive(float stickPosition)
|
||||
{
|
||||
/*
|
||||
* Iterm anti windup whould be active only when pilot controls the rotation
|
||||
* velocity directly, not when ANGLE or HORIZON are used
|
||||
*/
|
||||
if (levelingEnabled) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return fabsf(stickPosition) > pidProfile()->fixedWingItermLimitOnStickPosition;
|
||||
}
|
||||
|
||||
static float pTermProcess(pidState_t *pidState, float rateError, float dT) {
|
||||
float newPTerm = rateError * pidState->kP;
|
||||
|
||||
|
@ -1050,11 +1035,9 @@ static void pidApplyFpvCameraAngleMix(pidState_t *pidState, uint8_t fpvCameraAng
|
|||
|
||||
void checkItermLimitingActive(pidState_t *pidState)
|
||||
{
|
||||
bool shouldActivate;
|
||||
if (usedPidControllerType == PID_TYPE_PIFF) {
|
||||
shouldActivate = isFixedWingItermLimitActive(pidState->stickPosition);
|
||||
} else
|
||||
{
|
||||
bool shouldActivate = false;
|
||||
|
||||
if (usedPidControllerType == PID_TYPE_PID) {
|
||||
shouldActivate = mixerIsOutputSaturated(); //just in case, since it is already managed by itermWindupPointPercent
|
||||
}
|
||||
|
||||
|
@ -1184,7 +1167,6 @@ void FAST_CODE pidController(float dT)
|
|||
|
||||
// Step 3: Run control for ANGLE_MODE, HORIZON_MODE and ANGLEHOLD_MODE
|
||||
const float horizonRateMagnitude = FLIGHT_MODE(HORIZON_MODE) ? calcHorizonRateMagnitude() : 0.0f;
|
||||
levelingEnabled = false;
|
||||
angleHoldIsLevel = false;
|
||||
|
||||
for (uint8_t axis = FD_ROLL; axis <= FD_PITCH; axis++) {
|
||||
|
@ -1204,7 +1186,6 @@ void FAST_CODE pidController(float dT)
|
|||
// Apply the Level PID controller
|
||||
pidLevel(angleTarget, &pidState[axis], axis, horizonRateMagnitude, dT);
|
||||
canUseFpvCameraMix = false; // FPVANGLEMIX is incompatible with ANGLE/HORIZON
|
||||
levelingEnabled = true;
|
||||
} else {
|
||||
restartAngleHoldMode = true;
|
||||
}
|
||||
|
|
|
@ -123,7 +123,6 @@ typedef struct pidProfile_s {
|
|||
float fixedWingReferenceAirspeed; // Reference tuning airspeed for the airplane - the speed for which PID gains are tuned
|
||||
float fixedWingCoordinatedYawGain; // This is the gain of the yaw rate required to keep the yaw rate consistent with the turn rate for a coordinated turn.
|
||||
float fixedWingCoordinatedPitchGain; // This is the gain of the pitch rate to keep the pitch angle constant during coordinated turns.
|
||||
float fixedWingItermLimitOnStickPosition; //Do not allow Iterm to grow when stick position is above this point
|
||||
uint16_t fixedWingYawItermBankFreeze; // Freeze yaw Iterm when bank angle is more than this many degrees
|
||||
|
||||
float navVelXyDTermLpfHz;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue