While odometry was a huge step up in our robot's autonomous capabilities, there was still some room for improvement. For instance, if we wanted the robot to move in an L-shape, the robot would move from top to bottom, stop, and then move left to right. However, a human driver would be able to do the whole path in one continuous motion. This inefficiency on the robot's part costs us valuable time, especially since the autonomous period only lasts 30 seconds.
To solve this issue, I implemented a pure pursuit navigation algorithm. Normally, when we're telling the robot to go somewhere, we tell it to approach a fixed point. In pure pursuit, we tell the robot to approach a moving point, specifically a point a set distance further along the path than the robot. In other words, we're dangling out a carrot on a stick for the robot to follow.
With this algorithm, we can define a series of lines for the robot to go along, and Agobot will drive down them without stopping, and it'll even round corners (since the approach point will reach and turn the corner before Agobot does).
Like with odometry, there's not many good resources online that explain pure pursuit in an easy-to-explain manner, so I wrote up a guide. Feel free to take a look!
Pure Pursuit Guide