Platform: quad, about 2m in diameter, 40" props, and just under 25kg without payload.
Hardware: Cube Orange, 2*Here3 GPSs (blending), Mauch voltage and current sensors.
Running ArduCopter V4.0.5 (3f6b43e3)
Basically, I am experiencing toilet bowling in Loiter, that I think does not come from the compasses, in the first minute of flight, after which I change modes, fly a bit in AltHold and then trying again Loiter, at which time the toilet bowling disappears. In the first minute, I tried twice to counteract the toilet bowl effect with stick input but I also left it some seconds on its own. We have 3 completely identical drones and we have flown them a bit (about 100 flights) without any issues. Here is the log.
What I have done, checked or what you should consider:
Prior to the flight, compass calibration was done (using only the 2 external ones, which are about 40cm in front and 30 above the AP) along with radio calibration and horizon calibration. All other settings were done in/before prior flights.
Motors are aligned up to 0.2deg. Structure is fine
Motors do start at the same PWM
On the day of the flight there was wind (3~6 m/s)
Drone was on at least 3 min prior to take-off if I recall correctly
I found interesting things, though inconclusive from : NKF3 IVN & IVE, NKF4 SV & SP, PSC TPX & PX / TPY & PY
The drone was not flown since but flew prior without issues, though not too much
KP index was low. The flight was done quite north. The day was not overcast
Any help would be good. I am out of ideas. Maybe it comes from the GPSs, or Velocity XY PIDs but I was not able to draw a conclusion.
disable all other compass apart from the one on your gps puck thats up and away from the rest of the vehicle, if the compass is anywhere near power cables they will be useless and give bad data causing the toilet bowl effect. its better to just disable the offending compass modules rather than relying on them for redundancy, as comparing good data to bad data just gives more bad data.
Despite being caused by the compass toiled bowling is actually a velocity variance. The vehicle measures its XYZ acceleration in body frame with a accelerometer. This acceleration is then integrated over time to get a velocity. We also get a velocity estimate from the GPS, however that is in earth frame. The vehicles yaw, from the compass, is then used to align the body frame velocity estimate from the accelerometer with the earth frame estimate from the GPS. Hence if the yaw estimate is wrong the two estimated velocitys seem not to agree and you get a velocity variance.
Step one for such things is to run the magfit tool, this is more accurate than the onboard compass and compass motor calibration. The key thing is to get a nice log, you want lots of turns and a range of current draws. Our got-to method is to fly figure eights at a range of speeds.
Thank you all for the help! There were several issues on the drones. The main one was the Compass calibration. Magfit did the trick. There were still some smaller issues there but because of regulations we are not moving to slightly smaller drones. You made this possible.