core / com.acmerobotics.roadrunner.followers / HolonomicPIDVAFollower

HolonomicPIDVAFollower

class HolonomicPIDVAFollower : TrajectoryFollower

Traditional PID controller with feedforward velocity and acceleration components to follow a trajectory. More specifically, the feedback is applied to the components of the robot's pose (x position, y position, and heading) to determine the velocity correction. The feedforward components are instead applied at the wheel level.

Parameters

axialCoeffs - PID coefficients for the robot axial controller (robot X)

lateralCoeffs - PID coefficients for the robot lateral controller (robot Y)

headingCoeffs - PID coefficients for the robot heading controller

admissibleError - admissible/satisfactory pose error at the end of each move

timeout - max time to wait for the error to be admissible

clock - clock

Constructors

<init>

HolonomicPIDVAFollower(axialCoeffs: PIDCoefficients, lateralCoeffs: PIDCoefficients, headingCoeffs: PIDCoefficients, admissibleError: Pose2d = Pose2d(), timeout: Double = 0.0, clock: NanoClock = NanoClock.system())

Traditional PID controller with feedforward velocity and acceleration components to follow a trajectory. More specifically, the feedback is applied to the components of the robot's pose (x position, y position, and heading) to determine the velocity correction. The feedforward components are instead applied at the wheel level.

Properties

lastError

var lastError: Pose2d

Robot pose error computed in the last update call.

Inherited Properties

clock

val clock: NanoClock

clock

trajectory

lateinit var trajectory: Trajectory

Trajectory being followed if isFollowing is true.

Functions

internalUpdate

fun internalUpdate(currentPose: Pose2d): DriveSignal

Inherited Functions

elapsedTime

fun elapsedTime(): Double

Returns the elapsed time since the last followTrajectory call.

followTrajectory

open fun followTrajectory(trajectory: Trajectory): Unit

Follow the given trajectory.

isFollowing

fun isFollowing(): Boolean

Returns true if the current trajectory has finished executing.

update

fun update(currentPose: Pose2d): DriveSignal

Run a single iteration of the trajectory follower.