Home        Store        Docs        Blog

Using the BU0836A Joystick Controller with QGC


(TCIII) #1

Hi Jacob,

I ran into an interesting issue when trying to use the Bodnar BU0836A joystick controller with QGC.

When viewing the BU0836A joystick controller with the Windows 10 joystick calibration app, button 1, mode_manual, appears as button 1 and the rest of the buttons from 2 - 14 on the BU0836A joystick controller appear as buttons from 2 - 14 in the Windows 10 joystick calibration app.

However, the BR ver 6 of QGC is seeing the BU0836A joystick controller button 1 as button 0, so all of the BU0836A joystick controller buttons from 1 to 14 are offset by one. In other words button 1 is 0 and button 14 is 13.

As a comparison, I checked my Logitech F310 joystick controller with the Windows 10 joystick controller app and found that button 1, mode_manual, on the Logitch F310 joystick controller is mapped as button 2 in the Windows 10 joystick app, but is seen as button 1 by QGC.

Can you tell me what is going on with the way that BR ver 6 of QGC is sensing the button pushes on the various different joystick controllers when compared to the Windows 10 joystick controller app as I described above?

Regards,
TCIII AVD


(undersearobotics.com) #2

Have you tried using another 3rd party app to test your HID input devices, such as DIView?


(TCIII) #3

@paul-unterweiser,

Thanks for the tip Paul, but DIView only displays the BU0836A Analog Channels which work just fine in QGC.

I suspect that I may have to define the BU0836A button output starting at 0 in QGC if I am going to use it unless I can figure out how to offset the BU0836A output so button 1 starts at button 1 instead of button 0 in QGC?

An obvious hardware solution would be to shift the button 1 connection to the button 2 connection and so on on the BU0836A joystick controller which would mean rewiring the button connections to the controller column pins and a lot of work.

Regards,
TCIII AVD


(Patrick José Pereira) #4

Hi,

QGC starts with 0 because this is how C++ vectors works. If any interface shows the first button as 1 it’ll appear in QGC as 0, 2 will be 1 in QGC and etc.
This should not affect the order, is just a simple enumeration difference.


(TCIII) #5

@patrickelectric,

Thanks for the input, much appreciated.

I am not concerned about the numerical order of the buttons, but the value of the starting button, which is 1 with both the BU0836A and the Windows 10 joystick calibration app, is as you point out 0 because QGC is written in Linux. However, why does the button 1, mode_manual, on the F310 appear as button 2 in the Windows 10 joystick calibration app, but as button 1 in QGC?

I guess that the simplest solution is to shift the button definitions in QGC so that mode_manual starts at button 0 instead of button 1?

Regards,
TCIII AVD


(undersearobotics.com) #6

Button input in DIView works for me…


(TCIII) #7

@paul-unterweiser,

I get the same buffered view display in DIView as you do when using my F310 as the joystick input.

However, when using the BU0836A there are no buttons visible, when buttons are pressed on my BU0836A joystick controller, in the buffered view display even when the View “button” box is selected.

Try using the BU0836A controller output and see what you get.

Regards,
TCIII AVD


(undersearobotics.com) #8

I don’t have any controllers using the “A” currently. Drop Leo Bodnar an email.


(TCIII) #9

@paul-unterweiser,

Already sent Leo Bodnar an email asking for advice.

If I used the BU0836X, all I would have to do is shift switch 1 to the switch 2 position so that I would end up at switch position 15 for switch 14.

Regards,
TCIII AVD


(undersearobotics.com) #10

Did you wire up a diode matrix? Could be an issue there.


(TCIII) #11

@paul-unterweiser,

Yes, I am using a diode matrix with the BU0836A, however I do not believe that is the problem.

The Windows 10 joystick controller calibration app detects the the BU0836A button 1 as button 1 and buttons 2 - 14 are detected as buttons 2 - 14. It is just strange that the the F310 button 1 is detected by the Windows 10 joystick controller calibration app as button 2 yet QGC sees it as button 1.

The problem here is that QGC sees the BU0836A button 1 as button 0 and therefore there is an offset of 1 in QGC in relation to the BU0836A button 1 - 14 inputs to QGC.

Regards,
TCIII AVD


(TCIII) #12

Hi All,

I received a response from Leo Bodnar Electronics support and they recommended that the simplest solution to the BU0836A QGC button input offset issue was to reconfigure the QGC joystick controller button function assignments.

I had considered this solution originally, but was hoping for a hardware solution that would be transparent to QGC so that either the BU0836A or the Logitech F310/XBox360 controllers could be used without having to change the button function configuration depending on the joystick controller in use.

Since there does not appear to be an easily implemented hardware solution available at the moment, I have opted to change the QGC joystick controller button function configuration to match that of the BU0836A joystick controller button input.

Regards,
TCIII AVD


(Jacob) #13

I think the easily implemented hardware solution would be to move all of your inputs on the bodnar board over one pin?


(TCIII) #14

Hi Jacob,

Not easy to do because the BU0836A joystick controller requires a diode matrix when using more than 12 switches and attempting to redo the hard wired connections will be a PITA.

However, I plan to use the BU0836X joystick controller in my handheld joystick controller and it does not require a diode matrix when using more than 12 switches so I can see if shifting the button matrix by one input position might work.

Regards,
TCIII AVD


(TCIII) #15

Hi Jacob,

Are the QGC button numbers and function stored as configuration parameters along with the other ROV configuration parameters or are they stored separately from the the other ROV configuration parameters that can be saved and reloaded?

Regards,
TCIII AVD


(Jacob) #16

They are stored on the autopilot. They are the BTN_* parameters.


(TCIII) #17

@jwalser,

Thanks Jacob, much appreciated.

I was going to fire up QGC and my BR2 ROV and check the parameter list, but you beat me to it.

Today I was able to save two different configurations of my BR2. One configuration has the default button configuration for the Logitech F310/XBox360 joystick controllers and one configuration has the button configuration that supports the BU0836A/X joystick controllers.

Regards,
TCIII AVD