Last November we posted the details and results of the first year of our prototype tilt rotor project. A lot has happened since that post, so we thought we’d provide an update. We also recently presented our progress to the Dronecode Foundation, and if you haven’t seen it you can find it here.

After the positive reception to “Tiltrotor 1”, we were given some guidance from the APM development team. We had reached both the limits of our APM 2.5 and our prototype airframe, and wanted/needed to devote more time to software and less time to airframe and aircraft hardware issues. We upgraded to Pixhawk, and were given a “FireFly 6” from Craig Elder and 3D Robotics to continue software development.

This winter was spent indoors working on improving our existing code and porting it over to Pixhawk. We originally started our code with a 3.1 version of copter, and needed to integrate this into both 3.2.1 and master to stay up to date with the project and have the best possible software for use on Pixhawk. We won’t bore you with the details, but there was an enormous amount of learning and man-hours to go from an APM 2.5 and the basic Arduino compiler to the current APM development environment!

Our current "Tiltrotor_Y6" code is a blend of both APM:Copter 3.2.1 and APM:Plane 3.2.3. It is designed very specifically to the “FireFly 6” airframe at the moment. This is for good reason! (disclaimer: we are not associated or working with birds Eye View Aerobatics, just using their aircraft for software development)  Like our first design, we spent an inordinate amount of time dissecting and studying the control of pitch, yaw, and roll at various thrust angles between vertical (helicopter) and horizontal (airplane). There are MANY ways to approach thrust vectoring tiltrotors, and each one comes with a very unique set of characteristics and compromises. Given the FireFly’s unique configuration of 6 motors, 2 elevons, and the thrust vector, we had to stay focused on this airframe.

The major components of our Tiltrotor_Y6 code include the following:

General Software Additions:


1.The Thrust Vector “Attitude Controller”  (Blended Aerodynamic and Thrust Vector Controllers)

2.The Thrust Vector “Speed & Angle” Controller ( Speed and Thrust Angle limiting functions)

3.A Unique "Turn Coordination" Controller for Hover / Conversion / Airplane Mode

4.Implemented the use of the Airspeed Sensor in Copter

FireFly 6 Specific Additions:


1. Aft Motor-Set Controllers to handle both VTOL and Airplane flight modes

2. Airplane Mode Differential Thrust Yaw and Differential RPM Controllers

3. Elevon function/authority management

4.  Thrust Vector conversion functions

We utilized a total of 7 PID controllers for attitude management (5 for rotor-based controls, and 2 for the elevons), so tuning was no small task! We executed a very methodical build-up test approach and had Hover, Conversion, and Airplane Mode attitude control tuned in about a week of flying. Here are the results…



Currently, we are only flying in “Stabilize Mode” with manual thrust vector control. Our conversion is nearly 100% effortless and only requires minor throttle adjustments at high thrust vector angles to control altitudes, and at lower angles the pilot can simply fly it like an airplane!  The transition towards airplane mode is easily accomplished while maintaining a target pitch of zero degrees (level deck).  There is no reason anymore to accelerate with a nose-down command prior to beginning the transition to airplane mode, which greatly simplifies the task for the pilot.  We are extremely satisfied, but we still have a lot of work to do to further refine the conversion scheduling and make the transition more robust to user inputs.

Our Tiltrotor software is still very developmental at the moment, and the entire picture of what an Autonomous Tiltrotor code will look like is foggy. We have a good idea, but here’s what’s next in the immediate future:


1.Continued “stabilize” development and data collection for use in Autonomy design

2.FireFly 6 airframe upgrades/modifications to improve performance and conversions even more

3.“Auto Conversion”

4.Blending Copter and Plane Navigation

5.Full AUTO VTOL ( Takeoff- Hover -Convert- Cruise- Convert- Hover- Land) sequence

Expect more updates as we progress this summer. A special thanks to Andrew Tridgell and Craig Elder for their guidance and support, and the entire APM Development Team who have provided the framework and capabilities for us to build upon.


E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • Developer

    Aaron, you can read about the development is on drones-discuss

  • Great work! I just completed assembling my FireFLY6. I may be able to try first hover tests today. I'm a volcanologist and will be using it to study volcanoes. I would love to be a tester for your code and possibly contribute. 

    BTW, I came up with my own motor / esc / prop configuration which is pretty similar to the "high-efficiency power pack" but a hell of a lot cheaper. T3506 650KV, 11" CF props. We'll see how it does. The 11" props just barely clear the airframe so I'm a little worried about vibration or weird vortices. 

  • Interesting and challenging project!
  • @Birds Eye View- My apologies. Big mistake on my part to comment on a design that I had nothing to do with. What I can say is that the FireFLY 6 is the best UAV tiltrotor for the money by far. The quality of this airframe is top notch. We really love flying it.

  • Exciting project, been looking for more flight time with ease of landing :-)

    I can see that some other nice projects are (were?) going in the same VTOL direction with other controllers, could it be useful to share with them ? although it might be totally different due to wing orientation change ?

  • @Mike, we've never measured the conversion torque, but in both tilt rotors we've flown (2kg ish) a standard servo has been fine. The firefly 6 has a beefy gear chain setup. As far as emergency conversion I know firefly stock design converts in 3 sec but it can get hairy. if you are talking about an emergency for loss of control our code is actually more stable in conversation mode than hover mode because we use aerodynamic damping in addition to copter thrust stabilization. The stock firefly 6 has little to no stability control during conversion because neither the copter or plane controller is active during the mode
    exchange. If your emergency is your about to hit a mountain and you want to stop immediately than I'm sure the execution could be done in about 5 seconds smoothly.
  • Quick question, what is the torque like on the conversion from hover to plane? What servo grunt do you need and what is the transition time for an emergency (I quickly need to be in hover mode) take? Amazing, I want to get a firefly but they don't ship to Australia... bummer.



  •  Interesting project. All the best.

  • Excellent work. Thinking of getting a Firefly myself.
  • @Rob, we believe our code belongs to the APM community, and will be available for everyone. We have an enormous amount of work into our development (going on 3 years!), but the code we are running is still probably less than 5% of our own creation. Eventually it will be merged into the APM master. Right now it's available in our own fork here, with the exception of the code that is evolving during our flight test program.

    APM Plane, APM Copter, APM Rover source. Contribute to Tiltrotor/ardupilot development by creating an account on GitHub.
This reply was deleted.