Hello everyone,
I have just finished calculations for my AQ board and even set PIDs and my hexa flies well (altitude hold is great, no oscillations after changing PIDs, good handling, RTH working great), but there's one thing that I cannot fix - the copter flies away when I leave the sticks centered in manual mode. I looks like the default level for my hexa is not leveled at all! When sticks are centered, the copter flies backwards pretty fast most of the time. Sometimes it'll fly backward and left, sometimes backward and right. I can't recall now if it tried to fly forward.
I am sure that it's not caused by shifted center of mass in my hexa - I've tried mounting battery packs a bit more to the front but this haven't changed anything. I have also tried every PID setting (step by step as well as drastic changes to every value), and apart from making the copter lazy or oscillating, it still tries to fly backwards.
It's hard to tell weather the copter thinks it's leveled when in fact it is not or weather there's something else going on. When I leave the sticks centered and look on the primary flight display in my QGC, it'll sometimes show the copter leveled and sometimes tilted back a bit. It's really hard to tell accurately because the QGC has a bit of lag and the copter flies backwards pretty fast after short while and I don't want to loose the copter from sight for too long when I'm in manual mode. What's interesting is that, although I haven't set the position hold PIDs yet, the copter can maintain it's position pretty well when in PH mode.
Now, my question is, how does the AQ determine the absolute level? I have flown MultiWii boards before and there was a function to accurately calibrate and trim the accelerometer. Basically the copter had to be placed on leveled surface and the 'calibrate ACC' function had to be engaged. I could then additionally trim the accelerometer. After that, the board knew where the level was. How does this work in AQ? Is the leveled position for accelerometer determined during gathering calibration data? If yes - when? Is it done during static data logging (when the board has to be leveled), or maybe during the dynamic part?