Glad to hear you are further exploring the inner workings of the force reconstruction filter. Most appreciated if you can share simulated measures how the filter behaves, it would help us testing by knowing what to expect and aim for when changing filtering values. Following pondering is based on my assumptions I got when testing beta firmware and reading posts here and in iRacing forum. Feel free to correct if these aren’t how things are implemented or comment if you have different opinions. And just to clarify, I’m enjoying things as they are in the beta phase, thank you guys for the hard work you’ve done, just tossing ideas around.
New force reconstruction filter is great for what it’s made for. It very effectively smoothens the feeling from stair step like FFB-signal games are providing while maintaining expected force curves. With MMOS, stair steps were clearly felt in steering wheel if run without huge amounts of filtering. This was most obvious in iRacing with 60hz FFB update rate, but the same was true to some extend with every other sim with MMOS. While offering smooth feeling with fast filtering, new force reconstruction filter also gives more “lively” steering which is great in some cases, but also comes with shortcomings in certain scenarios. My biggest worry is overshooting nature of predictive/extrapolating filtering because now filtered force values exceed raw values calculated by game. While it doesn’t look quite so bad with relatively low frequency triangle wave, overshooting can be seen in simulated force curve Tero posted some time ago. I’m guessing this is with filter setting 1, it would be nice to see simulation with other filtering setting values too.
I assume overshoot gets quite vicious when we have sharper changes in raw FFB signal than shown in triangle wave example. If we take for example sharply oscillating FFB forces where raw signal is changing from -50% force to +50% force within one sampling period (50% force pulling towards left, then rapidly 50% force pulling to the right), at the peak overshooting filter will give us briefly a force of 100% pulling to the right. 50% forces come from raw values, then added with 50% from prediction/extrapolation as previous sample change was 100 units (from -50% to +50%). Result is filtered force being momentarily twice the force calculated by the game. Such rapidly swinging forces probably shouldn’t be created by sim in the first place, but at least in rFactor 2 instant and large FFB value changes are occurring in normal driving situations. Higher force reconstruction filter values than 1 will supposedly take more samples in account when calculating filtered force curve, but won’t remove the overshooting, only somewhat average it out. This is of course only my understanding how current filter works based on that one graph and would gladly hear from you guys if this is anywhere accurate assumption.
Theory aside, new filter feels great in iRacing and Assetto Corsa, as their raw FFB signal is quite smooth and won’t induce much forces prone for overshooting. It might even be that overshooting nature of the reconstruction filter is the key why we can now use more damping while retaining good amount of detail as filter can exaggerate sharp forces which would otherwise be deadened by damping.
Most problematic game for me with beta firmware has been rFactor 2 as its FFB signal is lot spikier than in iRacing or AC. Without enough filtering the FFB is very harsh, almost like driving with steel tires. Some car/track combinations also produce very strong and high frequency vibrations (e.g. Radical in Matsusaka pit lane with TBW 1000hz or higher, ingame or simcube filtering <7). With too much filtering cars feel bouncy like having overinflated tires. I think this is due in-game filter retaining the overall amount of energy in short FFB spikes, but spreading the force over longer period of time and force reconstruction filter’s tendency to maintain force in short FFB bursts is not playing nicely with in-game filtering. Best combination seems to be leaving in-game filtering to zero, force recon filter to 4-7 and lowering TBW to 470-680hz. This gives quite nice rubbery feel and feels more direct (=less latency) than what I used in MMOS (in-game filtering at 5-8 and MMOS filter at 5).
Now reasoning what would allow even less filtering and more direct feel in games like rF2, I think there’s two components. One is limiting filtered force values to at maximum the same as raw values, i.e. no overshooting. Below is a mock-up graph showing the idea what would proposed signal filtering look like. MMOS’s moving average filter was something like this I guess.
This probably would deaden the feeling in games where FFB is not very lively to begin with, but would allow using overall higher FFB levels without hitting extreme forces in short bursts with games like rF2.
Second component of the filter would be implementing faster filtering when forces are decreasing. This is based on the concept that increasing FFB forces are usually felt through relatively soft tires which are flexing when e.g. hitting a bump or cornering, thus forces shouldn’t be so rapid and in some games we need increased filtering to get that rubbery feeling. But when the tire catches air after a bump or otherwise loses grip, force release should be almost immediate. If force release follows the same slow reacting filter than force increase was set in order to have rubbery feeling, it feels like there’s “residual” forces even after steering should have loosen up. This is most easily felt in rF2 with stiffer cars and bumpy roads, like F2 and Sao Paolo (T1-T2 and T11). If filtering is set high enough to get rid of mechanical feel and noise from motor, bumpy sections on the road feel like they’re covered with large speed humps. I assume that filter which would smoothen the spikes by rounding FFB curve’s ramp ups without overshoot and not spreading total “impact” energy over a longer time period, would offer improved feeling allowing less overall filtering while still taming excessive vibrations and sharp forces. Below is an illustration where increasing forces are filtered over three previous samples and decreasing forces only over one previous sample.
I know proposed filter wouldn’t be optimal by any means. Overall amount of forces are lowered from raw values and some information is lost. Even if it might help coping with rF2’s FFB (and I’m not 100% sure even about that), it most probably won’t provide best results with all the games. But since we are already creating special filters to improve suboptimal FFB signals offered by different games, I think alternative filtering methods to choose from would make good case for further development. Even MMOS-style simple moving average filter would be nice addition to Simucube’s repertoire as it’s got some positive qualities too and might come in handy with some games. I know if any new filters are to be implemented, they’d need to be translated into mathematical functions and I don’t currently have any clue how that’s done. But if new kind of filters are possible to implement and in anyone else’s interest, I’m willing to dig in more into this.
To wrap up, three main thoughts:
- It would be nice to have more information on how Force Reconstruction filter works, particularly with higher filter values than 1.
- Force Reconstruction filter being excellent as it is, could it still be possible to implement more filters to choose from?
- My impression is that less energetic filtering might do good things to rF2’s FFB signal: no overshooting (no prediction/extrapolation) and faster filtering for decreasing forces.