Skip to content

Commit 3f5bd10

Browse files
committed
add zero check to modules
1 parent 580deb6 commit 3f5bd10

File tree

7 files changed

+48
-5
lines changed

7 files changed

+48
-5
lines changed

src/main/java/frc/robot/Robot.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ public void disabledInit() {
5757
}
5858

5959
@Override
60-
public void disabledPeriodic() {}
60+
public void disabledPeriodic() {
61+
if (!m_robotContainer.hasSwerveZeroed()) m_robotContainer.zeroSwerve();
62+
}
6163

6264
@Override
6365
public void disabledExit() {}

src/main/java/frc/robot/RobotContainer.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,14 @@ private void configureTelemetry() {
194194
telemetryService.start();
195195
}
196196

197+
public boolean hasSwerveZeroed() {
198+
return driveSubsystem.hasZeroed();
199+
}
200+
201+
public void zeroSwerve() {
202+
driveSubsystem.zeroModules();
203+
}
204+
197205
private void configureDriverBindings() {
198206
driveSubsystem.setDefaultCommand(
199207
new DriveTeleopCommand(

src/main/java/frc/robot/subsystems/drive/DriveSubsystem.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,14 @@ public DriveSubsystem(SwerveIO io) {
8383
holonomicController.setEnabled(true);
8484
}
8585

86+
public boolean hasZeroed() {
87+
return inputs.didZero;
88+
}
89+
90+
public void zeroModules() {
91+
io.zeroModules();
92+
}
93+
8694
// Open-Loop Swerve Movements
8795
public void drive(double vXmps, double vYmps, double vOmegaRadps) {
8896
if (!ignoreSticks) {

src/main/java/frc/robot/subsystems/drive/Swerve.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ public class Swerve implements SwerveIO, Checkable {
5353
private SwerveDriveKinematics kinematics;
5454
private double fieldY = 0.0;
5555
private double fieldX = 0.0;
56+
private boolean didZero = false;
5657

5758
public Swerve() {
5859

@@ -94,6 +95,7 @@ public Swerve() {
9495
.build();
9596
swerveModules[i].loadAndSetAzimuthZeroReference();
9697
}
98+
didZero = true;
9799

98100
pigeon = new SF_PIGEON2(DriveConstants.kPigeonCanID, "rio");
99101
pigeon.applyConfig(DriveConstants.getPigeon2Configuration());
@@ -270,6 +272,13 @@ public void configDriveCurrents(CurrentLimitsConfigs config) {
270272
}
271273
}
272274

275+
@Override
276+
public void zeroModules() {
277+
for (int i = 0; i < 4; i++) {
278+
swerveModules[i].loadAndSetAzimuthZeroReference();
279+
}
280+
}
281+
273282
@Override
274283
public void updateInputs(SwerveIOInputs inputs) {
275284
swerveDrive.updateInputs(); // Call before swerveDrive.periodic()
@@ -299,6 +308,7 @@ public void updateInputs(SwerveIOInputs inputs) {
299308
inputs.fieldRelSpeed = getFieldRelSpeed(inputs.robotRelSpeed);
300309
inputs.fieldY = fieldY;
301310
inputs.fieldX = fieldX;
311+
inputs.didZero = didZero;
302312
}
303313

304314
@Override

src/main/java/frc/robot/subsystems/drive/SwerveFXS.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ public class SwerveFXS implements SwerveIO, Checkable {
5353
private SwerveDriveKinematics kinematics;
5454
private double fieldY = 0.0;
5555
private double fieldX = 0.0;
56+
private boolean didZero = false;
5657

5758
public SwerveFXS() {
5859

@@ -65,7 +66,7 @@ public SwerveFXS() {
6566
.encoderOpposed(false);
6667
swerveModules = new FXSwerveModule[4];
6768
Translation2d[] wheelLocations = DriveConstants.getWheelLocationMeters();
68-
69+
didZero = true;
6970
for (int i = 0; i < 4; i++) {
7071
var azimuthFXS = new TalonFXS(i, "*");
7172
configuratorFXS = azimuthFXS.getConfigurator();
@@ -89,7 +90,8 @@ public SwerveFXS() {
8990
.wheelLocationMeters(wheelLocations[i])
9091
.closedLoopUnits(ClosedLoopUnits.VOLTAGE)
9192
.build();
92-
swerveModules[i].loadAndSetAzimuthZeroReference();
93+
boolean zeroCheck = swerveModules[i].zeroAndCheck();
94+
didZero = zeroCheck && didZero;
9395
}
9496

9597
pigeon = new SF_PIGEON2(DriveConstants.kPigeonCanID, "*");
@@ -120,6 +122,15 @@ public String getName() {
120122
return "Swerve";
121123
}
122124

125+
@Override
126+
public void zeroModules() {
127+
didZero = true;
128+
for (int i = 0; i < 4; i++) {
129+
boolean zeroCheck = swerveModules[i].zeroAndCheck();
130+
didZero = zeroCheck && didZero;
131+
}
132+
}
133+
123134
private SwerveModule[] getSwerveModules() {
124135
return swerveDrive.getSwerveModules();
125136
}
@@ -284,6 +295,7 @@ public void updateInputs(SwerveIOInputs inputs) {
284295
inputs.fieldRelSpeed = getFieldRelSpeed(inputs.robotRelSpeed);
285296
inputs.fieldY = fieldY;
286297
inputs.fieldX = fieldX;
298+
inputs.didZero = didZero;
287299
}
288300

289301
@Override

src/main/java/frc/robot/subsystems/drive/SwerveIO.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public static class SwerveIOInputs {
4141
public double[] azimuthCurrent = {0, 0, 0, 0};
4242
public double avgDriveCurrent = 0;
4343
public double avgRearDriveVel = 0;
44+
public boolean didZero = false;
4445
}
4546

4647
private SwerveModule[] getSwerveModules() {
@@ -101,4 +102,6 @@ public default void configDriveCurrents(CurrentLimitsConfigs config) {}
101102
public default BooleanSupplier getAzimuth1FwdLimitSwitch() {
102103
return () -> false;
103104
}
105+
106+
public default void zeroModules() {}
104107
}

vendordeps/thirdcoast.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"fileName": "thirdcoast.json",
33
"name": "StrykeForce-ThirdCoast",
4-
"version": "25.0.6",
4+
"version": "25.0.7",
55
"uuid": "13c4f4b5-a1c0-4670-8f8d-b7b03628c0d3",
66
"frcYear": "2025",
77
"mavenUrls": [
@@ -12,7 +12,7 @@
1212
{
1313
"groupId": "org.strykeforce",
1414
"artifactId": "thirdcoast",
15-
"version": "25.0.6"
15+
"version": "25.0.7"
1616
}
1717
],
1818
"jniDependencies": [],

0 commit comments

Comments
 (0)