Another new feature of upcoming INAV 1.6 (BTW, INAV 1.6 ALPHA-1 has just been released) is brand new PID controller for fixed wings. I repeat: this new controller is used only on fixed wings, multirotors are not affected.
So, what is new about this new PID controller? First of all, it is no longer a PID (Proportional, Integral, Derivative). It is a PIFF (Proportional, Integral, Feed Forward) controller. What is the difference?
Traditional PID controller computes error between setpoint and measurement and feeds it to 3 modules: P, I and D.
On multirotors everything is fine. On fixed wings it creates few problems:
- For Dterm being effective, Dgain has to be big and that introduces a lot of noise and even then it is more less useless
- Fancy Iterm limiting so much needed for multirotor acrobatics is not needed on fixed wings. It can even lower flight performance
- Default Pgain is much bigger (more less twice) that fixed wings requires and makes servos and control surfaces very active
To solve those problems, PIFF controller has been introduced:
- Pterm is more less unchanged, but have much smaller default values
- Iterm has been simplified to fit better fixed wing requirements
- Dterm has been removed and replaced by Feed Forward component
What Feed Forward does, it uses setpoint, not error (pilots input) to feed it to servos. What is the advantage of such approach? Much less activity on control surfaces. Level flight stabilization is archived mainly by Iterm. Less active Pterm engages only when really heavy disturbance was introduced or pilot actually touched the sticks. FFterm handles pilot’s inputs. If pilot is not touching sticks, it does nothing. When pilot want to perform a maneuver, it passes the command to servos just like there no stabilization, while Iterm and Pterm still keeps an eye on the things.
As a result, flight performance, especially on fast and agile airplanes, should be greatly improved. Stabilization will be less invasive but still preset.