Using dual Flight Joysticks

To have better ergonomics for ROV control I got dual Flight Controllers working with QGC
It is Saitek Rhino X56
To make them work with QGroundcontrol You have to emulate their output into one X-Box format.
Ie QGC believs there are only one standard X Box controller connected.
That also means You can only have that many commands/buttons that a X box has.
A way to make this work is x360ce emulator: http://www.x360ce.com/

2 Likes

I don’t understand why QGC still only supports X-Box controllers. Back during the initial beta testing it supported HID compliant controllers but later that compatibility was lost. Is there any way we can get it back? That would allow us to use more sophisticated controllers without the need for an emulator.

Newer versions QGC support more controllers.
Even my joystick above, BUT only one at a time.
So with my setup using 2 controllers, You have to use emulator for a while longer…

@Boko Awesome research into this! I kinda like having the bigger joysticks and I wonder if this emulator would work with two of the Logitech 3D joysticks. I already have one so I might have to get another and try it out.

You’ll need to use a joystick remapper like VJOY or UJR

http://vjoystick.sourceforge.net/site/

@paul-unterweiser

I don’t understand why QGC still only supports X-Box controllers.

More accurately, QGC supports XInput controllers (like xbox360 and the logitechs).

The joystick libraries were overhauled at some point last year. Support for HID was probably lost there. I would like to be able to support more methods of input, such as joysticks like this, custom built controllers, and keyboard input. This isn’t a priority at the moment, but it will happen.

-Jacob

@jwalser any update on support for other joysticks? Seen any newer setups
@Boko That’s a nice setup. I’m looking at the X56 but I’d like to use a single controller. I see you use both left and right hands. I’ve read that up and down (depth) needs to be controlled by an analog input. Is it possible to control depth up and down using only the right hand controller? Or would controlling all motions with one hand be too difficult. I’ve been looking for a USB single axis finger joystick but haven’t had any luck. That would let me control all steering from the right hand (X56) and up and down from a small paddle style joystick that I could probably mount to the base of the X56.

The right hand controller of the X56 already has 5 analog axes (forward, lateral, twist, thumb-forward, thumb-lateral) and 18 buttons, and at the moment ArduSub and QGC only support using 4 control axes at once and 16 buttons, so the right hand controller is sufficient by itself for full control.

The benefits @Boko was discussing here was being able to use some functionality from the second controller by passing both controller inputs through an emulator to pretend it’s a single controller, which may be preferable to buying the controller pair and only being able to make use of one of them. If you’re happy to use a single controller then that should work fine once you configure the axes and button functionalities as desired.

PS4 and PS5 gamepads have limited support, and

Since those results are a bit spread between other kinds of controller, I’ve made a new surface-controller tag and gone through and added it to a few that seemed relevant.

For future improvements, last year we got changes made to the MAVLink MANUAL_CONTROL message to support additional buttons and control axes, but they’re yet to be implemented in the ArduSub firmware or QGroundControl. Progress on that is in the issues linked to at the end of that one.

Recently purchased a BROV2 Heavy to replace our defunct SeaBotix LBV-300-5. Want to configure dual flight joystick, as shown in your post. Nice setup. Were you able to map left throttle for ascend/descend using middle position, as opposed to 0-100 typical for aircraft flight mode?

Yes, I use one rotary wheel on left side for vertical control.
They have a nice clicking midpoint for no movement.
All BR ESCs use middle (1500uS) for stop value.