Tri-tiltrotor VTOL dive on transition

Hi everyone,

I’m currently working on tuning the VTOL transition for my Heewing T2 Cruza VTOL, which is a tri tiltrotor. I’m encountering serious stability issues during the transition phase from multicopter to fixed-wing.

In real flight, the drone pitched down aggressively right after initiating the transition and crashed into a field. I’ve attached the flight logs from this crash for reference.

I’m experiencing very similar behavior in simulation using the PX4 “tiltrotor” model in the Gazebo library. During transitions, the vehicle consistently drops several meters before recovering, showing the same nose-down tendency.

I experimented a bit in simulation and found that extending the transition time to more than 10 seconds and setting VT_TILT_TRANS to a high value (e.g., 0.7 or above) seems to reduce the severity of the dive, but these adjustments feel more like a workaround than a real solution.

This behavior doesn’t seem ideal, especially when I compare it to ArduPilot, which seems more commonly used on VTOLs (and is recommanded by Heewing for this platform), where transitions are almost instantaneous and much smoother by default.

I’d like to understand:

  • What could be causing this nose-down behavior during the transition?
  • Are there parameters I should look into tuning to fix or reduce this issue (beyond just increasing transition duration)?
  • Has anyone experienced similar problems, particularly with tri tiltrotor setups?

Any insights or suggestions would be greatly appreciated.
I’ve attached:

Thanks in advance for your help!

Have you made sure the control surfaces are all the right orientation. E.g. try a transition on the bench without props just to check the basics are correct.

I tested on the bench without props before the flight. The control surfaces responded correctly, and the transition seemed to work fine during that test.

Hm that’s good, I guess.

Let me tag @sfuhrer, maybe he can spot the problem.

The cause of the pitch dip is a stall that occurs when exciting the transition.

You’re not using an airspeed sensor on your VTOL, do you? If you would, the transition would be only considered done after reaching the transition airspeed (9m/s in your case). Without airspeed present, there is a simply time based check: transition is complete after VT_F_TR_OL_TM (6s).

You can either add an airspeed sensor (recommended!), or increase VT_F_TR_OL_TM to 8s at least, or make the tilt ramp faster (reduce VT_F_TRANS_DUR).

1 Like

Thank you very much for your response, it has been extremely helpful.

I am indeed not using an airspeed sensor and do not plan to add one at this point. I will carefully follow the VTOL Without an Airspeed Sensor guidelines before my next flight.
Just to make sure I correctly understand the transition-related parameters, could you please confirm the following points and clarify where needed?

  • VT_ARSPD_TRANS : This does not apply in my case, as I am not using an airspeed sensor.
  • VT_F_TRANS_DUR : I am unsure what this parameter does exactly. It does not appear to have any effect in simulation. What is the difference between this and VT_F_TR_OL_TM?
  • VT_TILT_TRANS : Normalized tilt angle during the first phase of the transition, i.e., during VT_F_TR_OL_TM seconds.
  • VT_TRANS_P2_DUR : Duration of phase 2 of the transition. This starts after VT_F_TR_OL_TM if no airspeed sensor is used, or when VT_ARSPD_TRANS is reached if one is present.
  • VT_TRANS_TIMEOUT : This is ignored in my case. It only triggers a failsafe if VT_ARSPD_TRANS is not reached in time when using an airspeed sensor.
  • VT_F_TRANS_THR : Normalized throttle value during the transition, but during which phase exactly? I have tried adjusting this parameter in simulation but did not notice any visible effect.

I have managed to achieve a relatively smooth front transition based on your advice. However, the drone gains altitude during the first phase of the transition (i.e., during VT_F_TR_OL_TM). For instance, with VT_F_TR_OL_TM = 12s, the vehicle climbs by approximately 10–15 meters.

Do you have any ideas on what might cause this behavior? Could it be due to VT_TILT_TRANS being too low, or VT_F_TRANS_THR being too high? How would you recommend tuning these parameters?

Sorry for asking so many questions, but I want to have a deep understanding of the tuning to be able to troubleshoot potential issues to come.

Hi, I was wondering how this went and if you maybe have the params available? Would be insanely helpful for me :wink:

Hi, sorry for the delayed response. Here are the VT_* parameters I used (I wasn’t able to attach the full .params file):

1 1 VT_ARSP_BLEND 8.000000000000000000 9
1 1 VT_ARSP_TRANS 12.000000000000000000 9
1 1 VT_BT_TILT_DUR 1.000000000000000000 9
1 1 VT_B_DEC_I 0.079999998211860657 9
1 1 VT_B_DEC_MSS 2.000000000000000000 9
1 1 VT_B_TRANS_DUR 15.000000000000000000 9
1 1 VT_ELEV_MC_LOCK 1 6
1 1 VT_FWD_THRUST_EN 4 6
1 1 VT_FWD_THRUST_SC 0.699999988079071045 9
1 1 VT_FW_DIFTHR_EN 0 6
1 1 VT_FW_DIFTHR_S_P 1.000000000000000000 9
1 1 VT_FW_DIFTHR_S_R 1.000000000000000000 9
1 1 VT_FW_DIFTHR_S_Y 0.100000001490116119 9
1 1 VT_FW_MIN_ALT 0.000000000000000000 9
1 1 VT_FW_QC_HMAX 0 6
1 1 VT_FW_QC_P 0 6
1 1 VT_FW_QC_R 0 6
1 1 VT_F_TRANS_DUR 2.000000000000000000 9
1 1 VT_F_TRANS_THR 1.000000000000000000 9
1 1 VT_F_TR_OL_TM 11.000000000000000000 9
1 1 VT_LND_PITCH_MIN -5.000000000000000000 9
1 1 VT_PITCH_MIN -5.000000000000000000 9
1 1 VT_QC_ALT_LOSS 0.000000000000000000 9
1 1 VT_QC_T_ALT_LOSS 20.000000000000000000 9
1 1 VT_SPOILER_MC_LD 0.000000000000000000 9
1 1 VT_TILT_FW 1.000000000000000000 9
1 1 VT_TILT_MC 0.000000000000000000 9
1 1 VT_TILT_TRANS 0.550000011920928955 9
1 1 VT_TRANS_MIN_TM 10.000000000000000000 9
1 1 VT_TRANS_P2_DUR 0.300000011920928955 9
1 1 VT_TRANS_TIMEOUT 15.000000000000000000 9
1 1 VT_TYPE 1 6

he flight went well without an airspeed sensor. The transition and back-transition were smooth as expected. Both transition and back-transition were smooth as expected.
I hope this will be useful for your setup.