PID's, FF in Qhover, Qstabilised and Qloiter modes - vectored thrust tailsitter, general rules

Recently I was messing a lot with my tailsitter tuning. I’ve tried to get rid of some oscillation and I’ve managed to do it but it got a bit less responsive.
The biggest concerns I’ve had was the way FF and P works for Qhover and Qstabilise mode. They for sure work differently.
At one point I’ve set pitch P, I and D to 0 and left only FF at 0,1. I was shocked the controller was still correcting the movement of the aircraft in Qhover, mode since it got no P and I always thought the FF parameter is bond to MY inputs only, not the controller inputs. The way I understood this, was that every input from the pilot is feed directly to the servos and is proportional to FF parameter. The rest, like the autopilot inputs and stabilization functions are controlled by PID. But it doesn’t look this way.
The aircraft with PID at 0 and FF at 0,1 was behaving better than with any P or D regarding oscillations (at least in Qhover). But after rising FF to 0,2 all servos start to oscillate on low throttle inputs. That’s the thing I don’t understand the most - how come that FF is amplifying oscillations if it’s only direct stick input to the servos ?
I need a little bit more response (more vectored thrust servos movement) to correct my attitude now.
Can somebody explain to me how PID and FF exactly work in Qhover and Qstabilize ?
I mean what does P do, If the controller works without it and only with FF ? Why do I need P, and how should I tune the balance between P and FF ?
Another thing is - should I mess with Q_A_ANG parameters during tuning ? When should I use them instead of Q_A_RAT parameters ?

It is easy to forget the are multiple levels of PID control.

For angular rates we have Q_A_RAT
For angles we have Q_A_ANG
For velocity we have Q_P_VEL
For position we have Q_P_POS

Depending on the mode your giving inputs at different levels. Each level uses all the lower levels of control. So in auto your using all the controllers.

So your Qstabalise example. You using both the Q_A_RAT rate gains and the Q_A_ANG angle gains. You turned off the rate gains except FF, so the input to the rate controller is just applied to the output. It is still stabilizing because the input to that controller is not the sticks but the output of the Q_A_ANG angle gains. If you were to repest the same test in Qacro you would see as you expected because the angle controller is not used and the sticks are direct input to the rate controller.

Because of this layering of controllers it is important that the lowest level rate tune is good, it is used in all modes. If the rate tune is bad all the other tunes will also be bad. Like wise if you were to change the rate tune significantly you might have to re-tune the higher level controllers.

The lower the level the more vehicle specific the tune is, all vehicles will have a different rate tune most will have a different angle tune but by the time we get to the position tune it is quite rare that anyone has to change from the defaults.

1 Like