In a differentially steered robot, a tail wheel can either turn freely or be steered. Too often, free wheeling tail wheels will get stuck and start dragging at some point if the robot is negotiating a number of radically different turns. Backing up is a common situation where this occurs because the tail wheel must rotate 180 degrees in the very short time it takes the robot to reverse its direction. Using a steered tail wheel avoids this unsatisfactory situation because it insures that the tail wheel will always be properly aligned to the robot’s turn configuration..
Calculating the Tail Wheel Angle for Any Given Turn
1.0 The Math:
There are three distinct ways in which the robot can make a turn. It can rotate about its center (Case 1 below); it can pivot about one wheel (Case 2 below); or it can arc around a virtual point not located on the robot itself (Case 3 below). The examples for each of these three cases use the following nomenclature :
VR = speed of the right wheel
VL = speed of the left wheel
b = the distance between the two drive wheels i.e. the length of the drive wheel axle
a = the distance from the drive wheel axle to the tail wheel i.e. the length of the tail wheel arm
r = the radius of the circle inscribed by the tail wheel when the robot is in a turn.
d = the Case 3 virtual distance between the inside drive wheel and the center of the circle around which the robot turns.
c = the center of the circle inscribed by the bots turn.
theta = the angle subtended by a and r
TW angle = The tail wheel angle to steer = (Pi/2) – Theta. The tail wheel angle is zero or in the neutral position when the robot is moving forward in a straight line. A positive tail wheel angle is clockwise from the neutral position; a negative tail wheel angle is counterclockwise from it. For the tail wheel calculation examples below the tail wheel turns in a clockwise direction i.e. a positive angle. If the example motor values are reversed, the magnitude of the tail wheel angle is unchanged but the tail wheel turns in a counterclockwise direction i.e. a negative angle.
In Cases 1 and 2, the tail wheel angle to steer is a constant since it relies only on the fixed geometry of the robot – specifically the drive wheel axis length b and the tail wheel arm a. For programming purposes then, the Case 1 and Case 2 angles need only to be calculated once for any given robot configuration.
2.0 Using the Servo4 Quick Set Servo Command Value – Left Turns
Note: Labels on the diagrams below are different from those above but the methodology and formulas are the same
3.0 Using the Servo4 Quick Set Servo Command Value – Right Turns
The Quick Set Servo Command embeds the servo command value within the Quick Set command itself in the form 0ppp:ppss where the “p‘s” represent the five-bit binary value of the Quick Set command and the s‘s represent the servo number 0 -3) . The pseudo code for converting the servo command value into the Quick Set Command format is: Quick Set = servo_cmd << 2 + Servo[s].