TrapezoidProfile
- class wpimath.trajectory.TrapezoidProfile(constraints: wpimath._controls._controls.trajectory.TrapezoidProfile.Constraints, goal: wpimath._controls._controls.trajectory.TrapezoidProfile.State, initial: wpimath._controls._controls.trajectory.TrapezoidProfile.State = <wpimath._controls._controls.trajectory.TrapezoidProfile.State object at 0x7fecbebe90b0>)
Bases:
pybind11_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:
constraints = TrapezoidProfile.Constraints(kMaxV, kMaxA) previousProfiledReference = initialReference
Run on update:
profile = 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 viaisFinished()
.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).
- class Constraints(maxVelocity: units_per_second = 0, maxAcceleration: units_per_second_squared = 0)
Bases:
pybind11_object
- class State(position: float = 0, velocity: units_per_second = 0)
Bases:
pybind11_object
- property position
- property velocity
- calculate(t: seconds) wpimath._controls._controls.trajectory.TrapezoidProfile.State
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.
- isFinished(t: seconds) bool
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.
- timeLeftUntil(target: float) seconds
Returns the time left until a target distance in the profile is reached.
- Parameters:
target – The target distance.
- totalTime() seconds
Returns the total time the profile takes to reach the goal.