Crashed VTOL->FW Maiden - QRTL Quirks

Hi friends,
I finally threw the switch into fixed wing flight on a SkyWalker X8 tilt-rotor that I’ve been working on for a while. Unfortunately it ended badly, although I’ll get it back in the air eventually.

It seems that the front (tilting) motors didn’t transition past 45°. From the logs I can only assume this was because the Q_ASSIST_ANGLE criterion got hit as soon as it reached the transition airspeed? I couldn’t find anything definitive about how assist behaviour works with tilt-rotors, but I can’t think why else they’d stay at 45°. When I had tested the transition many times on the bench it worked okay.

After a short fixed wing flight (which, from the ground, I initially thought went well) I put the plane into QRTL mode. I thought this would do a return transition and return victorious (I’d previously tested QRTLs a few times from Q_LOITER). However actually the tilt motors stayed at 45° when in QRTL, it tried to yaw back toward home, got inverted and fell out of the sky.

Any ideas why this return transition may have failed? Would it have ended differently if I went to Q_LOITER first rather than directly to QRTL?

Video is here: https://youtu.be/29CudAGm6m4

My log file is here. To explain the AUTO mode period: I had a mission that I thought would climb to 70m then transition to fixed wing, but instead it just kept climbing (I don’t really care, that’s an issue for another day), so I returned to Q_LOITER and then transitioned to FBWB manually.

Thanks!

Ed: Sorry I realised I originally linked to the wrong log file!

Just curious, I didn’t see and airspeed sensor?

Full disclosure, I don’t use ArduPilot but testing procedure should be applicable to any VTOL.

  • On the workbench, without props, I arm in VTOL mode and raise the throttle just passed the mid point to get the RPMs up and simulate takeoff.
  • Switch to FW (FBWA in your case) and with a straw, blow into to the pitot tube to reach beyond stall speed to cruise. Check MP (or QGC) to confirm airspeed.
  • Check all the flight modes in all flight regimes to confirm it responds the way it’s supposed to, including flight controls.

Good luck.

Thanks for the suggestions rollys!

Indeed I don’t have a pitot tube fitted yet, although I have one I am planning to use.

But in this case the problem seems more fundamental than that, ie, like the return transition fails if QRTL mode is requested, or perhaps if the Q assist is active when the transition is requested (for tilt-rotors).

I’ve found a bit more time to look into this to have a go at figuring out what happened. There’s a lot of unfamiliar code to dig through, but some bits are starting to make more sense.

  • The tilt to 45° when I entered FBWB was not because of the angle assist (that didn’t trigger until later), but rather Q_TILT_MAX is the maximum angle of the servos until the transition airspeed is reached.
  • The state reported in the logs transitioned to QRTL when I told it to. I should have chosen something like QHOVER or QSTABILIZE but that’s a lesson for next time. I had already used QRTL in VTOL mode and assumed it was a reasonable choice.
  • As it hadn’t reached the transition airspeed at the time I switched out of FBW, the servos were still at 45°.
  • At this point I had been assuming it would do a QPOS_AIRBRAKE, the tilt motors will go to fully_up, and it’d do a QRTL. But I know there’s several options around fixed wing vs. VTOL RTL and I guess I didn’t have these set to match my expectations.
  • So that’s why the tilt servos didn’t ever go to the up position, because it was still trying for fixed wing flight, in spite of the QRTL.
  • So once I threw the switch to QRTL, mode_qrtl.cc invokes quadplane.poscontrol_init_approach() and I see the “VTOL approach d=174.3” message in the logs. It gets switched into QPOS_APPROACH, which I figure is a fixed wing RTL phase of the RTL?
  • It flies for a second or two and then there’s log messages about “Transition airspeed reached”.
    • The tilt servos (Servo 3 and 4) start transitioning toward fully_fwd.
  • Then all hell breaks loose. Servo 5 (front right motor), hold steady high throttle. However Servo 7 (front left) backs off the throttle.
  • It stalls and as it’s now out of control and going backwards/inverted, the angle assist is triggered, however you can see in the video that the plane was inverted until right at the end so it couldn’t recover.

So that’s been a really useful exercise. I know to choose Q_STABILIZE for the next test. Any ideas what I might have messed up for it to reduce throttle so much on one of the forward motors?

So actually Q_RTL_MODE was already set to QRTL Always…

I discovered my Q_TILT_MASK was set incorrectly! That’s why motor C7 in the graph above reduced throttle on transition and the plane stalled. Now if only this wind would go away I can try again!