HoG lost her flight virginity today, and she lost it with enthusiasm – a little too much to be honest. Three second flight plan – one second takeoff to 0.5m, one second hover and one second descent. All maiden flights are a huge gamble: in HoGs case, she had
- new arms
- new props
- new motors
- new frame
- new calibration method
- new butterworth filter parameters.
Given that, I’d say her performance was surprisingly good!
She took off vertically from sloping ground. That alone is nearly an unqualified success. For it to have been a complete success though, she would have stopped at 0.5m off the ground and hovered. Instead, she whizzed up to 3m and then I hit the kill switch even before she had the change to try to hover.
A few lessons learnt even from such a short flight though:
- zero g calibration seems to work, but it needs doing for X, Y and Z axis
- having dlpf set to 180Hz rather than the normal 20Hz probably wasn’t a smart move regardless of how good the Butterworth might be
- aluminium arms bend and don’t straighten when they hit the ground at over 7.5ms-1!
New arms are on the way and will arrive tomorrow, allowing me to do the zero g calibration of the Z axis also!
But what’s Zero-G calibration, and how do you do it without going into space?
Historically, I’ve been jumping through hoops trying to get sensor calibration stable, controlling the temperature to 40°C while rotating her in the calibration cube to measure ±g in all three axes to get gains and offsets. Yet despite all that effort, the sensors, and hence Zoë, still drifted, even if only modestly over time, still enough that she couldn’t fly in the back garden for more than a few seconds without hitting a wall.
The move to the MPU-9250 for HoG from Zoë’s MPU-6050 IMU initially seemed a retrograde step – it didn’t seem to be able to measure absolute temperature, only the difference from when the chip was powered up. And that meant the 40°C calibration could no longer work. Lots and lots of reading the spec’s yielded nothing initially,
But in passing I’d spotted some new registers for storing accelerometer offsets to allow them to be included in the IMU motion processing. That suggested there was a way to get valid offsets. Additionally, again in passing, I’d spotted a couple of Zero-G specifications: critically that the Zero-G level change against temperature was only ±1.5mg / ºC. That means an offset measured in a Zero-G environment hardly drifts against temperature. And a Zero-G environment doesn’t mean going up to space – it simply means reading the X and Y axis values when the Z-axis is aligned with gravity. So with HoG sat on the floor, X and Y offsets are read, and then holding her against a wall gives the Z offset. So calibration and updating the code takes only 5 minutes and requires no special equipment.
Delight and despair at the same time: delight that I now had a way forwards with the MPU-9250 (and it would work with the MPU-6050 also), but despair at the time and money I’d spent trying to sort out calibration against temperature.