* feedforward update for 4.6
improve jitter reduction method
don't interpolate CRSF protocol
replace 'boost' with highpass element for yaw FF
make yaw highpass element CLI adjustable
add yaw feedforward sustain params to CLI and BBE
refactoring and unit test fix
* implement review suggestions, start on the filter struct
* Attempt PT1 filter init method
* fix silly error, scale time constant correctly
improve gain linearisation at shorter time constants
* fix averaging init
* Review suggestions from PL
* Improve filter initialisation
much better :-)
* re-name prevPacketDuplicate to prevPacketWasADuplicate
* Add review comments - thanks Jan and Mark!
* cast gyro.gyroDebugAxis to int
* A better fix than int cast
* implement review comments from PL
also hopefully improved some comments.
* increase PG to 10, expecting the Disarm PR to use 9
* two always win against one ;-)
* remove inappropriate comment, remove space
* update comments and review suggestions from PL
* ezLanding
* Add ez_landing throttle mode
* Correct EzLanding scaling of motorMixRange
* Correct mixer_type switch bracing style
* Remove motor value cliping ez landing mode
- rename mixer type cli setting to EZLANDING from EZLANDING_THROTTLE
- remove EZLANDING_CLIP cli setting
- double default ez_landing_threshold
- halve default ez_landing_limit
- check and limits in cli settings
- remove mixer type dependent settings in mixer_init
- remove clip based code in mixer.c
* Change ez_landing setting values and refactoring
- Halve defaul ez_landing_threshold setting and double in init instead.
Now stick deflection equal to ez_landing_threshold should give approimately full authority.
Previously it was the point where the mixer was allowed to raise the throttle to 100 % (which wouuld never be required)
- Increase ez_landing_threshold maximum to 200 (from 100) to allow settings that increase authority by a little at full stick deflection
- Increase ez_landing_limit maximum to 75 which is the point where EzLanding should act identical to the Legacy mixer with airmode on
- remove throttle percent from
- simplify calculation of , since throttle stick deflection is no longer involved
- update/remove outdated comments
* Remove old EZLANDING entries in mixerType enum
* Add mixer_type setting to blackbox log header
---------
Co-authored-by: ctzsnooze <chris.thompson@sydney.edu.au>
Co-authored-by: Mark Haslinghuis <mark@numloq.nl>
* Refactor Feedforward Angle and RC Smoothing
* update rc_smoothing at regular intervals
* add Earth Ref to OSD, update pid and rate PG
* Initialise filters correctly
* refactoring to improve performance
* Save 24 cycles in Horizon calculations, other optimisations
At a cost of 40 bytes
* save 25 cycles and 330 bytes in rc_smoothing
* feedforward max rate improvements
* typo fix
* Karatebrot's review suggestions part one
* Karatebrot's excellent suggestions part 2
* more efficient if we calculate inverse at init time
Co-Authored-By: Jan Post <post@stud.tu-darmstadt.de>
* Horizon delay, to ease it in when returning sticks to centre
* fix unit tests after horizon changes
Co-Authored-By: 4712 <4712@users.noreply.github.com>
* horizon_delay_ms, default 500
* fix unit test for feedforward from setpointDelta
* Final optimisations - thanks @Karatebrot for your advice
* increase horizon level strength default to 75 now we have the delay
* restore Makefile value which allowed local make test on mac
---------
Co-authored-by: Jan Post <post@stud.tu-darmstadt.de>
Co-authored-by: 4712 <4712@users.noreply.github.com>
* Angle and Horizon Update for 4.5
* BugFix FF noise Angle Mode on yaw and in level _race mode
* use time constant in ms for angle feedforward smoothing
* refactor to remove unnecessary definition
---------
Co-authored-by: ChrisRosser <chrisrosser91@gmail.com>
Update to anti-gravity, including removal of the old Step mode, ability to adjust the P contribution (thanks @Limon), PT2 smoothed derivative model, inherent limiting of P boost during extremely fast stick travels to minimise P oscillations, less I during the middle of a throttle up, no I boost on yaw, add hz to cutoff labels
No antigravity on yaw, fix longstanding typo
h
Each parameter is independent.
Set actual centre sensitivity and actual max rates.
For:
Centre sensitivity of 200 = rcRate of 1.0; enter as 2.0 in Config, 200 CLI
Max Rate of 800, enter sRate as 0.8 in Config, 80 in CLI
Expo enter as usual, 0.5 approximates no expo, 0 is flatter, 1 is about the same as 0.5 expo usually, but won't change centre sensitivity.
Changes yaw spin recovery from a simple on/off to on/off/auto. In auto mode the triggering threshold is automatically calculated based on the user's current max yaw rate.
So `yaw_spin_recovery` has the following options:
`OFF`: Feature is disabled
`ON`: Feature is enabled with a manually configured `yaw_spin_threshold`
`AUTO`: Feature is enabled and the trigger threshold is automatically calculated.
The auto calculation of the trigger threshold is:
```
MAX(yawRate * 0.25, 200)
```
The 25% of the user's rate is to provide a buffer for yaw overshoots during normal flight. Overall the threshold is constrained between 500 - 1950 to match the manual selection.
The default is changed from `ON` to `AUTO` so that users will get protection without needing to configure the threshold manually.
In `AUTO` mode the threshold is calculated dynamically so rate changes in flight (like rateprofile change) will set a new trigger threshold.
Allows default settings for RC smoothing to work seamlessly regardless of the feedforward type selected ("classic" vs. interpolated).
Adds a new "AUTO" setting for the derivative filter type that will select based on whether interpolated feedforward is enabled (use PT1) or not (use BIQUAD). The derivative filter cutoff if set to auto (0) will also use a fixed cutoff calculated from a 100hz base if interpolated feedforward is enabled. Otherwise if classic FF is active then it will default to the previous method of calculating the cutoff based on the RX frame rate.