Pure Pursuit Control

Date: January 2020
Proposed by: Evan Pratten <@ewpratten>
Implemented: February 2020


2020 robot Darth Raider is in need of a high-speed, medium-accuracy autonomous path following solution. Given current issues with the RAMSETE controller used throughout January, and in tech demos, I think switching to Pure Pursuit is a better choice, as it reduces code complexity, and is more friendly to our specific application (adjusting to field inaccuracy in real-time).


Controller implementation and design is based on this document published by the CMU Robotics Institute, and this document published by Concord Robotics.

Pure Pursuit works by searching for goal poses along a segmented path N meters in front of the robot. This value is called the lookahead gain of the controller. Increasing this gain causes the robot to take shortcuts in its path, effectively smoothing the path, as well as causing the robot to take more efficient paths.

Smaller and larger lookahead gains will cause different behavior:


  1. Added support for swerve-drive calculation
  2. Fixed a bug where path follower would occasionally fail to find a path, and lock up
  3. Split implementation into Follower and DualPIDTankDriveTrain