Another day, another type of test to track down where these strange readings are from. This time, Phoebe sits on a flat platform which sits on a set of sponge balls on the floor.
I then roll her round in circles on the floor, which should produce sine waves of acceleration from the X and Y sensors 90° out of sync. And ignoring the noise (I’d turned down dlpf to 40Hz, that’s what’s shown:
Scale seems plausible at up to 0.4g acceleration. qax has a slight negative offset suggesting she’s leaning slightly – she’s picking up -0.025g or as a first order estimate of the angle -0.025 radians or -1.5° – again plausible.
So the deadzone theory is dead! But there is something interesting here: above is the complete acceleration including gravity; once gravity is subtracted, then this is what you get:
And this is where it gets interesting – the -0.025g offset has gone, which is good, but so has the bulk of the sine wave shape leaving only spikes – compare the scales of the two graphs.
The measurement for gravity in the earth reference frame is fixed throughout the flight – it’s measured as part of the pre-flight checks. But critically, the measured acceleration is used to calculate the angles used to redistribute fixed gravity to the new quadcopter reference frame – and I think it’s these angles and their reorientation of gravity between reference frames that’s also removing the sine waves. And sure enough, the angles graph below shows Phoebe pitching and rolling by ±20°, whereas I know full well she is not because she’s sitting on a flat platform that can’t pitch and roll.
So what I need is a way to calculate these rotation matrix angles ignoring the net acceleration; again we’re back to complementary or Kalman filters and using the gyro angles. Except there’s another problem: the gyro angles are all in the quadcopter reference frame; what’s needed is a way to convert the gyro angles to the various intermediate Euler angles of a rotation matrix which lie in three different reference frame. I vaguely remember something about this in a paper I read one – time to go on a hunt again.