Releases: mjansen4857/pathplanner
PathPlanner v2025.0.0 Beta 5
This beta release focuses on refactoring the robot config/settings to allow for arbitrary swerve module positions, as well as the ability to add custom features to the robot preview to represent something like an intake. There have also been a few bug fixes.
A couple things to note with this update:
- PPLib beta 5 requires WPILib beta 2
- You will need to reconfigure your robot's module positions in the GUI. They will not be automatically translated from the previously set trackwidth/wheelbase
- If you use the
RobotConfig.fromGUISettings()
method to load aRobotConfig
in code, you MUST regenerate your settings file from the GUI or the method will fail to load the settings. You can do this by changing any setting. - If not using the above method, you will need to change the creation of your
RobotConfig
to use individual module positions, which must be in FL, FR, BL, BR order.
Individual Module Positions
The GUI settings menu has been reworked to allow for the configuration of each individual module position, instead of just trackwidth and wheelbase. This allows PathPlanner to properly generate trajectories for robots without rectangular swerve module placement. To help visualize module positions, a robot preview is always shown in the robot config settings.
PPLib has also been updated to utilize individual module positions in RobotConfig
.
Robot Features
The ability to add custom shapes to the robot preview to represent different robot features has also been added. This can be used to represent things like intakes to make path creation a bit easier, or can be used to draw pretty much anything on the robot preview. Currently, features can be added as a rectangle, circle, or line. The robot's bumpers can now also be offset from the center of the robot's drivetrain.
Full Changelog
- Remove app store badge from readme/docs by @mjansen4857 in #901
- Update to flutter 3.24.4 by @mjansen4857 in #903
- Refactor robot config to use individual module positions by @mjansen4857 in #904
- Ability to add custom features to robot preview by @mjansen4857 in #907
- Fix a few issues by @mjansen4857 in #908
- mac podfile changes by @mjansen4857 in #909
- Fix python path flipping for Choreo paths by @mjansen4857 in #914
- Fix python trajectory generation within commands by @mjansen4857 in #915
- Add Empty Translation Checks by @PickleFace5 in #911
- Replace usage of deprecated ChassisSpeeds methods by @mjansen4857 in #916
New Contributors
- @PickleFace5 made their first contribution in #911
PathPlanner v2025.0.0 Beta 4
This beta release includes the ability to export paths/autos as an image or animated GIF, more PathPlannerAuto trigger factories, and various bug fixes and minor improvements.
Export Paths to PNG/GIF from GUI
Paths and autos can no be exported to a PNG or animated GIF. The export supports light mode for printability as well as a transparent background for PNGs. Paths and autos can be exported using the export button at the top of the path/auto tree.
More PathPlannerAuto triggers (Java implementation only for now)
- Time before reaching event
- Distance from event
- Distance from event end (useful for specifically the end of zoned events)
Full Changelog
- Fix loading of choreo paths with splits [C++ pathplannerlib] by @r4stered in #875
- Switch C++ AutoBuilder
std::function
s to acceptconst&
by @bhall-ctre in #879 - Make documentation Autobuilder example match the project example for C++ by @Luis-Leyva in #876
- Fix PathPlannerTrajectoryState error in Python by @bhall-ctre in #880
- Fix
FlippingUtil
behavior withkMirrored
robot-relative forces andkRotational
field rotation by @bhall-ctre in #883 - Angle check by @JosephTLockwood in #881
- Export paths/autos to PNG or GIF by @mjansen4857 in #884
- Remove incorrect CommandPtr usage in docs by @mjansen4857 in #886
- Load module X/Y forces from Choreo paths by @mjansen4857 in #887
- Upgrade python deps for 2025 beta by @mjansen4857 in #890
- Always add None option to auto chooser by @mjansen4857 in #891
- Add method to get holonomic path start pose if ideal starting state is present by @mjansen4857 in #892
- Allow switching telemetry between simulator/robot by @mjansen4857 in #893
- Update writerside container by @mjansen4857 in #894
- Remove use of python override decorator by @mjansen4857 in #899
- Additional PathPlannerAuto triggers by @mjansen4857 in #900
New Contributors
- @bhall-ctre made their first contribution in #879
- @Luis-Leyva made their first contribution in #876
- @JosephTLockwood made their first contribution in #881
PathPlanner v2025.0.0 Beta 3
This beta release updates PPLib for the 2025 WPILib beta and adds support for the Java units library.
A bug in the GUI preventing the command/event name dropdown from working was also fixed.
Full Changelog
- Fix Choreo auto loading by @mjansen4857 in #861
- Style changes to buildAutoChooser by @ThePhoenixFox in #862
- fix python circular import by @mjansen4857 in #864
- Upgrade PPLib Java/Cpp to 2025 WPILib by @mjansen4857 in #865
- Support java units library by @mjansen4857 in #867
- Fix disabled name dropdown from empty events by @mjansen4857 in #868
PathPlanner v2025.0.0 Beta 2.1
Fixes Choreo path splitting for Choreo 2025 beta 3
Full Changelog
- Fix choreo path splitting by @mjansen4857 in #859
PathPlanner v2025.0.0 Beta 2
This update adds various improvements/quality of life features and adds the ability to bind triggers to a PathPlannerAuto
to create complex trigger-based auto routines.
This will be the last beta release for 2024 WPILib barring any fixes for major issues. Beta 3 will be updated to use the upcoming 2025 WPILib beta.
Release Highlights
Point Towards Zone Triggers
You can now bind commands to triggers controlled by entering/leaving a point towards zone. This can be useful for overriding rotation feedback in a point towards zone to ensure accurate aiming while still using the rotation feedforwards from a path.
PathPlannerAuto Triggers
Allows for creation of event triggers and point towards zone triggers on a per-auto basis instead of globally for all path following commands. Allows for the creation of various other triggers for conditions such as:
- Auto is currently running
- Name of path currently being followed
- Time elapsed/within timestamp range
- Near a field position
- Within field area
- Event trigger
- Point towards zone trigger
These triggers will only be polled when the auto they were created with is currently running, which can not only allow for customizing the function of the same marker between different autos, but help with performance by preventing polling of trigger conditions when they are not needed.
Unlimited Global Constraints
An option has been added to the path global constraints that would make those constraints "unlimited". When unlimited constraints are used, the trajectory generator will only limit for the maximum capabilities of the robot.
Nominal Voltage Constraint
A new option was added to constraints that allows setting the nominal battery voltage. This is effectively a constraint on max velocity and max angular velocity, but automatically applied based on the expected battery voltage throughout the path, which may sag from running other systems such as a shooter or intake. This constraint is still used if constraints are "unlimited".
Event Marker Name Dropdown
Since the names of event markers are used to bind to EventTriggers, the name field for event markers was changed to use a dropdown menu like named commands. This will use the same events list the named command dropdown displays.
Windows & Mac Installers
These were retroactively added to the beta 1 release, but each release now includes a windows installer and a macOS dmg file so you don't need to manually extract the release somewhere, setup shortcuts, etc.
Full Changelog
- Build installers in CI actions by @mjansen4857 in #830
- Add event name dropdown for event markers by @mjansen4857 in #836
- Prevent torque loss from being negative by @mjansen4857 in #837
- Persist paused state through path edits by @mjansen4857 in #838
- Prevent loading of empty Choreo paths by @mjansen4857 in #839
- Add triggers for point towards zones by @mjansen4857 in #840
- Add various triggers to PathPlannerAuto by @mjansen4857 in #842
- Display calculated max accel in settings by @mjansen4857 in #843
- Add edit path button to auto path commands by @mjansen4857 in #844
- Allow unlimited global constraints by @mjansen4857 in #845
- Remove slider divisions and add text field for all sliders by @mjansen4857 in #846
- Allow none/named command to be attached to markers by @mjansen4857 in #848
- Show error popup for uncaught errors by @mjansen4857 in #850
- Outdated file handling by @mjansen4857 in #852
- Expand on Robot Config documentation by @mjansen4857 in #854
- Update on-the-fly docs for waypointsFromPoses by @mjansen4857 in #855
- Choreo event marker updates by @mjansen4857 in #856
- Add nominal voltage constraint by @mjansen4857 in #857
PathPlanner v2025.0.0 Beta 1
The first PathPlanner beta realease of the 2025 season is now available! You can download the latest beta from here, and install PathPlannerLib through VSCode. The beta version of PPLib now uses a different vendor json file, so you will need to remove your 2024 PPLib install to install the 2025 beta. The main vendor json will be updated to the 2025 version with the kickoff release. The documentation has been updated for the beta. Note: Beta 1 currently requires WPILib 2024. Once the WPILib 2025 beta is released, PPLib will require the 2025 beta. Also, simulation on macos is not currently supported, this will be resolved once PPLib updates to use the WPILib 2025 beta.
This release focuses on the ground-up rework of PathPlanner's trajectory generation, which aims to solve the shortcomings of the previous iteration and attempts to give PathPlanner trajectories a "just works" quality with little to no tuning, all while maintaining the ability to generate trajectories on-the-fly.
Beyond the trajectory generator rework, this release also includes new zoned event markers, "point towards" zones, the ability for event markers to function as a Trigger as an alternative to using NamedCommands, a path optimization tool in the GUI, updated support for Choreo 2025 (using PPLib 2025 with Choreo requires Choreo 2025), and more. For people already familiar with PathPlanner and PathPlannerLib, I recommend checking out the docs again. Significant changes have been made to the settings, and there have been some changes to PPLib usage, such as configuring AutoBuilder, which is now condensed into a single configure
method.
Improvements of Trajectory V2
Respects Swerve Dynamics
Trajectories are now generated with swerve kinematics/dynamics in mind to make sure each state is within the robot's capabilities, increasing path following accuracy and consistency.
Motor Torque Based Acceleration Limits
Trajectory V2 uses the available torque output of your robot's drive motors to limit the acceleration and deceleration along the trajectory. One of the issues with limiting acceleration of a module or the robot as a whole with a constant maximum acceleration/torque is that the robot's drive motors are unable to provide constant torque throughout its entire RPM range. Therefore, they cannot maintain a linear acceleration, which requires the user to either reduce the maximum acceleration or velocity below the true maximum capabilities of the robot, or risk the robot falling behind the target acceleration when already near the max velocity. Essentially, you would have to choose between high speed or high accuracy.
Trajectory V2 now limits the acceleration of each module based on the maximum possible torque output of its motor. This uses the motor's current RPM and current limit to get the true maximum torque output of the motor. The robot as a whole will only accelerate as much as the torque outputs from each motor would allow for. Furthermore, forces within the module due to friction are taken into account, which further limits the robot's acceleration but aids in deceleration.
Arbitrary velocity/acceleration constraints can still be used via global constraints or constraint zones, and they will further limit the robot's motion as long as the arbitrary constraints are within the robot's capabilities.
Traction Control
The maximum torque applied by each drive motor is limited by the force of friction between the wheels and the carpet to prevent wheel slip. Furthermore, the maximum speed in curves is limited to prevent the wheels from slipping due to the centripetal forces it experiences.
Balanced Translation and Rotation
Translation and rotation speed is balanced to ensure that every rotation target is hit. The robot will now be able to slow down to give enough time for a rotation to complete.
Torque-Current Feedforwards
During generation, torque-current feedforwards are calculated at every state. Path following commands can now output these feedforwards along with the normal ChassisSpeed output, allowing Phoenix Pro teams using TorqueCurrentFOC control modes to utilize these values to further increase path following performance and accuracy. For teams using voltage output, the module's acceleration is also provided, which can be converted to a voltage feedforward using the characterized kA value.
Other Notable Changes In Beta 1
Path Optimization
The path editor now includes a path optimizer tool that uses a genetic algorithm to adjust the shape of the path, minimizing the total trajectory runtime. The optimizer is not guaranteed to find the true "optimal" path shape, but it can still significantly improve the runtime of unoptimized paths. The optimizer can be run for multiple iterations if better results are desired.
Zoned Event Markers & Event Triggers
Event markers now have the option of including an end position. If a marker is zoned, its associated command will start when the robot enters the zone, and be stopped when it exits the zone. Event markers can now also be used as triggers based on the name they are given in the GUI. For zoned markers, event triggers will remain high while within the zone, and go low when leaving. If a marker is unzoned, its trigger will go high for one loop. Using events as triggers allows for much more complex behavior than NamedCommands, by binding different commands to a marker going high/low, combining multiple event triggers together to handle overlaps, or combining event triggers with other custom triggers to react to sensor reading, for example.
Future beta releases will expand on this concept by allowing for the creation of triggers on individual PathPlannerAuto commands to create more customizable/complex auto behaviors on a per-auto basis.
"Point Towards" Zones
Point towards zones are zones within a path where the robot should aim at a target position on the field. For example, this can be used to track a goal position while following a path. Overriding rotation feedback while in this zone can further increase aiming accuracy. In a future beta release, you will be able to bind commands to a trigger controlled by entering/exiting a point towards zone to easily switch on/off a rotation feedback override.
Replanning Removed
Path replanning has been removed for various reasons. First and foremost: it seemed to cause more issues than it solved. It is very difficult to create a generalized replanning solution that works for everybody. Everyone expects it to work a little bit differently, and it can't really work perfectly for everyone. It tended to cause a lot of confusion for some people, so I think it is best to remove the generalized solution and leave any complex replanning up to individual teams to implement according to their needs if they want such a feature. Furthermore, the computation requirements for trajectory generation has significantly increased. Teams heavily relying on replanning to stich their autos together would experience noticeably higher generation time if they were constantly generating new paths throughout auto mode instead of using the pre-generated "ideal" trajectory.
Torque-Based Swerve Setpoint Generator (Currently Java Only)
A custom version of FRC team 254's SwerveSetpointGenerator which generates setpoints based on available motor torque instead of a maximum acceleration. Also includes various other limits carried over from the generation algorithm, such as limiting torque to maintain traction and limiting module heading changes to prevent sliding. This implementation uses the same configuration object as trajectory generation, making setup quick and easy.
Override Correction Feedback
Methods have been added to PPHolonomicDriveController that allow for overriding the X, Y, and rotation feedback/correction while path following. This can be used to correct the robots X/Y velocity or rotation velocity to target a game piece or goal, while still using the feedforward velocities from the trajectory.
As usual, I appreciate anyone who spends the time time test these beta releases, and highly value any feedback/issue reporting on the github issues page. Good luck to everyone in 2025!
Full Changelog
- Added buildAutoChooser to C++ lib by @ThePhoenixFox in #670
- Add buildAutoChooserWithOptionsModifier by @KennanHunter in #674
- Upgrade Flutter to 3.22 by @mjansen4857 in #699
- Trajectory Generation V2 by @mjansen4857 in #694
- Dynamic path resolution for each path segment by @mjansen4857 in #711
- fixed static initalization in NamedCommands #682 by @r4stered in #685
- pre-sort rotation targets and event markers by @mjansen4857 in #712
- Pre-generate the ideal trajectory for each GUI path by @mjansen4857 in #713
- Remove replanning & infer auto starting pose from first path by @mjansen4857 in #714
- fix cpp rotation override by @mjansen4857 in #716
- Add editor setting to show trajectory states by @mjansen4857 in #719
- Added filtering for buildAut...
PathPlanner v2024.1.7
Changelog
- Fix issue preventing the autos list from scrolling on some trackpads
- Added a duplicate button to commands in event markers/autos
PathPlannerLib Changelog
PathPlanner v2024.1.5
Changelog
- Folders will now scroll when scrolling through the path/auto lists
- Event markers will now have their position shown for choreo paths and autos (Event markers for choreo paths cannot be edited within PathPlanner)
PathPlannerLib Changelog
PathPlanner v2024.1.4
Changelog
- Fix bug preventing the use of X/Y position text fields for linked waypoints
PathPlannerLib Changelog
PathPlanner v2024.1.3
Changelog
- Prevent crash when loading project settings that have been manually edited
- New paths will now use the default constraints by default