I’m well aware that for a standard X drive with 45 degree angled wheels, the forward speed of the robot is theoretically 1.41 times faster than the speed of a tank drive with the same wheel size and rpm.
But what about with an X drive that does not have its wheels angled at 45 degrees? I’ve been experimenting with an angle shifting X drive in CAD, and I was curious, how would one calculate the theoretical forward speed of an X drive with a variable wheel angle? I can’t seem to find any resources on this, since everyone just seems to know that a standard 45 degree x drive moves at 1.41 times as a 0 degree x drive (aka tank drive)
For discussion I’m considering an x drive where the wheels are facing perfectly forward to be 0 degrees and when the wheels are facing perfectly inwards (perpendicular to the forward direction of the robot) to be 90 degrees.
From experience I know that as the angle of the wheels nears 90 degrees, the theoretical speed of the robot increases. (I once made a little rig with angled omni wheels and found that when angled shallower than 45 degrees, the rig moved faster forwards than when the wheels were angled to be 45 degrees)
So basically my question is, how does one figure out the theoretical forward speed of an x drive just from a wheel angle?
this is an example of an x drive with an angle greater than 45 degrees.
Here’s a graph showing how the multipliers for speed (red) and torque (blue) would change depending on wheel angle, with 0 degrees being parallel to the direction of motion.
A cool demo with a robot like this would be to simulate a continuously variable transmission, with the wheels starting a 0 degrees when the robot begins moving and gradually angling towards 90 as it picks up speed. How high could you get that speed multiplier before there isn’t enough torque to sustain motion? Would be fun to find out.
I get the feeling that as the angle gets closer to 90 degrees, the actual tolerances in the system will cause issues before the power losses from friction. Because if one wheel is angled at say 70 degrees, and another wheel is angled at 72 degrees (just due to slop in the angling system) then the two wheels would be trying to pull the robot forward at significantly different speeds.
a way you could fix this is have a really precisely placed hard stop at the greatest angle you would ever go, that way when the wheels go that aggressively angled they all have a very close angle.
Here’s a better visual –– just imagine that arrow is the output velocity of one of the wheels and the dashed lines are it’s component parts. The angle can be arbitrarily picked.
I wonder if you could use Calculus and do an optimization problem based on the constraints of the motor outputs. You would solve for maximum speed based on the wheel angle when the motors are operating at maximum efficiency. Maybe there are too many variables for one problem, but it can actually be quite simple when the other parameters are defined.