Package swervelib
Class SwerveController
java.lang.Object
swervelib.SwerveController
Controller class used to convert raw inputs into robot speeds.
-
Field Summary
FieldsModifier and TypeFieldDescriptionSwerveControllerConfigurationobject storing data to generate thePIDControllerfor controlling the robot heading, and deadband for heading joystick.doubleLast angle to robot was set to.private final edu.wpi.first.math.controller.PIDControllerPID Controller for the robot heading. -
Constructor Summary
ConstructorsConstructorDescriptionConstruct the SwerveController object which is used for determining the speeds of the robot based on controller input. -
Method Summary
Modifier and TypeMethodDescriptionedu.wpi.first.math.kinematics.ChassisSpeedsgetTargetSpeeds(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.ChassisSpeedsgetTargetSpeeds(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.Translation2dgetTranslation2d(edu.wpi.first.math.kinematics.ChassisSpeeds speeds) Helper function to get theTranslation2dof the chassis speeds given theChassisSpeeds.booleanwithinHypotDeadband(double x, double y) Calculate the hypot deadband and check if the joystick is within it.
-
Field Details
-
config
SwerveControllerConfigurationobject storing data to generate thePIDControllerfor controlling the robot heading, and deadband for heading joystick. -
thetaController
private final edu.wpi.first.math.controller.PIDController thetaControllerPID Controller for the robot heading. -
lastAngle
public double lastAngleLast angle to robot was set to.
-
-
Constructor Details
-
SwerveController
Construct the SwerveController object which is used for determining the speeds of the robot based on controller input.- Parameters:
cfg-SwerveControllerConfigurationcontaining 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 theTranslation2dof the chassis speeds given theChassisSpeeds.- Parameters:
speeds- Chassis speeds.- Returns:
Translation2dof 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:
ChassisSpeedswhich 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:
ChassisSpeedswhich can be sent to th Swerve Drive.
-