Skip to content

Releases: Pedro-Pathing/PedroPathing

v2.0.5

01 Jan 05:13

Choose a tag to compare

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

06 Nov 01:34
a8501ed

Choose a tag to compare

Changes:

  • Fix: PinpointLocalizer angular velocity extraction
  • Fix: turnTo and turn
  • Fix: HeadingInterpolator facingPoint(...)
  • Fix: getDriveError velocity documentation

v2.0.3

17 Oct 03:09

Choose a tag to compare

Changes:

  • Fix: totalHeading in OTOSLocalizer and PinpointLocalizer would 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 offsetHeading parameter for setTeleOpDrive to 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) and startTeleOpDrive() with plans to deprecate startTeleopDrive(boolean useBrakeMode) and startTeleopDrive()
  • Add a follower.update() to startTeleOpDrive (all variants) to mitigate the Pose NPE if a follower.update is not called before.

v2.0.2

27 Sep 02:01

Choose a tag to compare

Changes:

  • Add InvertedFTCCoordinates for the Decode Field
  • Set up Maven Central Publishing

v2.0.1

09 Sep 03:23
5932991

Choose a tag to compare

Changes:

  • Fix Lazy Interpolation Gen
  • Add Filter Interface
  • Pose#Mirror for Decode Autos

v2.0.0

29 Aug 22:52
ebcefec

Choose a tag to compare

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

23 Mar 02:29

Choose a tag to compare

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
  • Added 6 methods that allows to update coefficients for every PIDF
  • Made localizer constants have @Config while 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

14 Feb 03:09

Choose a tag to compare

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 turn and turnTo methods to the follower (degrees and radians options)
  • Update Pose.java to 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.java
    • isLocalizationNAN()
    • setCentripetalScaling(double c)
    • turnTo(double radians)
    • turnToDegrees(double degrees)
    • turn(double radians, boolean isLeft)
    • turnDegrees(double degrees, boolean isLeft)
  • Localizer.java
    • isNAN()
  • BezierPoint.java
    • BezierPoint(Pose pose)
  • BezierLine.java
    • BezierLine(Pose startPose, Pose endPose)
  • BezierCurve.java
    • BezierCurve(Pose... controlPoses)
  • PathChain.java
    • resetCallbacks()
  • Pose.java
    • setCoordinateSystem(boolean pedroCoordinates)
    • getAsPedroCoordinates()
    • getAsFTCStandardCoordinates()

v1.0.7

26 Jan 04:06

Choose a tag to compare

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

14 Jan 00:52

Choose a tag to compare

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