This is what our team has learned so far. I’m posting it here for the benefit of any team still struggling with, or wanting to learn more, about holonomic drive.
You can use the holonomic drive VI provided in LabVIEW (which requires polar coordinate inputs),
OR
You can write your own omni code (as our team did), which uses 1 to +1 joystick output values, as follows:
Let x, y, and z be the rev/fwd, slide left/right, and spin CCW/CW axes, respectively, which each vary from 1 to +1.
So:
x= 1 corresponds to full speed reverse, x= +1 corresponds to full speed forward,
y= 1 corresponds to full speed slide left, y= +1 corresponds to full speed slide right,
z= 1 corresponds to full speed spin CCW, z= +1 corresponds to full speed spin CW
If your joystick outputs don’t look like the above (eg the signs are reversed), simply convert them.
Let w1, w2, w3, and w4 be the commands to send to each of the 4 wheels, where w1 is front left, w2 is front right, w3 is rear left, w4 is rear right, as viewed from the top.
set the four wheel speed commands as follows:
w1 = x + y + z
w2 = x  y  z
w3 = x  y + z
w4 = x + y  z
You’re almost done. All that remains is to normalize the above commands so that their range is 1 to +1. Proceed as follows:

look at the magnitude (absolute value) of each of the four commands, and select the MAXIMUM. for sake of discussion, call this maximum value Wmax

if Wmax is less than or equal to 1, no scaling is required. Just use the four w commands asis

if Wmax is greater than 1, then divide EACH of the four w values by Wmax.
That’s all there is to it. Send each w command to the corresponding wheel.
One note of caution: make sure the polarity of the motors on each side of the bot is wired correctly (each wheel must be spinning in the “forward” direction when it gets a +1 command). The easier way to observe this is to elevate the bot and push the joystick forward; all four wheels should be spinning forward.
~