[feedback requested] My understanding of the differences between the various pathfinding options (Pure Pursuit vs WPI/FTC Lib RAMSETE vs RoadRunner RAMSETE)

I’m a fairly new mentor trying to educate myself about FTC pathfinding. If I have any errors or omissions, please let me know! After researching this topic this is my current understanding of the the available pathfollowing options:

  1. RAMSETE is an abbreviation for “Robotica Articolata e Mobile per i SErvizi e le TEcnologie”, a book that contained an article entitled, “Control of Wheeled Mobile Robots: An Experimental Overview” that described an algorithm that is now referred to as “the RAMSETE Algorithm,” and, DEPENDING ON THE IMPLEMENTATION, it CAN be (but doesn’t have to be) compatible with holonomic drives. It can handle acceleration and velocity constraints.

  2. Pure Pursuit is a separate algorithm that has nothing to do with RAMSETE and is not capable of taking advantage of holonomic drives. It does not handle acceleration or velocity constraints and it can only attempt to match the actual path of the robot to some future point in the trajectory via steering. The algorithm handles sharp turns poorly.

  3. Both of these algorithms appear to be what I am calling “path/trajectory followers”. Neither algorithm has anything to do with generating paths/trajectories (paths do not have velocity/acceleration constraints, while trajectories do), and as far as I can tell both algorithms could theoretically (and sometimes do) operate on the same path/trajectory objects.

  4. Only FTC Lib offers Pure Pursuit, while both FTClib and WPIlib offer a RAMSETE algorithm — HOWEVER, these implementations of the RAMSETE algorithm in this library do NOT support holonomic drives! A holonomic algorithm if offered, however it is PID based (thus, linear rather than nonlinear and presumably inferior to RAMSETE) and I did not research it much.
    (“Because the Ramsete controller is a controller for non-holonomic robots […] the adjusted speeds object has a vy of zero.” Ramsete Controller — FIRST Robotics Competition documentation (wpilib.org)).

  5. RoadRunner only offers a holonomic implmentation of RAMSETE.

  6. WPILib offers a Windows GUI program called “PathWeaver” that can be used to visualize paths (trajectories?) that could be possibly used by either Pure Pursuit or RAMSETE, except I’m not sure if PathWeaver also handles acceleration and velocity constraints, so the output might not immediately be compatible with Pure Pursuit. With manipulation, it may be possible to use the output with the RoadRunner implementation of RAMSETE.

  7. FTC/WPI Lib both offer API-based trajectory generation by combining multiple clamped cubic spline trajectory segments into a single trajectory object.

  8. FTC/WPI Lib both offer a complex constraint system that permits localized constraints on multiple acceleration and velocity parameters (both robot and wheel-specific).

  9. FTC/WPI Lib both offer a basic trajectory manipulation library to shift and re-orient existing trajectories.

  10. Road Runner offers a similar multiple-path to single-trajectory system, where each segment is made up of either a spline or a straight-line segment. (Effectively, they have identical capabilities.)

  11. Road Runner additionally offers turns, which FTCLib and WPILib do not. (This appears to be a minor difference: FTC Lib/WPI Lib could execute a trajectory, then turn separately, then execute another trajectory.)

  12. Road Runner offers the ability to reverse a trajectory. I could not tell if WPI/FTC lib offers the same ability or if this ability can even reasonably be implemented. (Perhaps by including a separate path that is the reverse of the first, then swapping the paths while retaining the current pose information?)

  13. Road Runner offers “markers”, a system that signals the rest of the robot to perform an travel-unrelated action when partially through the trajectory. I could not tell if WPI/FTC lib offers a similar ability, but again, this appears to be a minor difference as the marker system is ultimately merely timer-based.

  14. Road Runner also has a constraint system, but it works differently. It’s unclear exactly how its constraint system works to me, but I believe constraints are added as steps in a trajectory, rather than regions in space as is done in FTC/WPI Lib.

Overall, it would appear that WPI/FTC Libraries are very similar to RoadRunner when it comes to trajectory following, except that the WPI/FTC implementation is intended for non-holonomic drives while the RoadRunner implementation is intended for holonomic drives.

There are additional features unrelated to path following available in FTC/WPI lib, but I see no reason why you couldn’t use both libraries if you wish to use these extra features but also have a holonomic drive.


I’ve never heard of a holonomic implementation of the RAMSETE algorithm, and I’m not sure what problem it would be trying to solve.

Typically the need for something more complex than proportional feedback (such as RAMSETE) comes from the (rather substantial) constraints of nonholonomic motion - because a unicycle drive cannot move sideways, it has no way of correcting lateral error independent of forward/backward motion. Thus, controlling the lateral error of a path requires some cleverness.

A holonomic drive does not suffer this problem, and so can run a simpler algorithm with success.