Dual tiltrotor "cheating" flight controler setup


we are currently converting our project (formerly on KK2.1.5 platform) to Arduplane (on a pixhawk 1M) and are experiencing some difficulties here.

After reading up a lot on this helpful forum I decided to give it a shot and write my first forum thread… :slightly_smiling_face:

So far the setup ist quite straigth forward as follows comprising of these desired Functions:

During hover flight yaw control should be controlled via differential rotor tilt, ascent/descent via synchronous thrust, roll via differential thrust, longitudinal motion (forward/backwards) via synchronous tilt of the rotors and finally but IMPORTANTLY the pitch axis should be automatically maintained level via a thruster-rotor in the back that can turn both directions (so there is no pitch tilt of the airframe necessary for longitudinal motion/position hold). Center of Gravity located symmetrically between front (tilting) rotors.

After transitioning into horizontal flight we would like to control the plane via conventional aileron, elevator and differential thrust for yaw control – with an option to experiment with differential rotor tilt to replace/assist ailerons.

Please see attached schematic:


  1. Is it possible to configure the current firmware for such a setup?
  2. If code-tweaking is necessary, who would I have to turn to?

Thank you for helping us setting this up! Any help appreciated!

Hi Chris,

It looks like a pretty standard tilt-rotor setup for APM Plane. Here are some key links to help you gather information.

Tilt Rotor Planes
Throttle Left/ Right

Good luck and welcome to the APM VTOL Plane forum! :slight_smile:

Hello Greg,

thank you for your reply! :partying_face:

In the past few days/weeks, I have read the Ardupilot guide up and down. Apparently, in some sections, it lacks a level of detail that would allow me to fully understand why that particular setting is necessary (or I just think too complicated).

Some examples:

  • Why would a dual copter tiltrotor have to be classed as a tail sitter
  • If my setup (with the C/G positioned on the rotor tilt axes) has the pitch stabilizing motor in the back – would that require it to be treated as a tricopter? :arrow_right: if so, how would I get the longitudinal motion (forward/backward) mixed into the tilt-control and let the controller use the L/R spectrum of the stabilizing motor in the back…? Or
  • Would it be better to set it up as a dual copter and manually set one of the output channels to operate the rear motor?

If there is a way you could lay out a guideline to overcome these first setup obstacles it would be much appreciated!
Maybe there is a config-file for a similar setup…? (This would be a great resource to compare values and test the behaviour)

Thank you also for the warming welcome,

Yes, this is true, especially when you don’t have any Ardupilot copter or plane experience. There is a learning curve but the WiKi does help to organize your steps. For learning purposes, you could start with a more simple APM Plane project.

As far as I know, it is not considered the same.

You can have a tricopter where the tail rotor swings left to right via a servo control to maintain yaw stability. You can also lease the tail rotor fixed for only lift in quad hover modes and then use yaw differential on the front two rotors. You can use a Y6 configuration with the tail rotor fixed and then swing either the front rotors down or the entire wing down. The link below shows various APM setups.
Vehicle Types Supported by ArduPilot

The definition of “better” is in the eye of the builder here. It can also depend upon the frame used and if any scale effect is desired.

Although my preference is for a QuadPlane, here are a few tricopter examples that I have done.


Y6 Configuration:

Y3 Configuration with Tail Rotor Yaw Stabilization

Vectored Yaw Configuration

No possible to maintain the vehicle level while moving forward and back with the current code. It has been done tho, for example:

Hi Pete,

thank you for your reply!
So in your opinion, it is necessary to change the code of the F/C in order to get the described behavior?

yes, requires code changes, but its not fantastically hard.

Perhaps I am not understanding the needs here. The video looks like the plane is simply moving forward or backward in a hover mode. Isn’t this the normal Qmode or copter behavior?

Also, if you don’t need to go backward, but simply forward, can you not use Mark Whitehorn’s @kd0aij forward throttle feature? Did this not make it into a release?

I guess my “manual forward throttle” feature hasn’t made it into any plane release yet.
It’s commit d5b1b20, Plane: implement manual forward throttle for QACRO, QSTABILIZE and QHOVER
in master.
One wiki reference here: https://ardupilot.org/plane/docs/common-future-wiki-changes.html?highlight=forward

1 Like

Sounds promising,
does that mean that I could shut down the pitch sensor influence on the synchronous rotor tilt and potentially replace it by longitudinal position hold input. The pich stability feed from the IMU will only control the levelling motor - in both directions, starting from 0 rpm in full level position.

Not sure I understand your questions… What does your plane look like with the CG on the motor tilt axes?

Hi Mark, our Plane looks similar to a V-22.
Only difference is, we don’t use cyclic rotor blade pitch control for [airframe-] pitch control during hover flight - i.e. C/G between the two rotor centers. Our craft hovers like a conventional bicopter with the addition of the pitch controlling fan in the back. Think of a bow thruster in a ship :wink:

OK, I guess that CG could also work for forward flight with the rotors tilted forward.
My “manual forward throttle” feature works by using an additional RC input channel for manual control of forward throttle; for a normal quadplane, it simply controls the throttle for the forward motor, and for a tiltrotor, it tilts the rotors forward by an amount proportional to forward throttle demand. The same approach could be used to provide reverse throttle in both cases if you really wanted to fly backwards.

This feature is independent of the attitude control system, the roll and pitch inputs continue to operate normally, so you can pitch up or down as desired while also applying forward throttle.

Very interesting! It is less a question of “wanting” to fly backwards, much rather allowing all possible degrees of freedom to counteract any external disturbances - for example gusts from behind…
If this is done right the aircraft will fly exactly like this Eric’s F-35

I’ll look at allowing negative forward throttle with the manual forward throttle option. The existing code may already support it, since reverse thrust is supported.
I had experimented with a few new flight modes similar to Eric’s with a Convergence tilt-tricopter frame;
https://github.com/ArduPilot/ardupilot/pull/12857 although I avoided backward flight since the Convergence goes unstable when flying backwards.

Hi Mark,
thank you for your contribution to the topic!
I will try to implement your suggestions.
Cheers again

Sorry for response to an old thread. Did these changes ever make it into a release? I’m looking at doing something similar to what you did with your Convergence but with a OMPHobby ZMO VTOL that I put an orange cube into.

I’ve gotten the ZMO transitioning/flying with Q_Hover and FBWA, but I want a flight mode with your “Forward Throttle” characteristics. I don’t need to fly backward my main goal is to try to fly the ZMO below it’s stall speed by tilting the motors slightly to vector the thrust downwards to increase lift.

Any help would be greatly appreciated! :slight_smile:

Check out the forward throttle RC option: https://ardupilot.org/plane/docs/quadplane-flying.html?highlight=forward+throttle#manual-forward-throttle-in-vtol-modes
It’s been in stable for a while now.

Thank you for the fast response! I can’t believe I missed that. Thanks!

I’m curious how the tilt motors can be used to maintain level pitch in position/velocity controlled modes such as QLOITER, as described here by setting Q_VFWD_GAIN to a non zero value:


For a tiltrotor, if THR_MIN is less than zero, and servo min/max values are set appropriately (such as you would for vectored yaw), will that allow for the motor servos to tilt backwards? This may be useful if hovering in a tailwind.

Thank you!