Package swervelib

Class SwerveController

java.lang.Object
swervelib.SwerveController

public class SwerveController extends Object
Controller class used to convert raw inputs into robot speeds.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    SwerveControllerConfiguration object storing data to generate the PIDController for controlling the robot heading, and deadband for heading joystick.
    double
    Last angle to robot was set to.
    private final edu.wpi.first.math.controller.PIDController
    PID Controller for the robot heading.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Construct the SwerveController object which is used for determining the speeds of the robot based on controller input.
  • Method Summary

    Modifier and Type
    Method
    Description
    edu.wpi.first.math.kinematics.ChassisSpeeds
    getTargetSpeeds(double xInput, double yInput, double angle, double currentHeadingAngleRadians)
    Get the chassis speeds based on controller input of 1 joystick and a angle.
    edu.wpi.first.math.kinematics.ChassisSpeeds
    getTargetSpeeds(double xInput, double yInput, double headingX, double headingY, double currentHeadingAngleRadians)
    Get the chassis speeds based on controller input of 2 joysticks.
    static edu.wpi.first.math.geometry.Translation2d
    getTranslation2d(edu.wpi.first.math.kinematics.ChassisSpeeds speeds)
    Helper function to get the Translation2d of the chassis speeds given the ChassisSpeeds.
    boolean
    withinHypotDeadband(double x, double y)
    Calculate the hypot deadband and check if the joystick is within it.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • config

      public final SwerveControllerConfiguration config
      SwerveControllerConfiguration object storing data to generate the PIDController for controlling the robot heading, and deadband for heading joystick.
    • thetaController

      private final edu.wpi.first.math.controller.PIDController thetaController
      PID Controller for the robot heading.
    • lastAngle

      public double lastAngle
      Last angle to robot was set to.
  • Constructor Details

    • SwerveController

      public SwerveController(SwerveControllerConfiguration cfg)
      Construct the SwerveController object which is used for determining the speeds of the robot based on controller input.
      Parameters:
      cfg - SwerveControllerConfiguration containing the PIDF variables for the heading PIDF.
  • Method Details

    • getTranslation2d

      public static edu.wpi.first.math.geometry.Translation2d getTranslation2d(edu.wpi.first.math.kinematics.ChassisSpeeds speeds)
      Helper function to get the Translation2d of the chassis speeds given the ChassisSpeeds.
      Parameters:
      speeds - Chassis speeds.
      Returns:
      Translation2d of the speed the robot is going in.
    • withinHypotDeadband

      public boolean withinHypotDeadband(double x, double y)
      Calculate the hypot deadband and check if the joystick is within it.
      Parameters:
      x - The x value for the joystick in which the deadband should be applied.
      y - The y value for the joystick in which the deadband should be applied.
      Returns:
      Whether the values are within the deadband from SwerveControllerConfiguration.angleJoyStickRadiusDeadband.
    • getTargetSpeeds

      public edu.wpi.first.math.kinematics.ChassisSpeeds getTargetSpeeds(double xInput, double yInput, double angle, double currentHeadingAngleRadians)
      Get the chassis speeds based on controller input of 1 joystick and a angle.
      Parameters:
      xInput - X joystick input for the robot to move in the X direction.
      yInput - Y joystick input for the robot to move in the Y direction.
      angle - The desired angle of the robot in radians.
      currentHeadingAngleRadians - The current robot heading in radians.
      Returns:
      ChassisSpeeds which can be sent to th Swerve Drive.
    • getTargetSpeeds

      public edu.wpi.first.math.kinematics.ChassisSpeeds getTargetSpeeds(double xInput, double yInput, double headingX, double headingY, double currentHeadingAngleRadians)
      Get the chassis speeds based on controller input of 2 joysticks. One for speeds in which direction. The other for the angle of the robot.
      Parameters:
      xInput - X joystick input for the robot to move in the X direction.
      yInput - Y joystick input for the robot to move in the Y direction.
      headingX - X joystick which controls the angle of the robot.
      headingY - Y joystick which controls the angle of the robot.
      currentHeadingAngleRadians - The current robot heading in radians.
      Returns:
      ChassisSpeeds which can be sent to th Swerve Drive.