While I see that this question has been asked several times before, I don’t see much consistent information.
Let’s say I have a square swerve drive. I know that ideally, the robot center of gravity should be in the center of that square. However, I have a climb design that would require the center of gravity be about halfway between the robot center and the back edge. Would this requirement make swerve unusable? I’m not entirely sure what happens and what must be compensated for as the CoG moves away from center.
I would think in most cases you would be fine. You will see additional rotational momentum. Test drive it and see if it makes it untenable. My suspicion is you won’t even notice. If indeed it is a problem for you, when you are defining your kinematic you can define your center of rotation anywhere within your bot you want. I haven’t ever tried a non physically centered center of rotation but in theory it should work
5” off center is a bit more extreme than what we’ve personally experienced, but not outrageous. I think we’ve been as far as 3” and haven’t experienced severe driving issues. You may experience that the wheels on the heavy side slip less when accelerating, so on big accelerations, your robot will “twist” -I.e., the heavy side will turn towards the light side. Your swerve wheels will probably reorient themselves pretty quickly, so your linear trajectory won’t be too messed up. But I wouldn’t be surprised if you experience an unintended robot rotation 10-20 degrees.
Where did I get that number from? A very rough ballpark estimate: let’s say you experience a half-rotation worth of additional slip on the light side than you do on the heavy side. If you draw a right triangle whose three points are the light side wheel starting position, the heavy side wheel starting position, and the heavy side wheel ending position after the slip is over, you can estimate the angle the heavy side has moved through. Using a 4” diameter wheel, and a 25” wheel base, and assuming half a rotation’s Worth of slip, the angle would be:
Arctan(0.5 * 4 * pi / 25) = 14 degrees
This jives with personal experience as well.
You can counteract this a bit by using acceleration limiting in either your software, or at the speed controller level. I believe that most, if not all, speed controllers offer this functionality now.