Package frc.robot.subsystems.swerve
Class Swerve
java.lang.Object
com.ctre.phoenix6.swerve.SwerveDrivetrain<TalonFX,TalonFX,CANcoder>
frc.robot.subsystems.swerve.Swerve
- All Implemented Interfaces:
Subsystem,AutoCloseable
Class that extends the Phoenix SwerveDrivetrain class and implements subsystem so it can be used
in command-based projects easily.
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class com.ctre.phoenix6.swerve.SwerveDrivetrain
SwerveDrivetrain.DeviceConstructor<DeviceT extends Object>, SwerveDrivetrain.OdometryThread, SwerveDrivetrain.SwerveControlParameters, SwerveDrivetrain.SwerveDriveState -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final doublestatic final doubleFields inherited from class com.ctre.phoenix6.swerve.SwerveDrivetrain
kNumConfigAttempts, m_drivetrainId, m_jni, m_telemetryJNI -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected CommandbooleanfrontClosestToAngle(double angleDegrees) protected doubleprotected Stringprotected doubleprotected doublegetPoseAtTimestamp(double timestampSeconds) Get the robot's pose at a specific timestamp using interpolationThe function `getRobotPose` returns the robot's pose after checking and updating it.doublegetRotationDifference(double angle1, double angle2) doubleprotected doubleprotected doubledoubleinXzone(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 AlliancebooleanbooleanisAtDesiredRotation(double toleranceRadians) booleanisGoingTooFast(double thresholdSpeed) booleanReturnstruewhen the robot is inside the opposing alliance's zone (pose X is flipped for red so the same rectangle works for both alliances).booleanReturnstruewhen the robot is inside the neutral zone.protected voidprotected voidoverSpeedTrigger(double thresholdSpeed) voidperiodic()This method is called periodically and is used to update the pilot's perspective.protected Commandreorient(double angleDegrees) voidvoidsetRotationVelocityCoefficient(double rotationVelocityCoefficient) voidsetTeleopVelocityCoefficient(double teleopVelocityCoefficient) voidsetWantedState(Swerve.WantedState state) 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, optimizeBusUtilization, optimizeBusUtilization, optimizeBusUtilization, 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.wpilibj2.command.Subsystem
defer, getCurrentCommand, getDefaultCommand, getName, idle, register, removeDefaultCommand, run, runEnd, runOnce, setDefaultCommand, simulationPeriodic, startEnd, startRun
-
Field Details
-
TRANSLATION_ERROR_MARGIN_METERS
public static final double TRANSLATION_ERROR_MARGIN_METERS -
DRIVE_TO_POINT_STATIC_FRICTION_CONSTANT
public static final double DRIVE_TO_POINT_STATIC_FRICTION_CONSTANT- See Also:
-
-
Constructor Details
-
Swerve
Constructs a new Swerve drive subsystem.- Parameters:
config- The configuration object containing drivetrain constants and module configurations.
-
-
Method Details
-
log
-
logBatteryUsage
protected void logBatteryUsage() -
getDriveMotorStatorCurrents
protected double getDriveMotorStatorCurrents() -
getSteerMotorStatorCurrents
protected double getSteerMotorStatorCurrents() -
getDriveMotorSupplyCurrents
protected double getDriveMotorSupplyCurrents() -
getSteerMotorSupplyCurrents
protected double getSteerMotorSupplyCurrents() -
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. -
getCurrentCommandName
-
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
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
- Overrides:
resetPosein classSwerveDrivetrain<TalonFX,TalonFX, CANcoder>
-
inXzone
-
inYzone
-
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
-
isInNeutralZone
public boolean isInNeutralZone()Returnstruewhen the robot is inside the neutral zone. Allocation-free. -
isInEnemyAllianceZone
public boolean isInEnemyAllianceZone()Returnstruewhen the robot is inside the opposing alliance's zone (pose X is flipped for red so the same rectangle works for both alliances). -
inNeutralZone
-
inEnemyAllianceZone
-
inFieldRight
-
inFieldLeft
-
isGoingTooFast
public boolean isGoingTooFast(double thresholdSpeed) -
overSpeedTrigger
-
getCurrentRobotChassisSpeeds
-
reorient
-
reorientForward
-
reorientLeft
-
reorientBack
-
reorientRight
-
getClosestCardinal
protected double getClosestCardinal() -
cardinalReorient
-
frontClosestToAngle
public boolean frontClosestToAngle(double angleDegrees) -
getRotationDifference
public double getRotationDifference(double angle1, double angle2) -
setWantedState
-
isAtDesiredRotation
public boolean isAtDesiredRotation() -
isAtDesiredRotation
public boolean isAtDesiredRotation(double toleranceRadians) -
getTeleopVelocityCoefficient
public double getTeleopVelocityCoefficient() -
setTeleopVelocityCoefficient
public void setTeleopVelocityCoefficient(double teleopVelocityCoefficient) -
getRotationVelocityCoefficient
public double getRotationVelocityCoefficient() -
setRotationVelocityCoefficient
public void setRotationVelocityCoefficient(double rotationVelocityCoefficient) -
getConfig
-
getMapleSimSwerveDrivetrain
-
getRobotBumpSim
-
getSimRobotPose3d
-