What are your control variables ?
The writeup suggests that you're controlling for attitude, but the
output control is probably motor power, which is thrust and hence
proportional to acceleration.
If this is the case, there is a mechanical integration between motor
power and attitude, so the D term is effectively integrated into P.
This might explain why you found it easier to adjust D first - you
were really adjusting the P term. It's a very common problem and you
can successfully tune for it, but makes understanding the adjustments
confusing.
The easiest way to check is to decide what the effect of a step in
output power does : if it causes a fixed jump in the control variable
you're measuring (eg attitude), then the PID terms are correctly
assigned. If it causes an error that's changing at a speed dependent
on the step size, you're getting an unintended integration.
The attitude-dependent bias to acceleration due to gravity probably
doesn't help at all, either.
Alternatively, if you were controlling for acceleration (which would
require a second PID loop to stabilise attitude), the problems might
have been caused by lag, either in the motor control, the measurement
update rate, or perhaps the behaviour of air around the props. Delay
isn't well handled by PID, which is a second-order linear system and
has no direct compenation for it. PID is used regardless in many
systems, but it's usually necessary to overdamp the response to avoid
overshoot.
And thanks for the cool videos :)
-adrian