So the wibbly-wobbly flights from yesterday were due to ever decreasing battery power. The more flights I did, the more the wobbles and drift were evident. It’s not surprising really. Assuming the motors are a fixed impedance (they aren’t but it’s good enough for the point I’m making) then, the power provided to the motors depends on the voltage supplied by the batteries; P = V²/R.
A fully charged 3S LiPo measures about 12.43V
The same battery at 27% charge (yesterday’s wobble level) measures about 11.43V
That means running @85% of full power.
Loss of power is handled by the PIDs to some extent – as the battery voltage drops, the effect of reduced power is compensated for by the (I)ntegral parts of the rotation and Z-axis PIDs. But (I) is slower reacting and slower to stop reacting, giving rise to the wibbly-wobbles and drift.
This could be handled in the ESCs with the microcontroller tracking the input voltage with an ADC, and upping the pulse widths it sends to each phase of the motors as the battery power level drops.
Or it could also be done with the Raspberry Pi, and a ADC board, with the P-gain increasing as the battery power level drops.
Or I could stop running the batteries down to 27% charge levels. I think that’s the way for now. I bought a LiPo battery checker a while ago and it’s worth its weight in gold.