abstract class TrajectoryFollower
Generic Trajectory follower for time-based pose reference tracking.
admissibleError
- admissible/satisfactory pose error at the end of each move
timeout
- max time to wait for the error to be admissible
TrajectoryFollower(admissibleError: Pose2d = Pose2d(), timeout: Double = 0.0, clock: NanoClock = NanoClock.system())
Generic Trajectory follower for time-based pose reference tracking. |
val clock: NanoClock
clock |
|
abstract var lastError: Pose2d
Robot pose error computed in the last update call. |
|
lateinit var trajectory: Trajectory
Trajectory being followed if isFollowing is true. |
fun elapsedTime(): Double
Returns the elapsed time since the last followTrajectory call. |
|
open fun followTrajectory(trajectory: Trajectory): Unit
Follow the given trajectory. |
|
abstract fun internalUpdate(currentPose: Pose2d): DriveSignal |
|
fun isFollowing(): Boolean
Returns true if the current trajectory has finished executing. |
|
fun update(currentPose: Pose2d): DriveSignal
Run a single iteration of the trajectory follower. |
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. |
|
class RamseteFollower : TrajectoryFollower
Time-varying, non-linear feedback controller for nonholonomic drives. See equation 5.12 of Ramsete01.pdf. |
|
class TankPIDVAFollower : TrajectoryFollower
Traditional PID controller with feedforward velocity and acceleration components to follow a trajectory. More specifically, one feedback loop controls the path displacement (that is, x in the robot reference frame), and another feedback loop to minimize cross track (lateral) error via heading correction (overall, very similar to HolonomicPIDVAFollower except adjusted for the nonholonomic constraint). Feedforward is applied at the wheel level. |