Package edu.wpi.first.wpilibj.trajectory
Class TrapezoidProfile
- java.lang.Object
-
- edu.wpi.first.wpilibj.trajectory.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.
Initialization:
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()`.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classTrapezoidProfile.Constraintsstatic classTrapezoidProfile.State
-
Constructor Summary
Constructors Constructor Description TrapezoidProfile(TrapezoidProfile.Constraints constraints, TrapezoidProfile.State goal)Construct a TrapezoidProfile.TrapezoidProfile(TrapezoidProfile.Constraints constraints, TrapezoidProfile.State goal, TrapezoidProfile.State initial)Construct a TrapezoidProfile.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description TrapezoidProfile.Statecalculate(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.booleanisFinished(double t)Returns true if the profile has reached the goal.doubletimeLeftUntil(double target)Returns the time left until a target distance in the profile is reached.doubletotalTime()Returns the total time the profile takes to reach the goal.
-
-
-
Constructor Detail
-
TrapezoidProfile
public TrapezoidProfile(TrapezoidProfile.Constraints constraints, TrapezoidProfile.State goal, TrapezoidProfile.State initial)
Construct a TrapezoidProfile.- Parameters:
constraints- The constraints on the profile, like maximum velocity.goal- The desired state when the profile is complete.initial- The initial state (usually the current state).
-
TrapezoidProfile
public TrapezoidProfile(TrapezoidProfile.Constraints constraints, TrapezoidProfile.State goal)
Construct a TrapezoidProfile.- Parameters:
constraints- The constraints on the profile, like maximum velocity.goal- The desired state when the profile is complete.
-
-
Method Detail
-
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.- Parameters:
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.- Parameters:
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.
- Parameters:
t- The time since the beginning of the profile.
-
-