PathPlanner 2023 Beta

Hello everyone! The first beta version of PathPlanner 2023 has been released, including a bunch of new additions and fixes. I’d appreciate any feedback/bug reports you guys have before the start of the 2023 season.

You can dowload the latest pre-release from here and install PathPlannerLib through VSCode. The wiki has been updated for the new version.

Major PathPlanner changes since 2022

  • Redesigned with the Material 3 standard
  • Dynamic app theme based on team color (or any color you want)
  • Native Apple Silicon support
  • Added ability to import and use custom field images
  • Editor cards can now be dragged around to re-position them
  • Added a “Measure” editor mode to measure distances on the field
  • Added an “Event Marker” editor mode to place event markers along a path. These markers can be used to trigger other commands while path following
  • Added a “Graph” editor mode for visualization of generated paths
  • Added a “Stop Point” option to waypoints. Paths with stop points can be loaded as a “path group” in PathPlannerLib, which will separate the path by its stop points into a list of individual paths
  • Added the ability to connect to a server running on the robot via PathPlannerLib (Java only for now). This will save changes to paths on the robot without re-deploying, and will enable a new “Path Following” editor mode that will display the current path, target robot pose, and actual robot pose while path following

Major PathPlannerLib changes since 2022

  • Support for “event markers”
  • Load a path file as a path group (list of individual paths), split by its “stop points”
  • Added the ability to run a “PathPlannerLib server” (java only for now). When connected to the PathPlanner GUI, this will automatically update paths on the robot when edited in PathPlanner, and will display visualizations in PathPlanner of the current path, target pose, and actual robot pose while path following
  • Added getConstraintsFromPath method to allow loading path constraints from a path file. This allows path velocity and acceleration to be changed without rebuilding code
  • Added custom PPHolonomicDriveController that:
    • Uses PathPlanner paths directly
    • Uses holonomic angular velocity as a feedforward for rotation
    • Automatically configures continuous input for the rotation PID controller
  • Added custom PPSwerveControllerCommand, PPMecanumControllerCommand, PPRamseteCommand, PPLTVUnicycleCommand, PPLTVDifferentialDriveCommand commands (Java only for now) that:
    • Use PathPlanner paths directly
    • Automatically triggers commands from given “event map” when reaching event markers
    • Pushes a Field2d and error data to SmartDashboard for debugging
    • Sends path following data over the PathPlannerLib server for visualization within PathPlanner
  • Added generatePath methods for on-the-fly generation from a list of points
  • Added getInitialHolonomicPose method that can be used to reset holonomic odometry at the beginning of a path

This release will not be deployed to the Mac App Store and Microsoft Store for now. I do not want to auto-update people that do not wish to upgrade to this release yet, but have included the links below for anyone not aware of them.

   
82 Likes

Thank you for continuing to work on this, Spectrum used PathPlanner last season and we are excited to see so many great improvements.

9 Likes

It looks like PathPlannerLib requires the 2023 WPILib beta? So teams interested in trying this on a robot should sign up for the WPILib beta: 2022 Control System Reporting, 2023 Updates, and Beta Testing | FIRST

2 Likes

It is built for the beta, but I have it running in WPILib projects still using 2022.

3467 sends our thanks as well, we’re really excited to implement the holonomic improvements, as well as path groups. We’ve also appreciated the prompt support with some of the issues we’ve encountered and the performance advantage we gain from using PathPlanner in our autos is significant.

1 Like

Team 2539 would like to thank you as well. We just started using Java this off-season and we have been loving it. PathPlanner made complex autos possible, and we are looking forward to trying this new release.

2 Likes

PathGroups are something I knew I needed, but didn’t think I’d ever get. This is incredible!

5 Likes

We’ll definitely jump on the ‘thanks’ bandwagon. Path planner enabled us to design and tune a 5-ball auto. Normally, when your alliance partner places their bot in front of you, ur 5-ball is toast, but with path planner and frc-characterization a robot can overcome these challenges.

EDIT: Erm… THANK YOU!

1 Like

Thank you for releasing this, the Programmers of 5727 greatly appreciate it, we used pathplanner for the entire 2022 Comp season, and we shall continue to use it throughout the 2023 season. We are looking forward for future updates as well.

1 Like

This is exciting, we used a version of your pathplanner last year and it worked very well for us, looking forward to trying the new features!

1 Like

This is an amazing tool. Team 6647 is using it to get autonomous paths

1 Like

How did they solve this issue? Maybe I overlooked something

Thanks

Well, prior to this, the knowledge and bandwidth for our team didn’t allow for programming a path planning autonomous that used feed-forward AND feedback. The ease of use for this tool is amazing and allows you to use both methodologies to stay on your desired trajectories at the right times.

If we didn’t have path planner, we’d be running an autonomous that looks like this (where we simply drive forward, turn 90, drive again, turn 90, etc.):

NOt only is the above method slow. You have to deal with inconsistency if you do only feedback or feedforward response, like us running into the scale and getting penalized here:

2 Likes

Is it on the roadmap to optionally exclude heading and/or holonomic rotation from a waypoint to allow the generator to optimize those itself? For example If I don’t want to have to fiddle with the holonomic rotation to maintain the smooth rotation rate as the robot crosses a waypoint.

6 Likes

Good idea, will definitely work on that!

1 Like

Does the generate path Method take into account the speed of the robot. For example if the robot is being driven and someone presses a button to drive a path. Will it continue smoothly driving or stop abruptly and then drive the path.

Yup. You can set the velocity override of the first point in the generatePath method to your current linear velocity and the path will be generated with that as a starting velocity. Just realized I forgot to add generatePath examples to the wiki so I’ll add those.

2 Likes

How performant is the path generation in real-time?

No clue. I haven’t gotten the opportunity to measure it on an actual roborio. Depending on number of waypoints, paths typically take an average of <1ms - 3ms for me in a simulator on a 5950X so that’s something to go off I guess. The resolution it generates at is technically configurable by changing PathPlanner.resolution (it’s currently protected but I can make it public if need be) so it can be sped up if it ends up being too slow.

If anyone is able to benchmark path generation on an actual rio I’d love to see the results.

2 Likes

How should I go about combining PathPlanner with commands like AimAndShoot? Groups or markers?