Releases: Pedro-Pathing/PedroPathing
v2.0.5
Changes:
Fix: Patch NaN on path completion interpolation
Fix: Change debugString() in ErrorCalculator and VectorCalculator to not mess with the derivative calculation
Fix: Make close callbacks execute in the correct order
Addition: Add setX(), setY(), and setHeading() to Follower and Localizer
Feature: Allow reusing lazily generated paths, i.e., paths with FuturePoses
Fix: Swap caught Exceptions for IllegalArgumentExceptions
Fix: Make setGlobalReversed() not broken
Refactor: Clean up piecewise heading
Fix: Correct stopping distance calculation
Fix: Allow Paths to have separate path constraints from the PathChain
Fix: Make turn and turnTo full speed
v2.0.4
Changes:
- Fix:
PinpointLocalizerangular velocity extraction - Fix:
turnToandturn - Fix:
HeadingInterpolatorfacingPoint(...) - Fix:
getDriveErrorvelocity documentation
v2.0.3
Changes:
- Fix:
totalHeadinginOTOSLocalizerandPinpointLocalizerwould increase in wrong direction with heading numbers with their absolute value > 180° - Fix: Drive Vector faces wrong direction at parametric end
- Fix: Custom Encoder Resolution in Pinpoint locked to be inches, now uses constants' distance unit
- Add
offsetHeadingparameter forsetTeleOpDriveto specific an offset for fieldCentric driving- For example, a user could specific Math.toRadians(180) so they can easily drive from blue drive team perspective in field centric drive without messing with their coordinates
- Add
startTeleOpDrive(boolean useBrakeMode)andstartTeleOpDrive()with plans to deprecatestartTeleopDrive(boolean useBrakeMode)andstartTeleopDrive() - Add a
follower.update()tostartTeleOpDrive(all variants) to mitigate the Pose NPE if afollower.updateis not called before.
v2.0.2
Changes:
- Add InvertedFTCCoordinates for the Decode Field
- Set up Maven Central Publishing
v2.0.1
Changes:
- Fix Lazy Interpolation Gen
- Add Filter Interface
- Pose#Mirror for Decode Autos
v2.0.0
Changes
- Custom, piecewise, reversed, facing point and global heading interpolations
- Deceleration customizability
- Optionally decelerating later in path
- Deceleration throughout PathChain
- No deceleration option
- Control of strength and start of deceleration
- Added support for custom path callbacks; parametric callbacks now use path completion instead of t-value
- Added support for different drivetrains and curves
- Pausing and resuming pathfollowing mid-path
- Separation of Follower into Vector + Error Calculators and Drivetrains
- Per-instance constants instead of global constants
- No more jank initialization
- Constant sets
- Improved code readability and Javadocs
- Updates to Pose class (coordinate system swapping fixes, Pose2d conversion)
- Removal of Point class
- Updates to Path, BezierCurve, and BezierLine classes for optimization and ease of use
- Path Constraints able to be set as the default globally or per-path
- Lazy Curve generation
- Able to use follower::getPose or other Pose suppliers to generate the curve based on the pose at followPath runtime instead of initialization
- Few Renames
- xMovement and yMovement -> xVelocity and yVelocity
- zeroPowerAccelerationMultiplier -> brakingStrength
v1.0.9
Library: https://github.com/Pedro-Pathing/PedroPathing/releases/tag/v1.0.9
Quickstart: https://github.com/Pedro-Pathing/Quickstart/releases/tag/v1.0.9
- Handle the Constants setup within the Follower
- Update Normalize Angle to not handle with a while loop
- Gobilda driver lynx nack exception handling
- Switch to pose usage in the driver from Pose2d (to also fix the normalization of heading)
- Changed pinpoint NAN wrapping to be more accurate
- Add isTurning() to Follower and isBusy is activated by turn and then is set to false once error is less than a threshold
- You can change the error threshold by adding this to your FConstants:
FollowerConstants.turnHeadingErrorThreshold = 0.05; // default is 0.01
- You can change the error threshold by adding this to your FConstants:
- Added 6 methods that allows to update coefficients for every PIDF
- Made localizer constants have
@Configwhile the localizers themselves do not - Add
getHeadingError() - Change package of
SparkFunOTOSCorrected.kt
You will also have to remove the Constants.setConstants(...); in the classes that use the Follower and add the two config classes to the constructor of the Follower.
For example:
Constants.setConstants(FConstants.class, LConstants.class);
follower = new Follower(hardwareMap);Should be turned into:
follower = new Follower(hardwareMap, FConstants.class, LConstants.class);Users will have to update, in their build.dependencies.gradle , the Pedro import in dependencies{} to 1.0.9, respectively:
implementation 'com.pedropathing:pedro:1.0.9'v1.0.8
Library: https://github.com/Pedro-Pathing/PedroPathing/releases/tag/v1.0.8
Quickstart: https://github.com/Pedro-Pathing/Quickstart/releases/tag/v1.0.8
This update does not require users to do anything other than changing com.pedropathing:pedro:1.0.7 in build.dependencies.gradle to com.pedropathing:pedro:1.0.8, unless you are going to switch to use voltage compensation, in which you will have to retune (check link for volt. comp. for more)
- Add voltage compensation (Adds 4 new variables to
FollowerConstants- refer to https://discord.com/channels/1262595185699717140/1330330083713355786/1336148733007761438 for descriptions and default values) - Change closest point to use Newton's method
- Fix accelerating while going backward
- Add
turnandturnTomethods to the follower (degrees and radians options) - Update
Pose.javato define the coordinate system and easily switch the coordinate system - Can change centripetalscaling for the follower on the fly
- Add isNAN() to the Follower and to the all the localizers, instead of isPinpointCooked()
- Add Built in functionality to input Poses into Bezier Curves, Bezier Points, and Bezier Lines
- Reset callbacks when calling followPath (allows users to run the same pathchain multiple times and retain their callbacks each time)
New Methods:
Follower.javaisLocalizationNAN()setCentripetalScaling(double c)turnTo(double radians)turnToDegrees(double degrees)turn(double radians, boolean isLeft)turnDegrees(double degrees, boolean isLeft)
Localizer.javaisNAN()
BezierPoint.javaBezierPoint(Pose pose)
BezierLine.javaBezierLine(Pose startPose, Pose endPose)
BezierCurve.javaBezierCurve(Pose... controlPoses)
PathChain.javaresetCallbacks()
Pose.javasetCoordinateSystem(boolean pedroCoordinates)getAsPedroCoordinates()getAsFTCStandardCoordinates()
v1.0.7
Library: https://github.com/Pedro-Pathing/PedroPathing/releases/tag/v1.0.7
Quickstart: https://github.com/Pedro-Pathing/Quickstart/releases/tag/v1.0.7
- patch deaccel + overshoot issues
- pinpoint localizer pose wrapping (protects it from momentary NAN and it recalibrates as well)
- add more javadoc to constants and follower
- add
isPinpointCooked()to Follower - add
isRobotStuck()to Follower
Users will have to update, in their build.dependencies.gradle , the FTC imports and the Pedro imports in dependencies{} to 10.2.0 and 1.0.7, respectively:
implementation 'org.firstinspires.ftc:Inspection:10.2.0'
implementation 'org.firstinspires.ftc:Blocks:10.2.0'
implementation 'org.firstinspires.ftc:RobotCore:10.2.0'
implementation 'org.firstinspires.ftc:RobotServer:10.2.0'
implementation 'org.firstinspires.ftc:OnBotJava:10.2.0'
implementation 'org.firstinspires.ftc:Hardware:10.2.0'
implementation 'org.firstinspires.ftc:FtcCommon:10.2.0'
implementation 'org.firstinspires.ftc:Vision:10.2.0'
implementation 'com.pedropathing:pedro:1.0.7'Users will also have to update their AndroidManifest within the FtcRobotController package (Photo is attached for where to find it). You can copy and paste from here.
v1.0.6
v1.0.6
Library: https://github.com/Pedro-Pathing/PedroPathing/releases/tag/v1.0.6
Quickstart: https://github.com/Pedro-Pathing/Quickstart/releases/tag/v1.0.6
- Updates Pinpoint localizer to fix drift and modify pose translations
- Fixes a bug that does not allow maxPower to work
This fix does not requires users to do anything other than changing com.pedropathing:pedro:1.0.5 in build.dependencies.gradle to com.pedropathing:pedro:1.0.6