Package frc.robot.swerve
Class Swerve
java.lang.Object
com.ctre.phoenix6.swerve.SwerveDrivetrain<com.ctre.phoenix6.hardware.TalonFX,com.ctre.phoenix6.hardware.TalonFX,com.ctre.phoenix6.hardware.CANcoder>
frc.robot.swerve.Swerve
- All Implemented Interfaces:
edu.wpi.first.networktables.NTSendable,edu.wpi.first.util.sendable.Sendable,edu.wpi.first.wpilibj2.command.Subsystem,SpectrumSubsystem,AutoCloseable
public class Swerve
extends com.ctre.phoenix6.swerve.SwerveDrivetrain<com.ctre.phoenix6.hardware.TalonFX,com.ctre.phoenix6.hardware.TalonFX,com.ctre.phoenix6.hardware.CANcoder>
implements SpectrumSubsystem, edu.wpi.first.networktables.NTSendable
Class that extends the Phoenix SwerveDrivetrain class and implements subsystem so it can be used
in command-based projects easily.
-
Nested Class Summary
Nested classes/interfaces inherited from class com.ctre.phoenix6.swerve.SwerveDrivetrain
com.ctre.phoenix6.swerve.SwerveDrivetrain.DeviceConstructor<DeviceT extends Object>, com.ctre.phoenix6.swerve.SwerveDrivetrain.OdometryThread, com.ctre.phoenix6.swerve.SwerveDrivetrain.SwerveControlParameters, com.ctre.phoenix6.swerve.SwerveDrivetrain.SwerveDriveState -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected edu.wpi.first.math.kinematics.SwerveModuleState[]Fields inherited from class com.ctre.phoenix6.swerve.SwerveDrivetrain
kNumConfigAttempts, m_drivetrainId, m_jni, m_telemetryJNI -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected edu.wpi.first.wpilibj2.command.CommandbooleanfrontClosestToAngle(double angleDegrees) protected doubleprotected doubleprotected doubleedu.wpi.first.math.kinematics.ChassisSpeedsedu.wpi.first.math.geometry.Pose2dgetPoseAtTimestamp(double timestampSeconds) Get the robot's pose at a specific timestamp using interpolationedu.wpi.first.math.geometry.Pose2dThe function `getRobotPose` returns the robot's pose after checking and updating it.doublegetRotationDifference(double angle1, double angle2) edu.wpi.first.math.kinematics.SwerveModuleState[]voidinitSendable(edu.wpi.first.networktables.NTSendableBuilder builder) The `initSendable` function sets up properties for a SmartDashboard type "SwerveDrive" with position and velocity double values.inXzone(double minXmeter, double maxXmeter) inXzoneAlliance(double minXmeter, double maxXmeter) This method is used to check if the robot is in the X zone of the field flips the values if Red AllianceinYzone(double minYmeter, double maxYmeter) inYzoneAlliance(double minYmeter, double maxYmeter) This method is used to check if the robot is in the Y zone of the field flips the values if Red AlliancebooleanisGoingTooFast(double thresholdSpeed) protected voidlog(com.ctre.phoenix6.swerve.SwerveDrivetrain.SwerveDriveState state) overSpeedTrigger(double thresholdSpeed) voidperiodic()This method is called periodically and is used to update the pilot's perspective.protected voidreorient(double angleDegrees) protected edu.wpi.first.wpilibj2.command.CommandreorientPilotAngle(double angleDegrees) voidresetPose(edu.wpi.first.math.geometry.Pose2d pose) voidSet up the default command for this subsystem.voidSet up the states and triggers for this subsystem.Methods inherited from class com.ctre.phoenix6.swerve.SwerveDrivetrain
addVisionMeasurement, addVisionMeasurement, close, configNeutralMode, configNeutralMode, getKinematics, getModule, getModuleLocations, getModules, getOdometryFrequency, getOdometryFrequencyMeasure, getOdometryThread, getOperatorForwardDirection, getPigeon2, getRotation3d, getState, getStateCopy, isOdometryValid, isOnCANFD, registerTelemetry, resetRotation, resetTranslation, samplePoseAt, seedFieldCentric, seedFieldCentric, setControl, setOperatorPerspectiveForward, setStateStdDevs, setVisionMeasurementStdDevs, tareEverything, updateSimStateMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface edu.wpi.first.networktables.NTSendable
initSendableMethods inherited from interface edu.wpi.first.wpilibj2.command.Subsystem
defer, getCurrentCommand, getDefaultCommand, getName, idle, register, removeDefaultCommand, run, runEnd, runOnce, setDefaultCommand, simulationPeriodic, startEnd, startRun
-
Field Details
-
setpoints
protected edu.wpi.first.math.kinematics.SwerveModuleState[] setpoints
-
-
Constructor Details
-
Swerve
Constructs a new Swerve drive subsystem.- Parameters:
config- The configuration object containing drivetrain constants and module configurations.
-
-
Method Details
-
log
protected void log(com.ctre.phoenix6.swerve.SwerveDrivetrain.SwerveDriveState state) -
periodic
public void periodic()This method is called periodically and is used to update the pilot's perspective. It ensures that the swerve drive system is aligned correctly based on the pilot's view.- Specified by:
periodicin interfaceedu.wpi.first.wpilibj2.command.Subsystem
-
setupStates
public void setupStates()Description copied from interface:SpectrumSubsystemSet up the states and triggers for this subsystem. This is typically used to bind commands to SpectrumState triggers.- Specified by:
setupStatesin interfaceSpectrumSubsystem
-
setupDefaultCommand
public void setupDefaultCommand()Description copied from interface:SpectrumSubsystemSet up the default command for this subsystem. This command will run when no other command is using this subsystem.- Specified by:
setupDefaultCommandin interfaceSpectrumSubsystem
-
initSendable
public void initSendable(edu.wpi.first.networktables.NTSendableBuilder builder) The `initSendable` function sets up properties for a SmartDashboard type "SwerveDrive" with position and velocity double values.- Specified by:
initSendablein interfaceedu.wpi.first.networktables.NTSendable- Parameters:
builder- The `builder` parameter is an instance of the `NTSendableBuilder` class
-
getRobotPose
public edu.wpi.first.math.geometry.Pose2d getRobotPose()The function `getRobotPose` returns the robot's pose after checking and updating it.- Returns:
- The `getRobotPose` method is returning the robot's current pose after calling the `seedCheckedPose` method with the current pose as an argument.
-
getPoseAtTimestamp
public edu.wpi.first.math.geometry.Pose2d getPoseAtTimestamp(double timestampSeconds) Get the robot's pose at a specific timestamp using interpolation- Parameters:
timestampSeconds- The timestamp to sample at- Returns:
- The interpolated pose, or current pose if timestamp not in buffer
-
resetPose
public void resetPose(edu.wpi.first.math.geometry.Pose2d pose) - Overrides:
resetPosein classcom.ctre.phoenix6.swerve.SwerveDrivetrain<com.ctre.phoenix6.hardware.TalonFX,com.ctre.phoenix6.hardware.TalonFX, com.ctre.phoenix6.hardware.CANcoder>
-
inXzone
-
inYzone
-
inNeutralZone
-
inEnemyAllianceZone
-
inFieldRight
-
inFieldLeft
-
isGoingTooFast
public boolean isGoingTooFast(double thresholdSpeed) -
overSpeedTrigger
-
inXzoneAlliance
This method is used to check if the robot is in the X zone of the field flips the values if Red Alliance- Parameters:
minXmeter- the minimum X coordinate in metersmaxXmeter- the maximum X coordinate in meters- Returns:
- the Trigger
-
inYzoneAlliance
This method is used to check if the robot is in the Y zone of the field flips the values if Red Alliance- Parameters:
minYmeter- the minimum Y coordinate in metersmaxYmeter- the maximum Y coordinate in meters- Returns:
- the Trigger
-
getCurrentRobotChassisSpeeds
public edu.wpi.first.math.kinematics.ChassisSpeeds getCurrentRobotChassisSpeeds() -
reorient
protected void reorient(double angleDegrees) -
reorientPilotAngle
protected edu.wpi.first.wpilibj2.command.Command reorientPilotAngle(double angleDegrees) -
getClosestCardinal
protected double getClosestCardinal() -
getClosest45
protected double getClosest45() -
getClosestFieldAngle
protected double getClosestFieldAngle() -
cardinalReorient
protected edu.wpi.first.wpilibj2.command.Command cardinalReorient() -
frontClosestToAngle
public boolean frontClosestToAngle(double angleDegrees) -
getRotationDifference
public double getRotationDifference(double angle1, double angle2) -
getConfig
-
getSetpoints
public edu.wpi.first.math.kinematics.SwerveModuleState[] getSetpoints() -
getMapleSimSwerveDrivetrain
-