Poll - how do you want FBW to work?

Jason Short came up with a great flight mode, FLY BY WIRE, in ArduPilot 2.5. This mode differs from STABILIZE. In STABILIZE the autopilot constantly tries to return the plane to 0 pitch and roll, while you give stick inputs that tell the plane to do something else. It feels a bit like you are arm wrestling against the autopilot sometimes. With FLY BY WIRE if you move the right(*) stick half way to the right then the plane will bank half of the maximum amount defined. As long as you hold that stick position the plane will hold that bank. If you center the stick, the plane will go to zero bank.

* - All references to right stick assume a mode 2 RC setup where the right stick controls pitch and roll.

That is all great! You are not arm wrestling the autopilot. You are telling it what roll you want and it is giving you exactly that roll.

But what about throttle and elevator? Jason had a scheme where if you moved the right stick then you would get both a pitch and throttle response. In 2.5.1 I have been trying an alternate scheme involving both pitch and throttle increasing or decreasing together. I am convinced that these schemes are not the best. But what is? It really comes down to user preference.

I think the two best alternatives are:
  1. Have the throttle remain under manual control and have the right stick up and down control pitch angle. This setup is great for tuning your servo PID gains (both roll and pitch), and is a really fun way to fly.
  2. Have the elevator maintain a constant airspeed and have moving the right stick up and down increase or decrease throttle from a cruising throttle. This setup is probably the ideal setup for new pilots. You can hand the transmitter to anyone and they can fly. Can't stall because airspeed is controlled. Want to turn, move the stick to the side. Want to go up or down, move the stick up or down. Of course they still have to deal with what up and down is and what left and right are while coming and going, but if you let go the plane will always take care of itself.
What do you think is best??? Maybe something else?

I can't seem to get the poll to embed - please go here

E-mail me when people leave their comments –

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

Join diydrones


  • Yeah, something like that is kinda what I'm after. I realise it'll be quite complicated, and I definitely don't expect the ArduPilot to have the full level of complexity I described. The equations governing an aircraft's motion are complicated, and doing things like stall prevention, constant airspeed, wind compensation and the like will require a lot of complex maths to work out all sorts of stuff about the air conditions and to predict in advance how the aircraft will behave. The only reason I'm happy to put all that into my autopilot is because I'm halfway through an Aerospace Engineering degree, and I have to do all that maths anyway for my essays and exams, so writing those functions into the autopilot is mostly just a case of re-purposing various bits of coursework.
  • Developer
    Another cool idea is to have ail control radius of turn.... aka it makes the user fly a perfect circle over head reguardless of wind. So you input a radius of turn, and the equations back out the bank angle for the current ground speed
  • I was planning to do something like this with my UAV - the plan was to get the ArduPilot Mega and then modify the code to have full flight stability assistance, so if you guys are thinking of putting it in already then you'll be saving me a job!

    Obviously, different people will want different things from it, depending on their levels of piloting skill and the kind of flight they want to perform. Personally, I think that if you're going for a more comprehensive system, it'd make more sense to make the fly-by-wire mode give the pilot as much help as possible, with the option to turn it off, either by commenting out bits of code or setting various flags to 0 in the headers.

    My plan calls for the highest possible level of flight assistance, because I'm working with a few friends on this, and none of them can fly RC (and my RC piloting skills are mediocre at best) so it has to be pretty much impossible to crash. My plan was to have a standard manual mode, a full-auto mode where the aircraft just follows the waypoints, and an 'assissted' mode where the pilot inputs represent the desired behaviour of the aircraft, and not the actual control surfaces. In other words, the stick would be climb rate and turn rate, not pitch and roll, and the rudder would be handled by the software. Similarly, the throttle would be desired airspeed, not motor speed. Also, the scales would be adjusted on the fly, so instead of zero to full, they'd be minimum safe level to maximum safe level. So, that means:
    - pitch angle and pitch rate are controlled to prevent stalls
    - rudder is automatically applied to prevent sideslip
    - airspeed is automatically maintained through turns, climbs and dives (as long as the throttle setting stays constant)
    - airspeed is automatically kept above stall level (this margin is relaxed a little when the landing gear is lowered, if you have any)
    Also, there's a couple extra constraints, like keeping the aircraft within legal altitude and range limits.
  • //#-#
    #define FBW 0 // 0=manual throttle, 1=auto throttle
  • why not add the option to chose between the two options?

    like the GPS for example :

    #define GPS_PROTOCOL 1 // 0 = NMEA, 1=SIRF, 2=uBlox, 3 = IMU, 5 = Simulated GPS mode (Debug)

    i don't know if it is possible, just a thought.
  • Developer
    @Jason - Maybe after a few more days leaving it open for input we should Skype over a beer and make some executive decisions ;)
  • Jason,
    What is the problem with making elevator control pitch and throttle control airspeed. Will there be any stalls?
  • Developer
    Tim tried my plane with FBW and yes, he said it's like driving a car. Anyone could do it without crashing. I would feel confident handing my plane to a first timer with minimal instructions. Add some logic and you've got a plane that can't exit a predefined area. Maybe Ryan can do a field flow control thing.

    @David, Elevator can control airspeed very efficiently. Just point it down and watch how fast it goes. Actually I use this technique to get me out of jams and avoid tips stalls. You just need a few feet to accelerate out of trouble.

    If someone wanted to create a new mix algorithm for stabilize that would be cool too. There is a minor flaw in the current implementation in that if you use non linear output from your radio, it will conflict with the linear mix. The servos can slow or even go backwards slightly in the middle. It's not a control issue, more of an aesthetic one. I like to fly it so that if you were greater than 150µs from trim you had full control. You could set that to >50 µs if you want a really responsive aircraft. I have it set high for FPV dudes who don't want to worry about their heavy and expensive aircraft...
  • Hi Guys,
    How could elevator control airspeed
  • Developer
    Typically you will see throttle be airspeed_cmd and ele be vsi_cmd
This reply was deleted.