Closed NotFastEnuf closed 4 years ago
i think i have found a pretty good way to "runtime" all the filters with minimal overhead, as implemented on the feature-refactor-filter branch. with that adjustments by us (eg. swapping out dterm filter) would be come very easy and straightforward.
From a user-perspective i think presets are the way to go, with the option to go full "expert mode". this should be somewhat hidden, so that the novice user does not get any ideas.
biggest issue in my mind is the last point. while i'm somewhat certain that the work i have done so far has not changed the behavior in any major way, the devil is in the details here. we could go ahead and build it the way we want it and then let the focus group a/b test (spread versions with and without the change without telling them, compare results)
Some thoughts:
Filters are complex to "tune" for most users. Do we want presets, presets and frequency cut adjustments, or just frequency cut adjustments?
Do we want to keep multiple types of filters and add more like Kalman, Pt1, 2 passes of PT1, 2nd order...etc
Should the D term 2nd order filter be replaced by 2 passes of Pt1?
I agree that advanced users are going to want more options than less - but should all advanced users just rely on compile time adjustments - or do we support runtime also?
My initial thoughts at the moment are to make available two passes of PT1 on gyro, two passes of PT1 on D term(although i have not even flown this - LOL) and the cut frequency for each. Setting a cut frequency to 0 will turn a pass of filtering OFF. Presets just like what we have done for PID sets can be made available.
This is certainly our biggest challenge to date as we are all very distracted by development and maybe are not flying and scrutinizing flight behavior as mush as we should on a large variety of craft. Maybe there is real benefit to kalman or to our 2nd order filter over two passes of PT1. It is also alot of work to keep them all available just to prune out the ones we dont want later from a runtime config approach.