Custom 6 motor configuration

Hi, could someone explain how to change the motor setup so I can control it properly with an Xbox controller?

Right now I’m using 6 thrusters. Four of them are vertical (for up and down movement) and two are horizontal (for forward/back movement). I want to make it to where the controls are set up so the four vertical motors do only up/down and the two horizontal motors do only forward/back.

How would I configure the motors or mapping so the controller works correctly with that setup?

Also here is exactly how I want the joystick configuration for the motors to be

Hi @Vkoppireddy1 -

Is your vehicle running ArduSub and BlueOS? I wouldn’t recommend get too hung up on the xbox controller - if you configure the vehicle with the appropriate frame type for your thruster layout, mapping the desired functions to the desired actions in QGC or Cockpit is fairly straightforward…

Mapping the left and right triggers to up and down may be possible eventually, but may not be supported currently…

Hey Tony, I am running BlueOS, and I’m using Cockpit instead of QGC, although I still have QGC installed. So, how can I configure four of the motors to only move up and down, while the other two move forward and backward? I tried changing FRAME_CONFIG to Custom in BlueOS, but my ROV software still recognizes it as a standard BR ROV.

Your description is a little vague, but I suspect you may be able to use the Vectored-6DOF frame option, and just assign your motors as 1/2 for the forward-facing ones, and 5/6/7/8 for the vertical ones (and don’t assign any outputs as Motor 3 or Motor 4).

On the control front, Cockpit allows mapping joystick axes to motion axes arbitrarily (so you could assign your left stick to Axis S (pitch) and T (roll), and your right stick to X (forward) and R (yaw)), but it doesn’t yet support more advanced axis configurations (like splitting an axis between two triggers or buttons).

There is a longstanding Issue about adding support for more direct (and dynamic) configuration of the joystick outputs, which has been stuck in complexity discussions for a while. I’ve just realised that the axes are the critical part of that, which is substantially less complicated in isolation, so we can hopefully implement that quite soon…

Following up, I’ve implemented this, and managed to get it working for split axis control of the vertical axis using some data-lake variables. It still needs to be reviewed, and included in a release, but can be considered “almost available” rather than “not yet developed” :slight_smile: