How to run Speed and Position Control with two motors on a single axis?

I am looking to connect two motors controlled with ODrives to a single shaft for increased torque. In some cases, I want to control their torque, other times speed and in other cases their position. How hard is it to set this up, and what is the best way to do it? It seems that torque will be easy, but I’m afraid that the closed loop speed and position controllers might fight with each other. Maybe just add a flexible shaft coupling between the motors?

Ideally you have a single timing belt and pulley to connect the motors and load, but you definitely want some sort of complience and an absolute encoder on each

ODrive 3.6, Pro, or S1? Put the encoder on the shared shaft, connect it to both axes, and run calibration independently. Should be pretty good for velocity and torque control. Position might have some issues if you have integrator windup, not sure but worth trying out :slight_smile:

ODrive S1. I’ve realized I left out an important point. The motors both have planetary gears in them and the output shaft of the planetary gears is what we were planning on coupling. This means that the backlash of the gearboxes will result in some small error for at least one of the motors depending on where the encoder is placed.

In that case, you need 3 encoders:

1 absolute encoder for each motor, and an additional incremental one on the shared output shaft. The individual motor ones should be configured as the commutation encoder, and then wire up the shared incremental encoder to both ODrives and set it as the load encoder in both. Should work ok