-
Notifications
You must be signed in to change notification settings - Fork 13
Modify RR vs Pedro into a table format #46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
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. | ||
- 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. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 --> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. don't agree There was a problem hiding this comment. Choose a reason for hiding this commentThe 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? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
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> --> | ||
|
||
<!-- | ||
|
||
|
@@ -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. | ||
|
@@ -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* |
There was a problem hiding this comment.
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).
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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