I deleted all the calibration code, and instead wondered whether the Butterworth filter could identify the gravity offsets. And the answer is clearly yes. I did about 10 test flights - this is probably the worst, and she broke a leg on landing. The wind then blew up and so I'll have to wait until tomorrow to show you something more convincing. But I do think this answers the question of how off-the-shelf UAV's manage without the level of calibration I've been trying.