Configurable path following

Pure pursuit is a path following algorithm that allows the programmer to make compromises between the flexibility of the robots path and the accuracy with which it follows. Pure pursuit works by drawing a circle of a certain radius (which can be dynamically increased or decreased) around the robots current location and searching for intersections it makes with the path. Pure pursuit then chooses the closest of these intersections to the destination of the path and reports that as the goal point. This usually results in smooth movements, with the ability to avoid drastic shortcuts if accuracy is needed.

Implementation

These samples were generated and visualized using pyplot. In our actual implementation, pure pursuit is called every frame to resolve a path passed to it by the path planner. Its output is combined with a path resolver that adjusts the heading of the robot in order to follow a straight line to the goal point. We increase the radius in the cases where we end up off of the strictly defined path, in order to keep flexibility (and therefore risk of collision) to a minimum unless absolutely necessary to make forward progress.

ROS 2 Integration with path planning