I'm building a model of a long vehicle with 6 axles and I want to be able to steer it. How do I calculate the amount each axle should steer to minimise dragging of some wheels round sideways as it turns?
2 Answers
What you are talking about is called Ackerman steering and is pretty easy to get approximately right, but requires non-linear proportional steering control to get fully right.
If you put an imaginary focus/center point of steering somewhere to the side of the vehicle, in the plane of the axis of rotation for each wheel, then the axis through the center of each wheel should all meet at that point. The math is simple trigonometry, but building a mechanical steering system that gets this right for many wheels for all degrees of steering is hard. (For a rover robot I built, I ended up driving each wheel using a servo, because math for servo controllers is easy :-)
All axles of the wheels should end up crossing in the same point. That will be the center of your turn.
Once you have that point you simply draw the line from the center of the wheel to that point and get the angle compared to the Right vector acos(dot(right, desiredAxle))
.
This provides the angles for each wheel separately. If there is a complex steering mechanism then you can use those values to approximate the best steering angle to set.