Class TrapezoidProfile


public class TrapezoidProfile
extends Object
A trapezoid-shaped velocity profile.

While this class can be used for a profiled movement from start to finish, the intended usage is to filter a reference's dynamics based on trapezoidal velocity constraints. To compute the reference obeying this constraint, do the following.


 TrapezoidProfile.Constraints constraints =
   new TrapezoidProfile.Constraints(kMaxV, kMaxA);
 TrapezoidProfile.State previousProfiledReference =
   new TrapezoidProfile.State(initialReference, 0.0);

Run on update:

 TrapezoidProfile profile =
   new TrapezoidProfile(constraints, unprofiledReference, previousProfiledReference);
 previousProfiledReference = profile.calculate(timeSincePreviousUpdate);

where `unprofiledReference` is free to change between calls. Note that when the unprofiled reference is within the constraints, `calculate()` returns the unprofiled reference unchanged.

Otherwise, a timer can be started to provide monotonic values for `calculate()` and to determine when the profile has completed via `isFinished()`.

  • Constructor Details

  • Method Details

    • calculate

      public TrapezoidProfile.State calculate​(double t)
      Calculate the correct position and velocity for the profile at a time t where the beginning of the profile was at time t = 0.
      t - The time since the beginning of the profile.
    • timeLeftUntil

      public double timeLeftUntil​(double target)
      Returns the time left until a target distance in the profile is reached.
      target - The target distance.
    • totalTime

      public double totalTime()
      Returns the total time the profile takes to reach the goal.
    • isFinished

      public boolean isFinished​(double t)
      Returns true if the profile has reached the goal.

      The profile has reached the goal if the time since the profile started has exceeded the profile's total time.

      t - The time since the beginning of the profile.