I’ve tried various ways to acclimatise Zoe’s sensors prior to flight. The best so far is to set the props spinning at minimum speed, and after 5 seconds, grab a FIFO full of data (42 batches of samples in the 512 byte FIFO and 12 byte batch size), and use these to calculated start-of-flight gravity. The props then continue to run at this base speed up to the point the flight kicks off.
The net result is a stable flight with no vertical drift during hover, but with horizontal drift of about a meter. Without this code, horizontal drift is half this but she continues to climb during hover.
I’m not sure how I can improve this, so I’ll leave it alone for now and instead have a look at making a DIY cardboard box to keep Zoe out of the wind.
In passing, I did a quick analysis of the code size: 1021 lines of python code, 756 lines of comments and 301 blank lines giving a total of 2078 lines in Quadcopter.py. Here’s the script I knocked together quickly FYI:
code = 0 comments = 0 spaces = 0 with open("Quadcopter.py", "rb") as f: for line in f.readlines(): line = line.strip() if len(line) == 0: spaces += 1 elif line == '#': comments += 1 else: code += 1 print "Code %d, Comments %d, Blank Lines %d, Total %d" % (code, comments, spaces, code + comments + spaces)
I’ve put Zoe’s code up on GitHub as the best yet, although the either / or of vertical / horizontal drift is seriously starting to pᴉss me off.
Note that since I’ve moved the IMU FIFO into the Quadcopter.py code, QCIMUFIFO.py is not longer on GitHub; Quadcopter.py is the latest best working version and QCDRI.py is the best version that uses the data ready interrupt in case you are seeing the I2C errors like I used to.