From 1757356c06f3d339cbdb72e7b5ce77579209f5af Mon Sep 17 00:00:00 2001 From: BenGamer3 Date: Tue, 9 Jun 2026 20:52:40 -0400 Subject: [PATCH 1/7] added Ratio enum --- .../subsystems/drive/DriveConstants.java | 32 +++- vendordeps/AmLib-2026-Latest.json | 34 ++++ vendordeps/DogLog.json | 20 ++ vendordeps/LumynLabs-2026.2.0.json | 71 ++++++++ vendordeps/Phoenix5-5.36.0.json | 171 ++++++++++++++++++ vendordeps/StudicaLib.json | 78 ++++++++ vendordeps/ThriftyLib-2026.json | 20 ++ vendordeps/URCL.json | 65 +++++++ vendordeps/libgrapplefrc2026.json | 71 ++++++++ vendordeps/maple-sim-0.4.0-beta.json | 26 +++ vendordeps/playingwithfusion2026.json | 71 ++++++++ vendordeps/yagsl-2026.4.1.json | 46 +++++ vendordeps/yams.json | 21 +++ 13 files changed, 724 insertions(+), 2 deletions(-) create mode 100644 vendordeps/AmLib-2026-Latest.json create mode 100644 vendordeps/DogLog.json create mode 100644 vendordeps/LumynLabs-2026.2.0.json create mode 100644 vendordeps/Phoenix5-5.36.0.json create mode 100644 vendordeps/StudicaLib.json create mode 100644 vendordeps/ThriftyLib-2026.json create mode 100644 vendordeps/URCL.json create mode 100644 vendordeps/libgrapplefrc2026.json create mode 100644 vendordeps/maple-sim-0.4.0-beta.json create mode 100644 vendordeps/playingwithfusion2026.json create mode 100644 vendordeps/yagsl-2026.4.1.json create mode 100644 vendordeps/yams.json diff --git a/src/main/java/frc/robot/subsystems/drive/DriveConstants.java b/src/main/java/frc/robot/subsystems/drive/DriveConstants.java index 431fac7..1de4afa 100644 --- a/src/main/java/frc/robot/subsystems/drive/DriveConstants.java +++ b/src/main/java/frc/robot/subsystems/drive/DriveConstants.java @@ -64,8 +64,36 @@ public class DriveConstants { // Drive motor configuration public static final Distance WHEEL_RADIUS = Inches.of(2); public static final double WHEEL_RADIUS_METERS = WHEEL_RADIUS.in(Meters); - public static final double DRIVE_MOTOR_REDUCTION = - (50.0 / 14.0) * (17.0 / 27.0) * (45.0 / 15.0); // SDS MK4 L2 + + public static enum Ratio { + SDS_MK5i_R1(1,2,3), + SDS_MK5i_R2(1,2,3), + SDS_MK5i_R3(1,2,3); + +private double firstStageReduction; +private double secondStageReduction; +private double thirdStageReduction; + +private Ratio(double firstStageReduction, double secondStageReduction, double ThirdStageReduction) { + this.firstStageReduction = firstStageReduction; + this.secondStageReduction = secondStageReduction; + this.thirdStageReduction = ThirdStageReduction; +} + + public double getDriveMotorReduction() { + return firstStageReduction * secondStageReduction * thirdStageReduction; + } + + public double getCoupleRatio() { + return firstStageReduction; + } +} + + public static final Ratio selectedRatio = Ratio.SDS_MK5i_R1; +// public static final double DRIVE_MOTOR_REDUCTION = +// (50.0 / 14.0) * (17.0 / 27.0) * (45.0 / 15.0); // SDS MK4 L2 + public static final double DRIVE_MOTOR_REDUCTION = Ratio.SDS_MK5i_R1.getDriveMotorReduction(); + (50.0 / 14.0) * (17.0 / 27.0) * (45.0 / 15.0); // SDS MK5i R1 public static final DCMotor DRIVE_GEARBOX = DCMotor.getKrakenX60Foc(1); public static final LinearVelocity DRIVETRAIN_SPEED_LIMIT = MetersPerSecond.of( diff --git a/vendordeps/AmLib-2026-Latest.json b/vendordeps/AmLib-2026-Latest.json new file mode 100644 index 0000000..4cf0b4d --- /dev/null +++ b/vendordeps/AmLib-2026-Latest.json @@ -0,0 +1,34 @@ +{ + "fileName": "AmLib-2026-Latest.json", + "name": "AndyMark AM Library", + "version": "2026.1.0", + "frcYear": "2026", + "uuid": "f463c495-f27c-4102-9dde-af4e65a3eb2d", + "mavenUrls": [ + "https://andymarkproductsoftware.github.io/amlib-vendordep/repo/2026/" + ], + "jsonUrl": "https://andymarkproductsoftware.github.io/amlib-vendordep/vendordeps/2026/AmLib-2026.1.0.json", + "jniDependencies": [], + "javaDependencies": [ + { + "groupId": "com.andymark.frc", + "artifactId": "AmLib-java", + "version": "2026.1.0" + } + ], + "cppDependencies": [ + { + "groupId": "com.andymark.frc", + "artifactId": "AmLib-cpp", + "version": "2026.1.0", + "libName": "AmLib", + "headerClassifier": "headers", + "sharedLibrary": false, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxathena" + ] + } + ] +} diff --git a/vendordeps/DogLog.json b/vendordeps/DogLog.json new file mode 100644 index 0000000..2b0f7f5 --- /dev/null +++ b/vendordeps/DogLog.json @@ -0,0 +1,20 @@ +{ + "javaDependencies": [ + { + "groupId": "com.github.jonahsnider", + "artifactId": "doglog", + "version": "2026.5.0" + } + ], + "fileName": "DogLog.json", + "frcYear": "2026", + "jsonUrl": "https://doglog.dev/vendordep.json", + "name": "DogLog", + "jniDependencies": [], + "mavenUrls": [ + "https://jitpack.io" + ], + "cppDependencies": [], + "version": "2026.5.0", + "uuid": "65592ce1-2251-4a31-8e4b-2df20dacebe4" +} diff --git a/vendordeps/LumynLabs-2026.2.0.json b/vendordeps/LumynLabs-2026.2.0.json new file mode 100644 index 0000000..1272258 --- /dev/null +++ b/vendordeps/LumynLabs-2026.2.0.json @@ -0,0 +1,71 @@ +{ + "fileName": "LumynLabs-2026.2.0.json", + "name": "LumynLabs", + "version": "2026.2.0", + "frcYear": "2026", + "uuid": "eebd34fc-a6d3-48a2-a286-ac1cec59ab89", + "mavenUrls": [ + "https://packages.lumynlabs.com/repo" + ], + "jsonUrl": "https://packages.lumynlabs.com/LumynLabs.json", + "javaDependencies": [ + { + "groupId": "com.lumynlabs.frc", + "artifactId": "LumynLabs-java", + "version": "2026.2.0" + } + ], + "jniDependencies": [ + { + "groupId": "com.lumynlabs.frc", + "artifactId": "LumynLabs-driver", + "version": "2026.2.0", + "skipInvalidPlatforms": true, + "isJar": false, + "validPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + } + ], + "cppDependencies": [ + { + "groupId": "com.lumynlabs.frc", + "artifactId": "LumynLabs-cpp", + "version": "2026.2.0", + "libName": "Lumyn", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + }, + { + "groupId": "com.lumynlabs.frc", + "artifactId": "LumynLabs-driver", + "version": "2026.2.0", + "libName": "LumynDriver", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + } + ] +} diff --git a/vendordeps/Phoenix5-5.36.0.json b/vendordeps/Phoenix5-5.36.0.json new file mode 100644 index 0000000..c60dd4c --- /dev/null +++ b/vendordeps/Phoenix5-5.36.0.json @@ -0,0 +1,171 @@ +{ + "fileName": "Phoenix5-5.36.0.json", + "name": "CTRE-Phoenix (v5)", + "version": "5.36.0", + "frcYear": "2026", + "uuid": "ab676553-b602-441f-a38d-f1296eff6537", + "mavenUrls": [ + "https://maven.ctr-electronics.com/release/" + ], + "jsonUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix/Phoenix5-frc2026-latest.json", + "requires": [ + { + "uuid": "e995de00-2c64-4df5-8831-c1441420ff19", + "errorMessage": "Phoenix 5 requires low-level libraries from Phoenix 6. Please add the Phoenix 6 vendordep before adding Phoenix 5.", + "offlineFileName": "Phoenix6-frc2026-latest.json", + "onlineUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2026-latest.json" + } + ], + "conflictsWith": [ + { + "uuid": "e7900d8d-826f-4dca-a1ff-182f658e98af", + "errorMessage": "Users must use the Phoenix 5 replay vendordep when using the Phoenix 6 replay vendordep.", + "offlineFileName": "Phoenix6-replay-frc2026-latest.json" + }, + { + "uuid": "fbc886a4-2cec-40c0-9835-71086a8cc3df", + "errorMessage": "Users cannot have both the replay and regular Phoenix 5 vendordeps in their robot program.", + "offlineFileName": "Phoenix5-replay-frc2026-latest.json" + } + ], + "javaDependencies": [ + { + "groupId": "com.ctre.phoenix", + "artifactId": "api-java", + "version": "5.36.0" + }, + { + "groupId": "com.ctre.phoenix", + "artifactId": "wpiapi-java", + "version": "5.36.0" + } + ], + "jniDependencies": [ + { + "groupId": "com.ctre.phoenix", + "artifactId": "cci", + "version": "5.36.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "linuxathena" + ], + "simMode": "hwsim" + }, + { + "groupId": "com.ctre.phoenix.sim", + "artifactId": "cci-sim", + "version": "5.36.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + } + ], + "cppDependencies": [ + { + "groupId": "com.ctre.phoenix", + "artifactId": "wpiapi-cpp", + "version": "5.36.0", + "libName": "CTRE_Phoenix_WPI", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "linuxathena" + ], + "simMode": "hwsim" + }, + { + "groupId": "com.ctre.phoenix", + "artifactId": "api-cpp", + "version": "5.36.0", + "libName": "CTRE_Phoenix", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "linuxathena" + ], + "simMode": "hwsim" + }, + { + "groupId": "com.ctre.phoenix", + "artifactId": "cci", + "version": "5.36.0", + "libName": "CTRE_PhoenixCCI", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "linuxathena" + ], + "simMode": "hwsim" + }, + { + "groupId": "com.ctre.phoenix.sim", + "artifactId": "wpiapi-cpp-sim", + "version": "5.36.0", + "libName": "CTRE_Phoenix_WPISim", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix.sim", + "artifactId": "api-cpp-sim", + "version": "5.36.0", + "libName": "CTRE_PhoenixSim", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix.sim", + "artifactId": "cci-sim", + "version": "5.36.0", + "libName": "CTRE_PhoenixCCISim", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + } + ] +} diff --git a/vendordeps/StudicaLib.json b/vendordeps/StudicaLib.json new file mode 100644 index 0000000..67aa6d6 --- /dev/null +++ b/vendordeps/StudicaLib.json @@ -0,0 +1,78 @@ +{ + "fileName": "StudicaLib.json", + "name": "StudicaLib", + "version": "2026.0.2", + "frcYear": "2026", + "uuid": "963ef341-8abd-4981-a969-c8ae3f592e82", + "mavenUrls": [ + "https://dev.studica.com/maven/release/2026/" + ], + "jsonUrl": "https://dev.studica.com/maven/release/2026/json/StudicaLib-2026.0.2.json", + "conflictsWith": [ + { + "uuid": "cb311d09-36e9-4143-a032-55bb2b94443b", + "errorMessage": "StudicaLib (newer devices) is not compatible with Studica (NavX, NavX2)", + "offlineFileName": "Studica.json" + } + ], + "javaDependencies": [ + { + "groupId": "com.studica.frc", + "artifactId": "StudicaLib-java", + "version": "2026.0.2" + } + ], + "jniDependencies": [ + { + "groupId": "com.studica.frc", + "artifactId": "StudicaLib-driver", + "version": "2026.0.2", + "skipInvalidPlatforms": true, + "isJar": false, + "validPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + } + ], + "cppDependencies": [ + { + "groupId": "com.studica.frc", + "artifactId": "StudicaLib-cpp", + "version": "2026.0.2", + "libName": "StudicaLib", + "headerClassifier": "headers", + "sharedLibrary": false, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + }, + { + "groupId": "com.studica.frc", + "artifactId": "StudicaLib-driver", + "version": "2026.0.2", + "libName": "StudicaLibDriver", + "headerClassifier": "headers", + "sharedLibrary": false, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + } + ] +} diff --git a/vendordeps/ThriftyLib-2026.json b/vendordeps/ThriftyLib-2026.json new file mode 100644 index 0000000..69917f0 --- /dev/null +++ b/vendordeps/ThriftyLib-2026.json @@ -0,0 +1,20 @@ +{ + "fileName": "ThriftyLib-2026.json", + "name": "ThriftyLib", + "version": "2026.1.2", + "frcYear": "2026", + "uuid": "60b2694b-9e6e-4026-81ee-6f167946f4b0", + "mavenUrls": [ + "https://docs.home.thethriftybot.com" + ], + "jsonUrl": "https://docs.home.thethriftybot.com/ThriftyLib-2026.json", + "javaDependencies": [ + { + "groupId": "com.thethriftybot.frc", + "artifactId": "ThriftyLib-java", + "version": "2026.1.2" + } + ], + "jniDependencies": [], + "cppDependencies": [] +} diff --git a/vendordeps/URCL.json b/vendordeps/URCL.json new file mode 100644 index 0000000..f5b535e --- /dev/null +++ b/vendordeps/URCL.json @@ -0,0 +1,65 @@ +{ + "fileName": "URCL.json", + "name": "URCL", + "version": "2026.0.0", + "frcYear": "2026", + "uuid": "84246d17-a797-4d1e-bd9f-c59cd8d2477c", + "mavenUrls": [ + "https://frcmaven.wpi.edu/artifactory/littletonrobotics-mvn-release/" + ], + "jsonUrl": "https://raw.githubusercontent.com/Mechanical-Advantage/URCL/main/URCL.json", + "javaDependencies": [ + { + "groupId": "org.littletonrobotics.urcl", + "artifactId": "URCL-java", + "version": "2026.0.0" + } + ], + "jniDependencies": [ + { + "groupId": "org.littletonrobotics.urcl", + "artifactId": "URCL-driver", + "version": "2026.0.0", + "skipInvalidPlatforms": true, + "isJar": false, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxathena", + "osxuniversal" + ] + } + ], + "cppDependencies": [ + { + "groupId": "org.littletonrobotics.urcl", + "artifactId": "URCL-cpp", + "version": "2026.0.0", + "libName": "URCL", + "headerClassifier": "headers", + "sharedLibrary": false, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxathena", + "osxuniversal" + ] + }, + { + "groupId": "org.littletonrobotics.urcl", + "artifactId": "URCL-driver", + "version": "2026.0.0", + "libName": "URCLDriver", + "headerClassifier": "headers", + "sharedLibrary": false, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxathena", + "osxuniversal" + ] + } + ] +} diff --git a/vendordeps/libgrapplefrc2026.json b/vendordeps/libgrapplefrc2026.json new file mode 100644 index 0000000..d804c19 --- /dev/null +++ b/vendordeps/libgrapplefrc2026.json @@ -0,0 +1,71 @@ +{ + "fileName": "libgrapplefrc2026.json", + "name": "libgrapplefrc", + "version": "2026.0.0", + "frcYear": "2026", + "uuid": "8ef3423d-9532-4665-8339-206dae1d7168", + "mavenUrls": [ + "https://storage.googleapis.com/grapple-frc-maven" + ], + "jsonUrl": "https://storage.googleapis.com/grapple-frc-maven/libgrapplefrc2026.json", + "javaDependencies": [ + { + "groupId": "au.grapplerobotics", + "artifactId": "libgrapplefrcjava", + "version": "2026.0.0" + } + ], + "jniDependencies": [ + { + "groupId": "au.grapplerobotics", + "artifactId": "libgrapplefrcdriver", + "version": "2026.0.0", + "skipInvalidPlatforms": true, + "isJar": false, + "validPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + } + ], + "cppDependencies": [ + { + "groupId": "au.grapplerobotics", + "artifactId": "libgrapplefrccpp", + "version": "2026.0.0", + "libName": "grapplefrc", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + }, + { + "groupId": "au.grapplerobotics", + "artifactId": "libgrapplefrcdriver", + "version": "2026.0.0", + "libName": "grapplefrcdriver", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + } + ] +} diff --git a/vendordeps/maple-sim-0.4.0-beta.json b/vendordeps/maple-sim-0.4.0-beta.json new file mode 100644 index 0000000..2459b72 --- /dev/null +++ b/vendordeps/maple-sim-0.4.0-beta.json @@ -0,0 +1,26 @@ +{ + "fileName": "maple-sim-0.4.0-beta.json", + "name": "maplesim", + "version": "0.4.0-beta", + "frcYear": "2026", + "uuid": "c39481e8-4a63-4a4c-9df6-48d91e4da37b", + "mavenUrls": [ + "https://shenzhen-robotics-alliance.github.io/maple-sim/vendordep/repos/releases", + "https://repo1.maven.org/maven2" + ], + "jsonUrl": "https://shenzhen-robotics-alliance.github.io/maple-sim/vendordep/maple-sim.json", + "javaDependencies": [ + { + "groupId": "org.ironmaple", + "artifactId": "maplesim-java", + "version": "0.4.0-beta" + }, + { + "groupId": "org.dyn4j", + "artifactId": "dyn4j", + "version": "5.0.2" + } + ], + "jniDependencies": [], + "cppDependencies": [] +} diff --git a/vendordeps/playingwithfusion2026.json b/vendordeps/playingwithfusion2026.json new file mode 100644 index 0000000..cf52e8d --- /dev/null +++ b/vendordeps/playingwithfusion2026.json @@ -0,0 +1,71 @@ +{ + "fileName": "playingwithfusion2026.json", + "name": "PlayingWithFusion", + "version": "2026.5.08", + "uuid": "14b8ad04-24df-11ea-978f-2e728ce88125", + "frcYear": "2026", + "jsonUrl": "https://www.playingwithfusion.com/frc/playingwithfusion2026.json", + "mavenUrls": [ + "https://www.playingwithfusion.com/frc/maven/" + ], + "javaDependencies": [ + { + "groupId": "com.playingwithfusion.frc", + "artifactId": "PlayingWithFusion-java", + "version": "2026.5.08" + } + ], + "jniDependencies": [ + { + "groupId": "com.playingwithfusion.frc", + "artifactId": "PlayingWithFusion-driver", + "version": "2026.5.08", + "skipInvalidPlatforms": true, + "isJar": false, + "validPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + } + ], + "cppDependencies": [ + { + "groupId": "com.playingwithfusion.frc", + "artifactId": "PlayingWithFusion-cpp", + "version": "2026.5.08", + "libName": "PlayingWithFusion", + "headerClassifier": "headers", + "sharedLibrary": false, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + }, + { + "groupId": "com.playingwithfusion.frc", + "artifactId": "PlayingWithFusion-driver", + "version": "2026.5.08", + "libName": "PlayingWithFusionDriver", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + } + ] +} diff --git a/vendordeps/yagsl-2026.4.1.json b/vendordeps/yagsl-2026.4.1.json new file mode 100644 index 0000000..60ce44a --- /dev/null +++ b/vendordeps/yagsl-2026.4.1.json @@ -0,0 +1,46 @@ +{ + "fileName": "yagsl-2026.4.1.json", + "name": "YAGSL", + "version": "2026.4.1", + "frcYear": "2026", + "uuid": "1ccce5a4-acd2-4d18-bca3-4b8047188400", + "mavenUrls": [ + "https://yet-another-software-suite.github.io/YAGSL/releases/", + "https://repo1.maven.org/maven2" + ], + "jsonUrl": "https://yet-another-software-suite.github.io/YAGSL/yagsl.json", + "javaDependencies": [ + { + "groupId": "swervelib", + "artifactId": "YAGSL-java", + "version": "2026.4.1" + }, + { + "groupId": "org.dyn4j", + "artifactId": "dyn4j", + "version": "5.0.2" + } + ], + "requires": [ + { + "uuid": "151ecca8-670b-4026-8160-cdd2679ef2bd", + "errorMessage": "ReduxLib is required!", + "offlineFileName": "ReduxLib.json", + "onlineUrl": "https://frcsdk.reduxrobotics.com/ReduxLib_2026.json" + }, + { + "uuid": "3f48eb8c-50fe-43a6-9cb7-44c86353c4cb", + "errorMessage": "REVLib is required!", + "offlineFileName": "REVLib.json", + "onlineUrl": "https://software-metadata.revrobotics.com/REVLib-2026.json" + }, + { + "uuid": "60b2694b-9e6e-4026-81ee-6f167946f4b0", + "errorMessage": "ThriftyLib is required!", + "offlineFileName": "ThriftyLib.json", + "onlineUrl": "https://docs.home.thethriftybot.com/ThriftyLib-2026.json" + } + ], + "jniDependencies": [], + "cppDependencies": [] +} diff --git a/vendordeps/yams.json b/vendordeps/yams.json new file mode 100644 index 0000000..e9832e8 --- /dev/null +++ b/vendordeps/yams.json @@ -0,0 +1,21 @@ +{ + "fileName": "yams.json", + "name": "Yet Another Mechanism System", + "version": "2026.4.1", + "frcYear": "2026", + "uuid": "a1051e86-a979-4880-a28b-a0d5362d1d96", + "mavenUrls": [ + "https://yet-another-software-suite.github.io/YAMS/releases/" + ], + "jsonUrl": "https://yet-another-software-suite.github.io/YAMS/yams.json", + "javaDependencies": [ + { + "groupId": "yams", + "artifactId": "YAMS-java", + "version": "2026.4.1" + } + ], + "cppDependencies": [], + "jniDependencies": [], + "requires": [] +} From 2316d3ac6e0374d47ed7d8031a81c4be45037a56 Mon Sep 17 00:00:00 2001 From: nlaverdure Date: Wed, 10 Jun 2026 08:39:02 -0400 Subject: [PATCH 2/7] formatting --- .../subsystems/drive/DriveConstants.java | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/main/java/frc/robot/subsystems/drive/DriveConstants.java b/src/main/java/frc/robot/subsystems/drive/DriveConstants.java index 610a5f9..e1bfc45 100644 --- a/src/main/java/frc/robot/subsystems/drive/DriveConstants.java +++ b/src/main/java/frc/robot/subsystems/drive/DriveConstants.java @@ -66,32 +66,33 @@ public class DriveConstants { public static final double WHEEL_RADIUS_METERS = WHEEL_RADIUS.in(Meters); public static enum Ratio { - SDS_MK5i_R1(1,2,3), - SDS_MK5i_R2(1,2,3), - SDS_MK5i_R3(1,2,3); - -private double firstStageReduction; -private double secondStageReduction; -private double thirdStageReduction; - -private Ratio(double firstStageReduction, double secondStageReduction, double ThirdStageReduction) { - this.firstStageReduction = firstStageReduction; - this.secondStageReduction = secondStageReduction; - this.thirdStageReduction = ThirdStageReduction; -} + SDS_MK5i_R1(1, 2, 3), + SDS_MK5i_R2(1, 2, 3), + SDS_MK5i_R3(1, 2, 3); + + private double firstStageReduction; + private double secondStageReduction; + private double thirdStageReduction; + + private Ratio( + double firstStageReduction, double secondStageReduction, double ThirdStageReduction) { + this.firstStageReduction = firstStageReduction; + this.secondStageReduction = secondStageReduction; + this.thirdStageReduction = ThirdStageReduction; + } public double getDriveMotorReduction() { - return firstStageReduction * secondStageReduction * thirdStageReduction; + return firstStageReduction * secondStageReduction * thirdStageReduction; } public double getCoupleRatio() { - return firstStageReduction; + return firstStageReduction; } -} + } public static final Ratio selectedRatio = Ratio.SDS_MK5i_R1; public static final double DRIVE_MOTOR_REDUCTION = Ratio.SDS_MK5i_R1.getDriveMotorReduction(); - // (54.0 / 14.0) * (25.0 / 32.0) * (30.0 / 15.0); // SDS MK5 R2 + // (54.0 / 14.0) * (25.0 / 32.0) * (30.0 / 15.0); // SDS MK5 R2 public static final DCMotor DRIVE_GEARBOX = DCMotor.getKrakenX60Foc(1); public static final LinearVelocity DRIVETRAIN_SPEED_LIMIT = MetersPerSecond.of( From 76cd62c1628b582f4fc593b4d4504725c8dcabf4 Mon Sep 17 00:00:00 2001 From: nlaverdure Date: Wed, 10 Jun 2026 08:43:45 -0400 Subject: [PATCH 3/7] add gear ratios --- .../robot/subsystems/drive/DriveConstants.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/main/java/frc/robot/subsystems/drive/DriveConstants.java b/src/main/java/frc/robot/subsystems/drive/DriveConstants.java index e1bfc45..2fe1df7 100644 --- a/src/main/java/frc/robot/subsystems/drive/DriveConstants.java +++ b/src/main/java/frc/robot/subsystems/drive/DriveConstants.java @@ -66,9 +66,9 @@ public class DriveConstants { public static final double WHEEL_RADIUS_METERS = WHEEL_RADIUS.in(Meters); public static enum Ratio { - SDS_MK5i_R1(1, 2, 3), - SDS_MK5i_R2(1, 2, 3), - SDS_MK5i_R3(1, 2, 3); + SDS_MK5i_R1(54.0 / 12.0, 25.0 / 32.0, 30.0 / 15.0), + SDS_MK5i_R2(54.0 / 14.0, 25.0 / 32.0, 30.0 / 15.0), + SDS_MK5i_R3(54.0 / 16.0, 25.0 / 32.0, 30.0 / 15.0); private double firstStageReduction; private double secondStageReduction; @@ -85,14 +85,14 @@ public double getDriveMotorReduction() { return firstStageReduction * secondStageReduction * thirdStageReduction; } + // Every 1 rotation of the azimuth results in COUPLE_RATIO drive motor turns public double getCoupleRatio() { return firstStageReduction; } } - public static final Ratio selectedRatio = Ratio.SDS_MK5i_R1; - public static final double DRIVE_MOTOR_REDUCTION = Ratio.SDS_MK5i_R1.getDriveMotorReduction(); - // (54.0 / 14.0) * (25.0 / 32.0) * (30.0 / 15.0); // SDS MK5 R2 + public static final Ratio SELECTED_RATIO = Ratio.SDS_MK5i_R2; + public static final double DRIVE_MOTOR_REDUCTION = SELECTED_RATIO.getDriveMotorReduction(); public static final DCMotor DRIVE_GEARBOX = DCMotor.getKrakenX60Foc(1); public static final LinearVelocity DRIVETRAIN_SPEED_LIMIT = MetersPerSecond.of( @@ -125,9 +125,7 @@ public double getCoupleRatio() { // Turn motor configuration public static final boolean TURN_INVERTED = false; - public static final double TURN_MOTOR_REDUCTION = 26; // SDS MK5 R2 - // Every 1 rotation of the azimuth results in COUPLE_RATIO drive motor turns - private static final double COUPLE_RATIO = (54.0 / 14.0); // SDS MK4 L2 + public static final double TURN_MOTOR_REDUCTION = 26.0; // SDS MK5i public static final DCMotor TURN_GEARBOX = DCMotor.getKrakenX60Foc(1); // Absolute turn encoder configuration @@ -241,7 +239,7 @@ public double getCoupleRatio() { TalonFXConfiguration, TalonFXConfiguration, CANcoderConfiguration>() .withDriveMotorGearRatio(DRIVE_MOTOR_REDUCTION) .withSteerMotorGearRatio(TURN_MOTOR_REDUCTION) - .withCouplingGearRatio(COUPLE_RATIO) + .withCouplingGearRatio(SELECTED_RATIO.getCoupleRatio()) .withWheelRadius(WHEEL_RADIUS) .withSteerMotorGains(STEER_GAINS) .withDriveMotorGains(DRIVE_GAINS) From 6190ed1d6f57525614747bcdae369b11b90071f2 Mon Sep 17 00:00:00 2001 From: nlaverdure Date: Wed, 10 Jun 2026 08:51:30 -0400 Subject: [PATCH 4/7] use varags, reduce field visibility --- .../subsystems/drive/DriveConstants.java | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/main/java/frc/robot/subsystems/drive/DriveConstants.java b/src/main/java/frc/robot/subsystems/drive/DriveConstants.java index 2fe1df7..a926859 100644 --- a/src/main/java/frc/robot/subsystems/drive/DriveConstants.java +++ b/src/main/java/frc/robot/subsystems/drive/DriveConstants.java @@ -65,33 +65,31 @@ public class DriveConstants { public static final Distance WHEEL_RADIUS = Inches.of(2); public static final double WHEEL_RADIUS_METERS = WHEEL_RADIUS.in(Meters); - public static enum Ratio { + private static enum DriveGearRatio { SDS_MK5i_R1(54.0 / 12.0, 25.0 / 32.0, 30.0 / 15.0), SDS_MK5i_R2(54.0 / 14.0, 25.0 / 32.0, 30.0 / 15.0), SDS_MK5i_R3(54.0 / 16.0, 25.0 / 32.0, 30.0 / 15.0); - private double firstStageReduction; - private double secondStageReduction; - private double thirdStageReduction; + private final double[] reductions; - private Ratio( - double firstStageReduction, double secondStageReduction, double ThirdStageReduction) { - this.firstStageReduction = firstStageReduction; - this.secondStageReduction = secondStageReduction; - this.thirdStageReduction = ThirdStageReduction; + private DriveGearRatio(double... reductions) { + this.reductions = reductions; } public double getDriveMotorReduction() { - return firstStageReduction * secondStageReduction * thirdStageReduction; + double product = 1.0; + for (double r : reductions) product *= r; + return product; } - // Every 1 rotation of the azimuth results in COUPLE_RATIO drive motor turns + // Every 1 rotation of the azimuth results in getCoupleRatio() drive motor turns. + // reductions[0] is the first (bevel gear) stage, which couples azimuth to drive. public double getCoupleRatio() { - return firstStageReduction; + return reductions[0]; } } - public static final Ratio SELECTED_RATIO = Ratio.SDS_MK5i_R2; + private static final DriveGearRatio SELECTED_RATIO = DriveGearRatio.SDS_MK5i_R2; public static final double DRIVE_MOTOR_REDUCTION = SELECTED_RATIO.getDriveMotorReduction(); public static final DCMotor DRIVE_GEARBOX = DCMotor.getKrakenX60Foc(1); public static final LinearVelocity DRIVETRAIN_SPEED_LIMIT = From a3290c24203ba0b74cb760593370b746f37f5183 Mon Sep 17 00:00:00 2001 From: nlaverdure Date: Wed, 10 Jun 2026 08:57:42 -0400 Subject: [PATCH 5/7] remove DRIVE_MOTOR_REDUCTION field --- .../java/frc/robot/subsystems/drive/DriveConstants.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/frc/robot/subsystems/drive/DriveConstants.java b/src/main/java/frc/robot/subsystems/drive/DriveConstants.java index a926859..8ca8096 100644 --- a/src/main/java/frc/robot/subsystems/drive/DriveConstants.java +++ b/src/main/java/frc/robot/subsystems/drive/DriveConstants.java @@ -90,7 +90,6 @@ public double getCoupleRatio() { } private static final DriveGearRatio SELECTED_RATIO = DriveGearRatio.SDS_MK5i_R2; - public static final double DRIVE_MOTOR_REDUCTION = SELECTED_RATIO.getDriveMotorReduction(); public static final DCMotor DRIVE_GEARBOX = DCMotor.getKrakenX60Foc(1); public static final LinearVelocity DRIVETRAIN_SPEED_LIMIT = MetersPerSecond.of( @@ -98,7 +97,7 @@ public double getCoupleRatio() { * (WHEEL_RADIUS_METERS * 2.0 * Math.PI) * DRIVE_GEARBOX.freeSpeedRadPerSec / (2.0 * Math.PI) - / DRIVE_MOTOR_REDUCTION); + / SELECTED_RATIO.getDriveMotorReduction()); // Chassis movement limits private static final LinearVelocity DRIVER_SPEED_LIMIT = MetersPerSecond.of(5); @@ -142,7 +141,7 @@ public double getCoupleRatio() { WHEEL_RADIUS_METERS, DRIVETRAIN_SPEED_LIMIT.in(MetersPerSecond), WHEEL_COF, - DRIVE_GEARBOX.withReduction(DRIVE_MOTOR_REDUCTION), + DRIVE_GEARBOX.withReduction(SELECTED_RATIO.getDriveMotorReduction()), KrakenX60Constants.DEFAULT_SUPPLY_CURRENT_LIMIT, 1), MODULE_TRANSLATIONS); @@ -235,7 +234,7 @@ public double getCoupleRatio() { CONSTANT_CREATOR = new SwerveModuleConstantsFactory< TalonFXConfiguration, TalonFXConfiguration, CANcoderConfiguration>() - .withDriveMotorGearRatio(DRIVE_MOTOR_REDUCTION) + .withDriveMotorGearRatio(SELECTED_RATIO.getDriveMotorReduction()) .withSteerMotorGearRatio(TURN_MOTOR_REDUCTION) .withCouplingGearRatio(SELECTED_RATIO.getCoupleRatio()) .withWheelRadius(WHEEL_RADIUS) From 2ee1c81d58c9a2c72f7058f73ef2c2e5d3713927 Mon Sep 17 00:00:00 2001 From: nlaverdure Date: Wed, 10 Jun 2026 08:59:45 -0400 Subject: [PATCH 6/7] remove unnecessary vendordeps --- vendordeps/AmLib-2026-Latest.json | 34 ----- vendordeps/DogLog.json | 20 --- vendordeps/LumynLabs-2026.2.0.json | 71 ----------- vendordeps/Phoenix5-5.36.0.json | 171 -------------------------- vendordeps/StudicaLib.json | 78 ------------ vendordeps/ThriftyLib-2026.json | 20 --- vendordeps/URCL.json | 65 ---------- vendordeps/libgrapplefrc2026.json | 71 ----------- vendordeps/maple-sim-0.4.0-beta.json | 26 ---- vendordeps/playingwithfusion2026.json | 71 ----------- vendordeps/yagsl-2026.4.1.json | 46 ------- vendordeps/yams.json | 21 ---- 12 files changed, 694 deletions(-) delete mode 100644 vendordeps/AmLib-2026-Latest.json delete mode 100644 vendordeps/DogLog.json delete mode 100644 vendordeps/LumynLabs-2026.2.0.json delete mode 100644 vendordeps/Phoenix5-5.36.0.json delete mode 100644 vendordeps/StudicaLib.json delete mode 100644 vendordeps/ThriftyLib-2026.json delete mode 100644 vendordeps/URCL.json delete mode 100644 vendordeps/libgrapplefrc2026.json delete mode 100644 vendordeps/maple-sim-0.4.0-beta.json delete mode 100644 vendordeps/playingwithfusion2026.json delete mode 100644 vendordeps/yagsl-2026.4.1.json delete mode 100644 vendordeps/yams.json diff --git a/vendordeps/AmLib-2026-Latest.json b/vendordeps/AmLib-2026-Latest.json deleted file mode 100644 index 4cf0b4d..0000000 --- a/vendordeps/AmLib-2026-Latest.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "fileName": "AmLib-2026-Latest.json", - "name": "AndyMark AM Library", - "version": "2026.1.0", - "frcYear": "2026", - "uuid": "f463c495-f27c-4102-9dde-af4e65a3eb2d", - "mavenUrls": [ - "https://andymarkproductsoftware.github.io/amlib-vendordep/repo/2026/" - ], - "jsonUrl": "https://andymarkproductsoftware.github.io/amlib-vendordep/vendordeps/2026/AmLib-2026.1.0.json", - "jniDependencies": [], - "javaDependencies": [ - { - "groupId": "com.andymark.frc", - "artifactId": "AmLib-java", - "version": "2026.1.0" - } - ], - "cppDependencies": [ - { - "groupId": "com.andymark.frc", - "artifactId": "AmLib-cpp", - "version": "2026.1.0", - "libName": "AmLib", - "headerClassifier": "headers", - "sharedLibrary": false, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxathena" - ] - } - ] -} diff --git a/vendordeps/DogLog.json b/vendordeps/DogLog.json deleted file mode 100644 index 2b0f7f5..0000000 --- a/vendordeps/DogLog.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "javaDependencies": [ - { - "groupId": "com.github.jonahsnider", - "artifactId": "doglog", - "version": "2026.5.0" - } - ], - "fileName": "DogLog.json", - "frcYear": "2026", - "jsonUrl": "https://doglog.dev/vendordep.json", - "name": "DogLog", - "jniDependencies": [], - "mavenUrls": [ - "https://jitpack.io" - ], - "cppDependencies": [], - "version": "2026.5.0", - "uuid": "65592ce1-2251-4a31-8e4b-2df20dacebe4" -} diff --git a/vendordeps/LumynLabs-2026.2.0.json b/vendordeps/LumynLabs-2026.2.0.json deleted file mode 100644 index 1272258..0000000 --- a/vendordeps/LumynLabs-2026.2.0.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "fileName": "LumynLabs-2026.2.0.json", - "name": "LumynLabs", - "version": "2026.2.0", - "frcYear": "2026", - "uuid": "eebd34fc-a6d3-48a2-a286-ac1cec59ab89", - "mavenUrls": [ - "https://packages.lumynlabs.com/repo" - ], - "jsonUrl": "https://packages.lumynlabs.com/LumynLabs.json", - "javaDependencies": [ - { - "groupId": "com.lumynlabs.frc", - "artifactId": "LumynLabs-java", - "version": "2026.2.0" - } - ], - "jniDependencies": [ - { - "groupId": "com.lumynlabs.frc", - "artifactId": "LumynLabs-driver", - "version": "2026.2.0", - "skipInvalidPlatforms": true, - "isJar": false, - "validPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - } - ], - "cppDependencies": [ - { - "groupId": "com.lumynlabs.frc", - "artifactId": "LumynLabs-cpp", - "version": "2026.2.0", - "libName": "Lumyn", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - }, - { - "groupId": "com.lumynlabs.frc", - "artifactId": "LumynLabs-driver", - "version": "2026.2.0", - "libName": "LumynDriver", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - } - ] -} diff --git a/vendordeps/Phoenix5-5.36.0.json b/vendordeps/Phoenix5-5.36.0.json deleted file mode 100644 index c60dd4c..0000000 --- a/vendordeps/Phoenix5-5.36.0.json +++ /dev/null @@ -1,171 +0,0 @@ -{ - "fileName": "Phoenix5-5.36.0.json", - "name": "CTRE-Phoenix (v5)", - "version": "5.36.0", - "frcYear": "2026", - "uuid": "ab676553-b602-441f-a38d-f1296eff6537", - "mavenUrls": [ - "https://maven.ctr-electronics.com/release/" - ], - "jsonUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix/Phoenix5-frc2026-latest.json", - "requires": [ - { - "uuid": "e995de00-2c64-4df5-8831-c1441420ff19", - "errorMessage": "Phoenix 5 requires low-level libraries from Phoenix 6. Please add the Phoenix 6 vendordep before adding Phoenix 5.", - "offlineFileName": "Phoenix6-frc2026-latest.json", - "onlineUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2026-latest.json" - } - ], - "conflictsWith": [ - { - "uuid": "e7900d8d-826f-4dca-a1ff-182f658e98af", - "errorMessage": "Users must use the Phoenix 5 replay vendordep when using the Phoenix 6 replay vendordep.", - "offlineFileName": "Phoenix6-replay-frc2026-latest.json" - }, - { - "uuid": "fbc886a4-2cec-40c0-9835-71086a8cc3df", - "errorMessage": "Users cannot have both the replay and regular Phoenix 5 vendordeps in their robot program.", - "offlineFileName": "Phoenix5-replay-frc2026-latest.json" - } - ], - "javaDependencies": [ - { - "groupId": "com.ctre.phoenix", - "artifactId": "api-java", - "version": "5.36.0" - }, - { - "groupId": "com.ctre.phoenix", - "artifactId": "wpiapi-java", - "version": "5.36.0" - } - ], - "jniDependencies": [ - { - "groupId": "com.ctre.phoenix", - "artifactId": "cci", - "version": "5.36.0", - "isJar": false, - "skipInvalidPlatforms": true, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "linuxathena" - ], - "simMode": "hwsim" - }, - { - "groupId": "com.ctre.phoenix.sim", - "artifactId": "cci-sim", - "version": "5.36.0", - "isJar": false, - "skipInvalidPlatforms": true, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - } - ], - "cppDependencies": [ - { - "groupId": "com.ctre.phoenix", - "artifactId": "wpiapi-cpp", - "version": "5.36.0", - "libName": "CTRE_Phoenix_WPI", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "linuxathena" - ], - "simMode": "hwsim" - }, - { - "groupId": "com.ctre.phoenix", - "artifactId": "api-cpp", - "version": "5.36.0", - "libName": "CTRE_Phoenix", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "linuxathena" - ], - "simMode": "hwsim" - }, - { - "groupId": "com.ctre.phoenix", - "artifactId": "cci", - "version": "5.36.0", - "libName": "CTRE_PhoenixCCI", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "linuxathena" - ], - "simMode": "hwsim" - }, - { - "groupId": "com.ctre.phoenix.sim", - "artifactId": "wpiapi-cpp-sim", - "version": "5.36.0", - "libName": "CTRE_Phoenix_WPISim", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix.sim", - "artifactId": "api-cpp-sim", - "version": "5.36.0", - "libName": "CTRE_PhoenixSim", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix.sim", - "artifactId": "cci-sim", - "version": "5.36.0", - "libName": "CTRE_PhoenixCCISim", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - } - ] -} diff --git a/vendordeps/StudicaLib.json b/vendordeps/StudicaLib.json deleted file mode 100644 index 67aa6d6..0000000 --- a/vendordeps/StudicaLib.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "fileName": "StudicaLib.json", - "name": "StudicaLib", - "version": "2026.0.2", - "frcYear": "2026", - "uuid": "963ef341-8abd-4981-a969-c8ae3f592e82", - "mavenUrls": [ - "https://dev.studica.com/maven/release/2026/" - ], - "jsonUrl": "https://dev.studica.com/maven/release/2026/json/StudicaLib-2026.0.2.json", - "conflictsWith": [ - { - "uuid": "cb311d09-36e9-4143-a032-55bb2b94443b", - "errorMessage": "StudicaLib (newer devices) is not compatible with Studica (NavX, NavX2)", - "offlineFileName": "Studica.json" - } - ], - "javaDependencies": [ - { - "groupId": "com.studica.frc", - "artifactId": "StudicaLib-java", - "version": "2026.0.2" - } - ], - "jniDependencies": [ - { - "groupId": "com.studica.frc", - "artifactId": "StudicaLib-driver", - "version": "2026.0.2", - "skipInvalidPlatforms": true, - "isJar": false, - "validPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - } - ], - "cppDependencies": [ - { - "groupId": "com.studica.frc", - "artifactId": "StudicaLib-cpp", - "version": "2026.0.2", - "libName": "StudicaLib", - "headerClassifier": "headers", - "sharedLibrary": false, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - }, - { - "groupId": "com.studica.frc", - "artifactId": "StudicaLib-driver", - "version": "2026.0.2", - "libName": "StudicaLibDriver", - "headerClassifier": "headers", - "sharedLibrary": false, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - } - ] -} diff --git a/vendordeps/ThriftyLib-2026.json b/vendordeps/ThriftyLib-2026.json deleted file mode 100644 index 69917f0..0000000 --- a/vendordeps/ThriftyLib-2026.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "fileName": "ThriftyLib-2026.json", - "name": "ThriftyLib", - "version": "2026.1.2", - "frcYear": "2026", - "uuid": "60b2694b-9e6e-4026-81ee-6f167946f4b0", - "mavenUrls": [ - "https://docs.home.thethriftybot.com" - ], - "jsonUrl": "https://docs.home.thethriftybot.com/ThriftyLib-2026.json", - "javaDependencies": [ - { - "groupId": "com.thethriftybot.frc", - "artifactId": "ThriftyLib-java", - "version": "2026.1.2" - } - ], - "jniDependencies": [], - "cppDependencies": [] -} diff --git a/vendordeps/URCL.json b/vendordeps/URCL.json deleted file mode 100644 index f5b535e..0000000 --- a/vendordeps/URCL.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "fileName": "URCL.json", - "name": "URCL", - "version": "2026.0.0", - "frcYear": "2026", - "uuid": "84246d17-a797-4d1e-bd9f-c59cd8d2477c", - "mavenUrls": [ - "https://frcmaven.wpi.edu/artifactory/littletonrobotics-mvn-release/" - ], - "jsonUrl": "https://raw.githubusercontent.com/Mechanical-Advantage/URCL/main/URCL.json", - "javaDependencies": [ - { - "groupId": "org.littletonrobotics.urcl", - "artifactId": "URCL-java", - "version": "2026.0.0" - } - ], - "jniDependencies": [ - { - "groupId": "org.littletonrobotics.urcl", - "artifactId": "URCL-driver", - "version": "2026.0.0", - "skipInvalidPlatforms": true, - "isJar": false, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxathena", - "osxuniversal" - ] - } - ], - "cppDependencies": [ - { - "groupId": "org.littletonrobotics.urcl", - "artifactId": "URCL-cpp", - "version": "2026.0.0", - "libName": "URCL", - "headerClassifier": "headers", - "sharedLibrary": false, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxathena", - "osxuniversal" - ] - }, - { - "groupId": "org.littletonrobotics.urcl", - "artifactId": "URCL-driver", - "version": "2026.0.0", - "libName": "URCLDriver", - "headerClassifier": "headers", - "sharedLibrary": false, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxathena", - "osxuniversal" - ] - } - ] -} diff --git a/vendordeps/libgrapplefrc2026.json b/vendordeps/libgrapplefrc2026.json deleted file mode 100644 index d804c19..0000000 --- a/vendordeps/libgrapplefrc2026.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "fileName": "libgrapplefrc2026.json", - "name": "libgrapplefrc", - "version": "2026.0.0", - "frcYear": "2026", - "uuid": "8ef3423d-9532-4665-8339-206dae1d7168", - "mavenUrls": [ - "https://storage.googleapis.com/grapple-frc-maven" - ], - "jsonUrl": "https://storage.googleapis.com/grapple-frc-maven/libgrapplefrc2026.json", - "javaDependencies": [ - { - "groupId": "au.grapplerobotics", - "artifactId": "libgrapplefrcjava", - "version": "2026.0.0" - } - ], - "jniDependencies": [ - { - "groupId": "au.grapplerobotics", - "artifactId": "libgrapplefrcdriver", - "version": "2026.0.0", - "skipInvalidPlatforms": true, - "isJar": false, - "validPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - } - ], - "cppDependencies": [ - { - "groupId": "au.grapplerobotics", - "artifactId": "libgrapplefrccpp", - "version": "2026.0.0", - "libName": "grapplefrc", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - }, - { - "groupId": "au.grapplerobotics", - "artifactId": "libgrapplefrcdriver", - "version": "2026.0.0", - "libName": "grapplefrcdriver", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - } - ] -} diff --git a/vendordeps/maple-sim-0.4.0-beta.json b/vendordeps/maple-sim-0.4.0-beta.json deleted file mode 100644 index 2459b72..0000000 --- a/vendordeps/maple-sim-0.4.0-beta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "fileName": "maple-sim-0.4.0-beta.json", - "name": "maplesim", - "version": "0.4.0-beta", - "frcYear": "2026", - "uuid": "c39481e8-4a63-4a4c-9df6-48d91e4da37b", - "mavenUrls": [ - "https://shenzhen-robotics-alliance.github.io/maple-sim/vendordep/repos/releases", - "https://repo1.maven.org/maven2" - ], - "jsonUrl": "https://shenzhen-robotics-alliance.github.io/maple-sim/vendordep/maple-sim.json", - "javaDependencies": [ - { - "groupId": "org.ironmaple", - "artifactId": "maplesim-java", - "version": "0.4.0-beta" - }, - { - "groupId": "org.dyn4j", - "artifactId": "dyn4j", - "version": "5.0.2" - } - ], - "jniDependencies": [], - "cppDependencies": [] -} diff --git a/vendordeps/playingwithfusion2026.json b/vendordeps/playingwithfusion2026.json deleted file mode 100644 index cf52e8d..0000000 --- a/vendordeps/playingwithfusion2026.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "fileName": "playingwithfusion2026.json", - "name": "PlayingWithFusion", - "version": "2026.5.08", - "uuid": "14b8ad04-24df-11ea-978f-2e728ce88125", - "frcYear": "2026", - "jsonUrl": "https://www.playingwithfusion.com/frc/playingwithfusion2026.json", - "mavenUrls": [ - "https://www.playingwithfusion.com/frc/maven/" - ], - "javaDependencies": [ - { - "groupId": "com.playingwithfusion.frc", - "artifactId": "PlayingWithFusion-java", - "version": "2026.5.08" - } - ], - "jniDependencies": [ - { - "groupId": "com.playingwithfusion.frc", - "artifactId": "PlayingWithFusion-driver", - "version": "2026.5.08", - "skipInvalidPlatforms": true, - "isJar": false, - "validPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - } - ], - "cppDependencies": [ - { - "groupId": "com.playingwithfusion.frc", - "artifactId": "PlayingWithFusion-cpp", - "version": "2026.5.08", - "libName": "PlayingWithFusion", - "headerClassifier": "headers", - "sharedLibrary": false, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - }, - { - "groupId": "com.playingwithfusion.frc", - "artifactId": "PlayingWithFusion-driver", - "version": "2026.5.08", - "libName": "PlayingWithFusionDriver", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - } - ] -} diff --git a/vendordeps/yagsl-2026.4.1.json b/vendordeps/yagsl-2026.4.1.json deleted file mode 100644 index 60ce44a..0000000 --- a/vendordeps/yagsl-2026.4.1.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "fileName": "yagsl-2026.4.1.json", - "name": "YAGSL", - "version": "2026.4.1", - "frcYear": "2026", - "uuid": "1ccce5a4-acd2-4d18-bca3-4b8047188400", - "mavenUrls": [ - "https://yet-another-software-suite.github.io/YAGSL/releases/", - "https://repo1.maven.org/maven2" - ], - "jsonUrl": "https://yet-another-software-suite.github.io/YAGSL/yagsl.json", - "javaDependencies": [ - { - "groupId": "swervelib", - "artifactId": "YAGSL-java", - "version": "2026.4.1" - }, - { - "groupId": "org.dyn4j", - "artifactId": "dyn4j", - "version": "5.0.2" - } - ], - "requires": [ - { - "uuid": "151ecca8-670b-4026-8160-cdd2679ef2bd", - "errorMessage": "ReduxLib is required!", - "offlineFileName": "ReduxLib.json", - "onlineUrl": "https://frcsdk.reduxrobotics.com/ReduxLib_2026.json" - }, - { - "uuid": "3f48eb8c-50fe-43a6-9cb7-44c86353c4cb", - "errorMessage": "REVLib is required!", - "offlineFileName": "REVLib.json", - "onlineUrl": "https://software-metadata.revrobotics.com/REVLib-2026.json" - }, - { - "uuid": "60b2694b-9e6e-4026-81ee-6f167946f4b0", - "errorMessage": "ThriftyLib is required!", - "offlineFileName": "ThriftyLib.json", - "onlineUrl": "https://docs.home.thethriftybot.com/ThriftyLib-2026.json" - } - ], - "jniDependencies": [], - "cppDependencies": [] -} diff --git a/vendordeps/yams.json b/vendordeps/yams.json deleted file mode 100644 index e9832e8..0000000 --- a/vendordeps/yams.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "fileName": "yams.json", - "name": "Yet Another Mechanism System", - "version": "2026.4.1", - "frcYear": "2026", - "uuid": "a1051e86-a979-4880-a28b-a0d5362d1d96", - "mavenUrls": [ - "https://yet-another-software-suite.github.io/YAMS/releases/" - ], - "jsonUrl": "https://yet-another-software-suite.github.io/YAMS/yams.json", - "javaDependencies": [ - { - "groupId": "yams", - "artifactId": "YAMS-java", - "version": "2026.4.1" - } - ], - "cppDependencies": [], - "jniDependencies": [], - "requires": [] -} From 4274ab89d426706c96dbfef14ef528ae1e55d2e7 Mon Sep 17 00:00:00 2001 From: nlaverdure Date: Wed, 10 Jun 2026 15:27:42 -0400 Subject: [PATCH 7/7] refine DriveGearRatio couple ratio to support multiple chassis-frame stages Add chassisStages parameter to explicitly separate chassis-frame gear reduction stages (whose product is the couple ratio) from azimuth-frame stages. Add Javadoc to constructor, getDriveMotorReduction, and getCoupleRatio. Co-Authored-By: Claude Sonnet 4.6 --- .../subsystems/drive/DriveConstants.java | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/src/main/java/frc/robot/subsystems/drive/DriveConstants.java b/src/main/java/frc/robot/subsystems/drive/DriveConstants.java index 8ca8096..32c8b5e 100644 --- a/src/main/java/frc/robot/subsystems/drive/DriveConstants.java +++ b/src/main/java/frc/robot/subsystems/drive/DriveConstants.java @@ -66,26 +66,44 @@ public class DriveConstants { public static final double WHEEL_RADIUS_METERS = WHEEL_RADIUS.in(Meters); private static enum DriveGearRatio { - SDS_MK5i_R1(54.0 / 12.0, 25.0 / 32.0, 30.0 / 15.0), - SDS_MK5i_R2(54.0 / 14.0, 25.0 / 32.0, 30.0 / 15.0), - SDS_MK5i_R3(54.0 / 16.0, 25.0 / 32.0, 30.0 / 15.0); + SDS_MK5i_R1(1, 54.0 / 12.0, 25.0 / 32.0, 30.0 / 15.0), + SDS_MK5i_R2(1, 54.0 / 14.0, 25.0 / 32.0, 30.0 / 15.0), + SDS_MK5i_R3(1, 54.0 / 16.0, 25.0 / 32.0, 30.0 / 15.0); + private final int chassisStages; private final double[] reductions; - private DriveGearRatio(double... reductions) { + /** + * @param chassisStages the number of leading reduction stages fixed to the chassis reference + * frame; their product defines the couple ratio + * @param reductions all gear reduction stages in order, chassis-frame stages first followed by + * azimuth-frame stages + */ + private DriveGearRatio(int chassisStages, double... reductions) { + this.chassisStages = chassisStages; this.reductions = reductions; } + /** + * Returns the total gear reduction from the drive motor to the wheel, combining all stages + * regardless of reference frame. Used to convert drive motor rotations to wheel rotations. + */ public double getDriveMotorReduction() { double product = 1.0; for (double r : reductions) product *= r; return product; } - // Every 1 rotation of the azimuth results in getCoupleRatio() drive motor turns. - // reductions[0] is the first (bevel gear) stage, which couples azimuth to drive. + /** + * Returns the number of drive motor rotations per one full rotation of the steering azimuth, + * due to mechanical coupling. This is the product of all gear reduction stages that are fixed + * to the chassis reference frame (i.e., before the azimuth pivot). The swerve odometry uses + * this to compensate for the apparent wheel displacement caused by azimuth rotation. + */ public double getCoupleRatio() { - return reductions[0]; + double product = 1.0; + for (int i = 0; i < chassisStages; i++) product *= reductions[i]; + return product; } }