mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-23 16:25:31 +03:00
Small modification to ff boost spike suppression
The feed forward boost concept improves stick response by adding a stick acceleration factor to feed forward. Generating spikes when there are steps in the RC signal is the main problem. This PR makes one small change to how the spike suppression method is determined. It no longer uses the 'jerk' signal to generate the spike suppression 'clip' value. Instead it just uses the magnitude of the boost signal itself. We originally used jerk because it is more sensitive to spikes. Detailed testing shows that jerk is that it has an unwanted impact one full RC step after the spike. If we use the boost (acceleration) signal as the attenuator, that delayed impact does not occur, making the boost component more precise. The threshold value for suppression needs to be a bit higher to achieve equivalence. I've re-named the function to reflect it being related to spike suppression and removed 'jerk' since we aren't using that any more.
This commit is contained in:
parent
ab4328f293
commit
e381b27b9c
5 changed files with 16 additions and 17 deletions
|
@ -183,7 +183,7 @@ typedef struct pidProfile_s {
|
|||
|
||||
uint8_t ff_interpolate_sp; // Calculate FF from interpolated setpoint
|
||||
uint8_t ff_max_rate_limit; // Maximum setpoint rate percentage for FF
|
||||
uint8_t ff_jerk_limit; // FF stick extrapolation lookahead period in ms
|
||||
uint8_t ff_spike_limit; // FF stick extrapolation lookahead period in ms
|
||||
} pidProfile_t;
|
||||
|
||||
PG_DECLARE_ARRAY(pidProfile_t, PID_PROFILE_COUNT, pidProfiles);
|
||||
|
@ -261,4 +261,4 @@ float pidGetPreviousSetpoint(int axis);
|
|||
float pidGetDT();
|
||||
float pidGetPidFrequency();
|
||||
float pidGetFfBoostFactor();
|
||||
float pidGetJerkLimitInverse();
|
||||
float pidGetSpikeLimitInverse();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue