Gamepad throttle mode


I don't know if this mode allready exists in the latest APM (arducopter) firmware. But I'm currently working on a project and I'm using arducopter firmware 2.5.3. To control my quad I use the joystick feature in the APM planner. But I'm not using a joystick I'm using a gamepad.


As you know gamepads always center there stick and it's hard to get a stick value that is not MIN, MAX or CENTER. It's to sensitive to have a good throttle control.

Now I'm implementing a gamepad throttle mode for my project (in the arducopter v2.5.3 firmware)




A very simple/basic overview of what is happing in the code:


When flying in THROTTLE MANUAL MODE then

 -> throttle value = stick position


When flying in THROTTLE GAMPAD MODE then

-> stick posistion = center? do nothing: leave throttle at it's current position

-> stick posistion = down? decrease: throttle value = throttle value - some value

-> stick posistion = up? increase: throttle value = throttle value + some value


This way it's much more easy to control the throttle with a gamepad and to hold it on a fix position. But it also has some disadvantages. Increasing or decreasing to full max or full min will take some time. But if someone would work this out this gampad mode could be tuned with configurable sensitivity values etc to minimize the disadvantages.



here is a little concept video:



E-mail me when people leave their comments –

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

Join diydrones


  • I'd recommand to use an exponential relation (such as on R/C controllers) between the value from the gamepad and the increment of the throttle. This way, more you push or pull, faster you'll reach the min or max.

    You could end with something like this:

    value = actualThrottle + (A * exp(measured - center))

  • Sound great. Do you have already written a patch?

    I'm looking for a solution for the same problem and thought about what would be better:

    Patching the Arducopter code or patching the GCS code?



  • Developer

    Or you could just use Alt_Hold for everything

  • I think that will be better to implement this function with altitude hold, 

    Down = Decreate, Center = Idle, Up = Increase 

    Maximum rate may be set.

    AR Drone work like that and that's not so bad (Joypad, lefty mode), but I don't recommend you to increase/decrease throttle directly because you will rapidly loose the exact throttle value.

  • You could take an even more intelligent fly-by-wire approach. In Gamepad Mode, have the "throttle" thumbstick control altitude. A centered thumbstick would result in the copter trying to maintain its current altitude. Thumbstick up would increase the altitude at a rate proportional to the position of the stick, and vice-versa with down thumbstick. 

  • Developer

    Cool!  Another option is to do this processing the GCS (by changing Mission Planner if that is what you are using)

This reply was deleted.