Quadplane VTOL response behaviour at extreme angles

Hey all,

We recently crashed a large quadplane while trying to perform AUTOTUNE.

Long story short was that a series of unfortunate events (engine issues + bad piloting skills) led to the aircraft entering a stall spin; switching back to QHOVER did not help to recover from the spin and eventual crash.

However, after looking at the logs, we noticed something peculiar:

At the point when QHOVER was engaged, the aircraft was rolled almost 90 degrees to the right; intuitively, the VTOL Attitude Controller should be trying to roll in the opposite direction to level the aircraft. However, from the log, the desired roll is in the same direction as actual, and making the system roll to the right even more.

I am quite curious as to why the controller would respond this way. Is it being confused by the extreme angles, and unsure of which direction to correct? If that is the case, how is quadplane’s attitude controller configured to respond to extreme scenarios (e.g. 90 degree bank angles, flips)? Have tried looking through both the documentation and the code without much success.

Log file is here: https://drive.google.com/open?id=19A2Noj9LrTrJLkX3n6KsA01gWyOgS4mE
Onboard camera footage is here (stall spin occurs around 01:20): https://drive.google.com/open?id=1Qp5id6YZf4y1bHXGsKDgCU31_eYUC9yf

Some other useful info:

  • I am using a Cube Black on ArduPlane 3.9.8, ChiBiOS
  • Our quadplane has a wingspan of about 3m, with MTOW of 25kg
  • All plane + quad response to sticks and stabilisation were checked and verified to be correct prior to flight
  • Q_ASSIST was not enabled as we did not want the quad to interfere with AUTOTUNE maneuvers

Thanks in advance!

Im not near my pc to see the log on weekend but some question: did your quad has enought power to rescue the plane? I had a rescue experience with a 6kg flying wing that gets in spiral and was amazing rescue.

I’d like to hear if Q_Assist would have helped in this scenario or not. I don’t think having it on would interfere with tuning but I’m not sure. I’ve seen Q_Assist do some amazing recoveries. Let’s just say, I’ve tested it extensively. :slight_smile:

The quad setup consists of P80 KV120 motors, 29 " x 9.5 " props, and Alpha 80HV ESCs. Max thrust-weight ratio at sea level is 2.4, and the quad had good yaw authority when we were tuning the VTOL PIDs. Looks about enough power to me.

It does, if we are doing roll/pitch maneuvers in AUTOTUNE, the quads will engage if Q_ASSIST_ANGLE is not set properly. The documentation also doesn’t recommend performing AUTOTUNE with Q_ASSIST.

We could of course set Q_ASSIST_ANGLE to some extreme angle like 80 - 90 deg (which is unlikely to be reached during AUTOTUNE); but based on our logs, the plane was already at that bank angle when QHOVER was engaged and it didn’t seem to be able to save the aircraft…

We’ll almost certainly want to re-enable Q_ASSIST once we are happy with the plane PIDs. :slight_smile:

Thanks to both for the advice. I am still curious as to how the quad attitude controller behaves at extreme angles, as in this case.

Hey, no fair reading the doco. Thanks for the info though.

1 Like

Bump, any developers have any take on this?

@Leonardthall would really appreciate your expert input on this issue!

Hi @disgruntled-patzer,

I am sorry to see your crash. Looking at your video it looks like the motor in shot is spun backwards when the plane pitches up and fails to start.

The attitude log on quadplane is a little screwy in the way it logs things while in multirotor as a change I put in a while ago does not appear to have made it into the code. You are right that this looks strange. I am reasonably confident that this is not the main cause of your crash however. It is very clear from the logs that your multirotor controller was on able to maintain the rate requests it was given at all.

1 Like

Hi Leonard,

To paraphrase, the anomaly observed in the logs is due to the attitudes not being logged properly, and in reality the quad is indeed trying to correct the errors in the expected directions. Is this correct?

Would you be able to link to the relevant Github commit where this fix is applied?

Many thanks, really appreciate the reply.