TrapezoidProfile

open class TrapezoidProfile

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()`. Source

Since

3.5.0

Constructors

Link copied to clipboard
Construct a TrapezoidProfile.
constructor(constraints: TrapezoidProfile.Constraints, goal: TrapezoidProfile.State)
Construct a TrapezoidProfile.

Types

Link copied to clipboard
open class Constraints
Profile constraints.
Link copied to clipboard
open class State
Profile state.

Functions

Link copied to clipboard
Calculate the correct position and velocity for the profile at a time t where the beginning of the profile was at time t = 0.
Link copied to clipboard
open fun isFinished(t: Double): Boolean
Returns true if the profile has reached the goal.
Link copied to clipboard
open fun timeLeftUntil(target: Double): Double
Returns the time left until a target distance in the profile is reached.
Link copied to clipboard
open fun totalTime(): Double
Returns the total time the profile takes to reach the goal.