Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 30 additions & 59 deletions src/misc/pedro_vs_roadrunner.md
Original file line number Diff line number Diff line change
@@ -1,67 +1,41 @@
# Pedro Pathing vs Road Runner

**Pedro Pathing** is a path-following library that utilizes a reactive vector follower
that implements translational, heading, and centripetal force correction
to dynamically converge to the target position.
For FTC, when it comes to path following, there are two main solutions, **Road Runner** and **Pedro Pathing**.
Although both are designed to achieve the same task, each has its own benefits and tradeoffs. The table
below compares the different features.

**Links:**
- Docs: <https://pedropathing.com>
- Quickstart: <https://github.com/Pedro-Pathing/Quickstart>
- Library: <https://github.com/Pedro-Pathing/PedroPathing>
- Visualizer: <https://visualizer.pedropathing.com>

**Pros of Pedro:**
- Can make your bot drive faster.
- Excellent correction for unexpected disturbances.
- Has a no-code, browser-based path visualizer.
- Caches motor writes by default.
- Corrects for centripetal force to hold the robot onto curved paths.
- Path curves can be manually set using control points.

**Cons of Pedro:**
- Newer, so potentially buggier.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still true! (not as much as when this was first written, but that doesn't warrant taking it away).

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the rewrite makes this much more the case

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The rewrite isn't public so it wouldn't make sense to discredit based on an unreleased version

- Less people use it compared to Road Runner.
- Tuning is mostly manual. <!-- 4 automatically tuned constants, minimum of 32 manually tuned constants -->
- Not necessarily time-consistent; speed is prioritized over consistency.
Copy link
Contributor

@0verkil 0verkil Jul 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Confused why the line about time consistency was removed. This is necessarily true.

- Visualizer uses a nonstandard (0 - 144) coordinate scheme.
- Path curves are not automatically optimized, and must be manually set using control points.
- Quickstart code is not under the standard TeamCode package name,
making using SlothLoad and integrating existing projects more difficult.
- Does not bulk read by default.
- No logs, so no replays of each run and much more difficult debugging.
- No AdvantageScope support.
# Pedro Pathing vs Road Runner
| Feature | Pedro Pathing | Road Runner |
|-------------------------|----------------------------------------------------------------------------------|--------------------------------------------------------|
| **Following** | Path Follower that adapts along the path, uses centripetal force correction | Trajectory follower using pre-planned motion profiling |
| **Visualizer** | Web-based, no-code, easier to use, generates code for the user | Requires user code to generate paths |
| **Tuning** | Half manual and half automatic | Nearly all automatic |
| **Motor Write Caching** | Used by default | Able to be implemented manually |
| **Default Paths** | Bezier curves by default, custom curves can be implemented extremely easily | Quintic Hermite splines |
| **Priority** | Speed and Precision | Time consistency |
| **Command Integration** | External (FTCLib, SolversLib, NextFTC), Flexible | Built-in (Actions), External libraries unsupported |

---

**Road Runner** is a motion-profiling-based follower library
that includes a command-based action system and geometry.

It prioritizes time consistency above all else.
| Information | Pedro Pathing | Roadrunner |
|--------|--------|--------|
| **Docs** | <https://pedropathing.com> | <https://rr.brott.dev/docs/v1-0/installation/> |
| **Quickstart** | <https://github.com/Pedro-Pathing/Quickstart> | <https://github.com/acmerobotics/road-runner-quickstart/tree/master/> |
| **Visualizer** | <https://visualizer.pedropathing.com> | <https://github.com/acmerobotics/meepmeep> |
| **Library** | <https://github.com/Pedro-Pathing/PedroPathing> | <https://github.com/acmerobotics/road-runner/> |

- Docs: <https://rr.brott.dev/docs/v1-0/installation/>
- Quickstart: <https://github.com/acmerobotics/road-runner-quickstart/tree/master/>
- Library: <https://github.com/acmerobotics/road-runner/>
- Visualizer: <https://github.com/acmerobotics/meepmeep>
---

**Pros of Road Runner:**
- Stable, minimal bugs if any.
- Time consistent by default.
- Tuning is almost fully automated, making it difficult to screw up. <!-- 5 automatically tuned constants, 3 manually tuned constants -->
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

don't agree

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With what? The content being removed or the fact that it's being removed?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With what? The content being removed or the fact that it's being removed?

with what is being said I presume

- Extensively tested and used by thousands of teams; almost all possible problems have been solved before.
- Path curves are automatically optimized to create the ideal path based on your robot's constants.
- Uses the FIRST-recommended standard coordinate system consistently.
- Works with SlothLoad immediately.
- Bulk reads by default.
- Built-in custom logs, for easier debugging and full replays of every run.
- [Full AdvantageScope support.](https://github.com/Mechanical-Advantage/AdvantageScope/pull/373)
**Pros and Cons of Road Runner:**
Road Runner typically prioritizes time consistency above all else, using pre-planned motion profiling. This allows the following of full trajectories with preset speed and acceleration constraints created by the user.
The Road Runner tuning pass is nearly automatic, making it more accessible for many users (although the actual tuning time doesn't necessarily vary too much from Pedro Pathing). Due to prioritizing time-consistency, Road Runner defaults to about 80% of the robot's maximum speed when path-following, a major drawback. Furthermore, the motion model doesn't account for the reduced speed due to strafing, which can often produce inaccurate motion.
Road Runner has a built-in action system, but you cannot use any other action system in conjunction with Road Runner. If a user uses a certain external command-base in their TeleOp, they cannot use it in auto.

**Cons of Roadrunner:**
- Prioritizes time consistency above all else, meaning potentially worse correction.
- Slower speed by default.
- Path curves are less flexible then Pedro.
- Path visualizer is code based.
- Does not cache motor writes by default.
- No built-in centripetal force correction.
**Pros and Cons of Pedro Pathing:**
Pedro Pathing typically prioritizes speed and precision while following the path. The follower corrects the robot back to the target position when outside forces create inaccuracies in the robot's position or heading, while still following the path. Pedro Pathing also uses centripetal force correction, so it is able to follow curved paths better. Similar to custom p2p and Pure Pursuit algorithms, Pedro Pathing typically moves the robot along the path much faster than Road Runner.
While Pedro Pathing does not currently have built-in command integration, Pedro supports external command bases so the user can choose according to their preferences.
A major advantage of Pedro Pathing is its path visualizer. The visualizer is web-based, doesn't require the user to write any code, and even generates code for the user. The visualizer is also typically considered to be easier to use, since "eyeballing paths" can be done by arbitrarily dragging control points until a desired path is achieved. To assist in storage, these paths can then be exported concisely into a single, re-uploadable file.
<!-- The above information is taken from the Pedro Pathing Docs: https://github.com/Pedro-Pathing/Docs/blob/master/content/docs/pathing/pedro-v-roadrunner.mdx & <https://pedropathing.com/docs/pathing/pedro-v-roadrunner> -->

<!--

Expand All @@ -70,8 +44,6 @@ Guidelines for editing this page:
Differences must be objective issues from a neutral point of view, not one sided.
Ideally, people with biases in both directions should agree about these differences.

Each difference will be listed twice, as a pro of one library and as a con of another.

Actively avoid being reductive or summarizing into an overall recommendation;
the idea of the page is that both libraries are good for different needs,
and the reader should decide for themself which library aligns with their priorities.
Expand All @@ -83,7 +55,6 @@ If you feel that a library has too many cons, consider fixing the underlying iss
and improving the experience for all users. Let us know (in an issue, PR, or in the Cookbook Discord)
after this happens and we will be happy to remove it from the list.


-->

*Last Updated: 2025-3-29*
*Last Updated: 2025-07-07*