This action generates a robot control signal (wheel velocities) to go around a point at a given distance from the robot's centre (distance perpendicular to the robot's heading).
Possible use cases are, for example, getting to an appropriate position to kick the ball or obstacle avoidance.
This action is implemented in the function go_around_the_point()
.
Assumptions: The robot's model is known
Inputs: Radius of Curvature of the path, direction: 1 = clockwise, -1 = counterclockwise.
Output: Robot control command (single instance)
In the two-wheel differential drive system the radius of curvature (R), the distance between wheels (l) and the ratio of velocities of the left (Vl) and the right (Vr) wheels are related. The relation is given by the following equation:
Vl/Vr = (R - l/2)/(R + l/2)
.
Finally, we check the maximum velocity. If the velocity of any wheel exceeds a threshold value, a new calculation is done.
Figure 1:The Robot and the point it has to go around.
Figure 2: The derivation of the formula using similarity of triangles.