-
Notifications
You must be signed in to change notification settings - Fork 147
PathPlannerLib Changelog
Michael Jansen edited this page Mar 27, 2024
·
26 revisions
- [C++] Fix improper Choreo event marker parsing
- [Python] Added
buildAutoChooser
implementation - Added AutoBuilder
configureCustom
override that accepts a boolean supplier for automatically flipping the starting pose - [Java] Added methods to create commands to warm up path following and pathfinding commands to avoid delays when running them for the first time
- Reduced the effect of the robot's "stopping distance" when replanning paths
- Fixed issue where Choreo event markers would not be copied over when flipping to the red alliance
- [Java] Fixed issue where "rotate fast" would be false for pathfinding to path commands
- [Java] Include name of auto in error message if an auto fails to build
- [C++] Fixed crash for paths with event markers
- Added
pathfindToPoseFlipped
method toAutoBuilder
that will either pathfind to the given pose, or pathfind to the given pose flipped to the other side of the field depending on the value of the path flipping supplier.
- Converted event markers to be time based instead of position based, to avoid issues with paths that double back on themselves
- Added
getPathPoses
method toPathPlannerPath
that will return a list of poses that can be used to display the path on a field 2d widget - Added support for Choreo's upcoming event marker feature
-
PathPlannerTrajectory
constructor can now be used with Choreo paths without crashing
- Fixed path flipping issues for running a pathfinding command to another path
- Will now report a driver station warning if a named command has not been registered before being added to an event marker/auto
- Will now throw an exception if a path file is not found instead of returning null
- Fixed a bug that would cause the
PathPlannerAuto.getPathGroupFromAutoFile
method to fail on Choreo autos - Will now report a driver station error instead of throwing an exception if AutoBuilder is configured multiple times
- [C++] Fix an issue where the PPHolonomicDriveController could default to being disabled
- Fixed bug with incorrectly flipping rotations for Choreo paths
- [C++] Fixed issue with path flipping
- Prevent possible pathfinding command crash
- [C++] Fixed rotation target interpolation for targets with "rotate as fast as possible" set to false
- [Python] Fixed cyclical import
- Fixed replanning not being triggered properly
- Setting dynamic pathfinding obstacles will now only cause the path to be recalculated if they interfere with the current path
- [C++ Only] Fixed a typo in
fromChoreoTrajectory
- Added a boolean supplier parameter to path following commands and auto builder configuration. The return value of this method will determine if paths get flipped to the other side of the field. See the docs for examples of this
- [C++] JSON parsing should no longer fail
- Significantly improved pathfinding performance on RIO
- Added RemoteADStar pathfinder implementation for running pathfinding on a coprocessor
- Added support for the GUI's "Rotate Fast" option
- Fixed various issues with pathfinding commands
- Active path logging callback will now be called with an empty list when a path following or pathfinding command ends
- Official Python support (will be released with next robotpy beta)
- Added the ability to load Choreo trajectories as a PathPlannerPath. This allows Choreo trajectories to be followed with PPLib commands and used in autos
- Fixed issue where paths could be replanned unnecessarily when the robot has a non-zero starting velocity
- Added Java and C++ example projects
- [C++] Fix an error with loading auto file w/ null starting pose
- Added a PathPlannerPath method to get a starting holonomic pose using the preview starting rotation from the GUI
- [Java] Added
AutoBuilder.getAllAutoNames()
method to get a list of all autos in the project - Fix improper calculations in
PathPlannerPath.bezierFromPoses
- Fixed some fields not being properly set when a path is reversed
- Added builds for linux arm32 and arm64
- [Java only] added
AutoBuilder.buildAutoChooser
method that will create and populate a sendable chooser with all autos in the project - Added a helper method to get the starting differential pose of a path without generating a trajectory
- Fixed path replanning for pathfinding paths
- Pathfinding paths will now be replanned if the new path requires a significant change in heading
- Re-added
fromPathPoints
PathPlannerPath factory for creating paths from a list of pre-smoothed points - Fixed robot not moving in pathfinding commands when specifying dynamic obstacles
- Refactor pathfinding commands to use a generic pathfinder interface, allowing for future pathfinder options and the use of custom pathfinders
- Pathfinding commands now use
ReplanningConfig
and can support dynamic replanning - The "current path" telemetry entry is now compatible with AdvantageScope
- Added the ability to override the target holonomic rotation while path following via a lambda function.
- 2024 Reworks. Check CD Post for more info
- Fixed C++ FollowPathWithEvents command requirements checks
- Fixed C++ auto builder drivetrain type initialization
- Added the ability to add custom logging callbacks to path following commands. Call the static
setLoggingCallbacks
method on the path following command you use to set the logging callbacks. - Changed path following commands and autobuilders to not mirror paths for the red alliance by default. This can be enabled with the
useAllianceColor
boolean
- Automatically transform paths for the red alliance when using PathPlannerLib path following commands or auto builders
- Added new AutoBuilder functionality to generate full autonomous routines from path files
- Added functionality to get event markers for a path. The
getMarkers
method will return a list of all markers on a path. These markers will have a list of names, time, and position associated with them that can be used with path following commands to trigger other code - Added the ability to load a path as a path group. A path file will be split into multiple paths based on the waypoints marked as stop points. If a path with stop points is loaded as a normal path, the robot will not stop at stop points
- Added support for new "stop events"
- Added holonomic angular velocity to path states
- 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
commands that:- Use PathPlanner paths directly
- Pushes a Field2d and error data to SmartDashboard for debugging
- Sends path following data over the PathPlannerLib server for visualization within PathPlanner (Java only)
- Added
FollowPathWithEvents
command that will trigger events while running a path following command - 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
- 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
- Add overloads to generatePath methods to take in a list of points instead of varargs/initializer lists
- Minor fixes and improvements
- Replace user-facing usages of ArrayList and HashMap with generic List and Map interfaces
- Add loadPathGroup overload that takes in a vector of PathConstraints instead of an initializer list
- Added more constructor options for auto builders to take advantage of the constructor options for path following commands (#166)
- Added parallel deadline stop event behavior (#167)
- Added minimum wait behavior (#168)
- Build with Java 11 compatibility to maintain backwards-compatibility with 2022 WPILib
- Added ability to manually choose control point lengths for on-the-fly generation (#175)
- Added custom path following commands to C++ version
- Added support for multiple events per marker
- Added support for new "stop events"
- Added new AutoBuilder functionality to generate full autonomous routines from path files
- Removed event triggering from path following commands. This was not safe to use in command groups. This has been replaced with the
FollowPathWithEvents
command that will wrap the path following command and run events. This new command is safe to use in groups.
- Fixed a PathPlannerLib server crash
- Added
getEndWaitTime
methods to trajectories to get the wait time that was configured in the GUI - Added
fromCurrentHolonomicState
andfromCurrentDifferentialState
helper methods to the PathPoint class that will return a PathPoint with the current position, heading, velocity, etc of the robot - Fixed holonomic rotation not correctly passing the -180/180 barrier
- Added empty PathPlannerTrajectory constructor
- Added functionality to get event markers for a path. The
getMarkers
method will return a list of all markers on a path. These markers will have a name, time, and position associated with them that can be used in path following commands to trigger other code - Added the ability to load a path as a path group. A path file will be split into multiple paths based on the waypoints marked as stop points. If a path with stop points is loaded as a normal path, the robot will not stop at stop points
- Added holonomic angular velocity to path states
- 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 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
getInitialHolonomicPose
method that can be used to reset holonomic odometry at the beginning of a path - Other minor fixes and improvements
- Controls & Shortcuts
- Editing Paths & Autos
- Navigation Menu
- Settings
- Project Browser
- Telemetry Page
- Navigation Grid Editor
- Register Named Commands
- Build an Auto
- Follow a Single Path
- Create a Path On-the-fly
- Path Groups
- Automatic Pathfinding
Advanced Usage
- Register Named Commands
- Build an Auto
- Follow a Single Path
- Create a Path On-the-fly
- Path Groups
- Automatic Pathfinding
Advanced Usage
- Register Named Commands
- Build an Auto
- Follow a Single Path
- Create a Path On-the-fly
- Path Groups
- Automatic Pathfinding