Combining the two transformations, to rotate an equilateral kiwi drive around a pivot point (x
p, y
p) with angular speed ω, the inverse kinematics using Ether's diagram above are:
S1 = ω * (r - yp)
S2 = ω * (r + 0.5*yp - 0.866*xp)
S3 = ω * (r + 0.5*yp + 0.866*xp)
Checking rotation points to verify that we didn't swap sign conventions along the way:
(0,0): all are ωr, check
(0,r): S
1 = 0, S
2 = S
3 = 1.5ωr, reasonable
(0,2r): S
1 = -ωr, S
2 = S
3 = 2ωr, reasonable
(0,-2r): S
1 = 3ωr, S
2 = S
3 = 0, check
(1.155r, 0): S
1 = ωr, S
2 = 0, S
3 = 2ωr, ok
(-1.155r, 0): S
1 = ωr, S
2 = 2ωr, S
3 = 0, ok
If you want "forward" to be directly between wheels rather than through one (for example if you'll be picking up pieces or doing an internal stack), rotate the robot 180 degrees, leaving the axes and forward arrow in place. Then, the inverse kinematics for rotation about (x
p, y
p) become:
S1 = ω * (r + yp)
S2 = ω * (r - 0.5*yp + 0.866*xp)
S3 = ω * (r - 0.5*yp - 0.866*xp)