Closely-coupled motors (driving a shared load, but not on the same shaft)?

I’m trying to build a 3-axis machine, which consists of 4 motors, and I intend to use two ODrives (v3.6) in position control mode to command it. The setup is like this:
X axis - longest - commanded by one motor, via ODrive #1
Y axis - middle - commanded by two motors, via ODrive #2
Z axis - vertical, shortest - commanded by one motor, via ODrive #1

The X axis sits atop two rails (which are the Y axis):

The Y axis motors need to be driven in very close sync, otherwise the X axis will be subjected to bending.
The four motors are identical, and have built-in Hall sensors. They are suitable for CNC work - 4 pole pairs, very good torque.

How to set up ODrive #2, so that it drives the identical motors identically: M1 position should always mirror M0’s as close as possible?

The simplest way is to just make sure both sides are tuned well and follow the same command. Send the same step/dir pulses to both sides.
You could add some code on the ODrive that checks that they stay in sync and does an emergency stop if they get out of sync.

Yes, it is about this second part that I am worried. How could I implement the stay-in-sync check? Additions to the (v3.6) firmware?

i ame also interested for this solution, have same plans

What motor are you using ?

If you put both Y axes on the same ODrive, you can use Mirror mode:

I don’t think mirror mode is appropriate here: they will stay in sync better if they get the same command rather than if one gets as commands the estimate of the other.

You can add some firmware to check that the difference is within some limit, and error both axes if not.
You can have a look at how the mirror mode looks at the other axis, and do something similar to fetch the other axis. You could put a check here perhaps.

Cool, many thanks, @madcowswe!
I will try putting the check you suggest and will report on how it behaves.