@iampete is right that there could be a servo issue, but I think there is another explanation.
You can ARSPD_FBW_MIN set to 18, which is telling ArduPilot that this plane stalls below 18m/s, but the log shows that for most of the flight you don’t go above 18m/s:
as you have ARSPD_USE=0 that means that while you have an airspeed sensor, ArduPilot didn’t use it, it just logged it. The value it used is the synthetic airspeed estimate, which is CTUN.Aspd in the above graph.
The reason this matters is that ArduPilot disables the use of the PID integrators when you are below the stall speed. This is needed so that we don’t get a big integrator buildup before takeoff.
For this aircraft that matters a lot, as the plane is very poorly tuned. If we take a look at the earlier part of the flight, we see this:
you can see that the PID is not managing to bring the roll in line with the desired roll. There is an error of about 8 degrees. If the integrator had been working then it would have slowly increased the amount of aileron it applied until it reduced the error to zero. As it was “below stall speed” it didn’t do that, and just applied the amount of aileron given by the P gain, which isn’t nearly enough.
The same happened when you lost control and couldn’t turn at the end. It applied the amount of aileron setup by your P gain, but didn’t apply more as the integrator was disabled.
The way to fix this is as follows:
- set a correct value for ARSP_FBW_MIN. Looking at the log I’d say a value of around 10 would be about right.
- re-do your tuning. The values you have for the P gain is way too low for this aircraft. I’d suggest at least doublilng it, and very likely 3x.
- keep the ratio of P to I at about 5 to 1. So if you set P to 1.0 then set I to 0.2
- as your airspeed sensor does appear to be working I suggest setting ARSPD_USE=1
I hope this helps!