Quad-X Tiltrotor Development Question

Hi Folks,

I’m planning to build a 2 Meter class tiltrotor with a quad-x configuration. I’ve got a few airframes in mind. I’m mostly looking for something that flies slow and is lightly wing-loaded, so when developing/testing the transitions, it will be fairly forgiving. I’m looking at something like:

  1. X-UAV Skua
  2. Ranger EX
  3. Finwing Sabre

I’m trying to best figure out how to develop the code. It looks like the Firefly Y6 is really close to what I want, so that might be a good starting point. I see there are several .mix files that look like they are applicable (obviosuly including the two Firefly .mix files), and I’ve been looking thru the Firefly (and others) files in the ./modules/vtol_att_control folder. It looks like there are some Y6 specific code in there which I’d likely need to change.

I’ve got quite a years developing real-time embedded code for the aerospace industry so I’m comfortable coding, implmenting algorithms, building, etc. However, I’m still learning the PX4 architecture so I could use a little guidance in that area. I’ve read thru the developer’s guide. It’s been helpful but I think needs a little more detail.

My question to you guys is the approach to take. It looks like I need to create a new configuration, Speciiy an X4 configuration in the .mix file, and probably use the Firefly Y6 as a baseline and make appropriate changes. Other than that, It looks like much of the tiltrotor algorithm has been implemented. If I specify X4 in a .mix file, is that all I need to do to make it fly as a quad-x, or are there are parts of the SW I’ll need to touch for that aspect? I realize I’ll need to create the control files in the vtol_att_control directory, but I’m not sure what else. I’m happy to do the development and contribute if it works out.

I’d sure appreciate any comments. Thanks for your help!


Hi Chris

your project sound very interesting! The FireFly6 should be functional with our code base but we haven’t really tested it for a long time (users might have). Furthermore, we only had very limited time to implement the “control logic” for it. It flies ok with it but I would really love to see some more model based control for the tiltrotor. What PX4 offers you is a complete environment in which you can start implementing your control algorithms without having to deal with the rest of the system.
As you have already seen all the tiltrotor specific code is located in the vtol_att_control module in the tiltrotor.cpp file. I would recommend you to create a new config file and start with the existing FireFly6 settings. You will have to replace the following settings:
set MIXER quad_x.main.mix
set PWM_OUT 1234
set param set VT_MOT_COUNT 4

Theoretically, this should be enough to use the configuration. Let me know if things don’t work out!
Also it would be nice to catch up on the actual flight control implementation. I would love to work on it, however, mostly time and the chance for testing are the limiting factors. Is it possibly to communicate over skype?


Hi Roman,

Thanks for the tips, I’ll get started with your suggestions on the setting to change to over to a quad-x configuration. I just started building the vehicle so I’ve got a ways to go. I decided on the ranger EX. It sounds like the slow flight characteristics are pretty good and it has a lot of wing area. Of course there will be a lot of hover and slow quad testing before attempting any transitions to airplane mode.

I’m pretty happy with how the transition algorithm and code looks so I think it will be a good starting point. Yes, I’d like to chat sometime about the control algorithms and implementation. I’ve got a lot of general questions but I’ll save them for when I get a little further into things and learn about the SW before asking. I can learn a lot just by going thru the code. I’m sure you have thoughts on the implementation so I’d like hear your ideas, and bounce mine off someone with some experience with this platform.

I don’t have skype currently but could try that at some point. What time zone are you in? I’m in Pacific, and coluld phone chat as well.

Thanks again for your help! I think this will be a fun and interesting project!



Hi Chris,

How has your project been going? I am working on the same type of project. We are using a gauper x44 type of platform. We are now getting to where you were in your last post and were wondering if you’ve had success and/or are looking for some programming help. We also have an RC airfield to do testing.

Noah Nelson

Hi Roman,

Progress has been quite slow, but I did finally get to a point where I’ve had several successful hover tests. Now I’m trying to guesstimate what values to set the transition parameters to get the best chance of success, Also setting up all the modes I think I’ll need as well as scripting a test plan. I will likely find some piece of desert for my testing. I’m hoping that the code as it stands right now will work w/o much modification. I’ll need to study it a bit more to see exactly how the transition takes place, and also see how flight testing goes and if it needs any more software written for the transition, Hopefully it’s mostly just a tuning exercise. I think my biggest concern now is the possibility for some violent pitching in the transition that the control system can’t keep up with. That could be exasperated by not having the plane control optimized. I’m using the tuning from the other ranger VTOL as a starting point. We’ll see. How’s your progress?

Meant to say Noah. Sorry…

Hi Chris,
Sounds like an interesting and fun project. I hope you’re successful. I’m looking to build a VTOL 80" flying wing but using a tricopter (Y3) configuration for lowest complexity, cost, and weight. Since you’ve been studying the code, do you know how the Y6 controls yaw? I’m assuming it simply converts the yaw value into differential throttle on each pair of motors so all the bottom motors slow down while all the top motors speed up for one yaw direction and vice-versa. If that’s the case, I’m wondering if modifying the Y6 to a Y3 could be done by eliminating all the bottom motors and converting the yaw signal to PPM format for the yaw servo?? Maybe there would be a lot more to it than that.


Hi Dan,
I don’t know specifically how the Y6 controls yaw, but what you suggest makes sense and probably the most likely implementation. I believe there is a Y3 configuration for the MC controller already available, so if you specify that in your main mixer file instead of the Y6, you should be good to go.

If you’re not familiar with the mixer files, you will need to get acquainted with them, as well as how to rebuild the code and download to your aircraft. There is an excellent developers guide that walks you thru a step by step process of that. There is also a mixer guide that explains how the miser files work. Some Google searches will lead you to those pretty quickly.

Good luck!


Chris, thanks for your comments. It’s going to be slow-going for me as I’ve only done small amounts of coding before. I’m an electrical engineer working in the aerospace industry. How’s your project coming along? Are you still working on it?