diff --git a/.wpilib/wpilib_preferences.json b/.wpilib/wpilib_preferences.json index 3e2fa4b..874ef02 100644 --- a/.wpilib/wpilib_preferences.json +++ b/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": false, "currentLanguage": "java", - "projectYear": "2026beta", + "projectYear": "2026", "teamNumber": 4388 } \ No newline at end of file diff --git a/WPILib-License.md b/WPILib-License.md index 645e542..eb3061b 100644 --- a/WPILib-License.md +++ b/WPILib-License.md @@ -1,4 +1,4 @@ -Copyright (c) 2009-2024 FIRST and other WPILib contributors +Copyright (c) 2009-2026 FIRST and other WPILib contributors All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/build.gradle b/build.gradle index a8ab99f..8862516 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { id "java" - id "edu.wpi.first.GradleRIO" version "2026.1.1-beta-1" + id "edu.wpi.first.GradleRIO" version "2026.1.1" id "com.peterabeles.gversion" version "1.10" } @@ -75,7 +75,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter:5.10.1' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' - def akitJson = new groovy.json.JsonSlurper().parseText(new File(projectDir.getAbsolutePath() + "/vendordeps/AdvantageKit.json").text) + def akitJson = new groovy.json.JsonSlurper().parseText(new File(projectDir.getAbsolutePath() + "/vendordeps/AdvantageKit.json").text) annotationProcessor "org.littletonrobotics.akit:akit-autolog:$akitJson.version" } @@ -93,7 +93,9 @@ wpi.sim.addDriverstation() // knows where to look for our Robot Class. jar { from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } - from sourceSets.main.allSource + from('src') { into 'backup/src' } + from('vendordeps') { into 'backup/vendordeps' } + from('build.gradle') { into 'backup' } manifest edu.wpi.first.gradlerio.GradleRIOPlugin.javaManifest(ROBOT_MAIN_CLASS) duplicatesStrategy = DuplicatesStrategy.INCLUDE } diff --git a/src/main/java/frc4388/robot/constants/BuildConstants.java b/src/main/java/frc4388/robot/constants/BuildConstants.java index b45027b..9236f0e 100644 --- a/src/main/java/frc4388/robot/constants/BuildConstants.java +++ b/src/main/java/frc4388/robot/constants/BuildConstants.java @@ -5,15 +5,15 @@ package frc4388.robot.constants; */ public final class BuildConstants { public static final String MAVEN_GROUP = ""; - public static final String MAVEN_NAME = "2026KPopRobotHunters"; + public static final String MAVEN_NAME = "2026KPopRobotHunters-new"; public static final String VERSION = "unspecified"; - public static final int GIT_REVISION = -1; - public static final String GIT_SHA = "UNKNOWN"; - public static final String GIT_DATE = "UNKNOWN"; - public static final String GIT_BRANCH = "UNKNOWN"; - public static final String BUILD_DATE = "2026-01-08 19:31:25 MST"; - public static final long BUILD_UNIX_TIME = 1767925885671L; - public static final int DIRTY = 129; + public static final int GIT_REVISION = 2; + public static final String GIT_SHA = "17c3ff1ec9ef6763ee1c736622be3ef0fcc30d10"; + public static final String GIT_DATE = "2026-01-08 19:42:41 MST"; + public static final String GIT_BRANCH = "master"; + public static final String BUILD_DATE = "2026-01-10 16:21:06 MST"; + public static final long BUILD_UNIX_TIME = 1768087266722L; + public static final int DIRTY = 1; private BuildConstants(){} } diff --git a/src/main/java/frc4388/robot/subsystems/shooter/Shooter.java b/src/main/java/frc4388/robot/subsystems/shooter/Shooter.java new file mode 100644 index 0000000..60ddaec --- /dev/null +++ b/src/main/java/frc4388/robot/subsystems/shooter/Shooter.java @@ -0,0 +1,58 @@ +package frc4388.robot.subsystems.shooter; + +import static edu.wpi.first.units.Units.Rotation; + +import java.util.function.Supplier; + +import org.littletonrobotics.junction.Logger; + +import edu.wpi.first.math.geometry.Pose2d; +import edu.wpi.first.units.measure.Angle; +import edu.wpi.first.wpilibj2.command.SubsystemBase; +import frc4388.utility.status.FaultReporter; + +public class Shooter extends SubsystemBase { + ShooterIO io; + ShooterStateAutoLogged state = new ShooterStateAutoLogged(); + + Supplier m_swervePoseSupplier; + + public Shooter( + ShooterIO io, + Supplier swervePoseSupplier + ) { + this.io = io; + this.m_swervePoseSupplier = swervePoseSupplier; + } + + public enum FieldZone { + // The robot should aim at the hub + InShootZone, + // The robot should aim towards the wall + AimAtWall, + + } + + // Calculate what should be done based off of the position of the robot + // TODO: Implement field zones + public FieldZone getTarget(Pose2d position) { + return FieldZone.InShootZone; + } + + @Override + public void periodic() { + + + + // FaultReporter.register(this); // TODO Implement fault reporter + + + Logger.processInputs("Shooter", state); + + Pose2d pose = m_swervePoseSupplier.get(); + Angle robotRot = pose.getRotation().getMeasure(); + + io.updateInputs(state); + + } +} diff --git a/src/main/java/frc4388/robot/subsystems/shooter/ShooterConstants.java b/src/main/java/frc4388/robot/subsystems/shooter/ShooterConstants.java new file mode 100644 index 0000000..0af5e01 --- /dev/null +++ b/src/main/java/frc4388/robot/subsystems/shooter/ShooterConstants.java @@ -0,0 +1,71 @@ +package frc4388.robot.subsystems.shooter; + +import static edu.wpi.first.units.Units.*; + +import com.ctre.phoenix6.configs.CurrentLimitsConfigs; +import com.ctre.phoenix6.configs.MotorOutputConfigs; +import com.ctre.phoenix6.configs.TalonFXConfiguration; +import com.ctre.phoenix6.signals.NeutralModeValue; + +import edu.wpi.first.units.measure.Angle; + +public class ShooterConstants { + // Motor conversions + public static final double ANGLE_MOTOR_GEAR_RATIO = 1.; + public static final double PITCH_MOTOR_GEAR_RATIO = 1.; + public static final double FLYWHEEL_GEAR_RATIO = 1.; + public static final double FEEDER_INCHES_PER_ROT = 1.; + + // Limits + + // 0 is the forward angle on the robot. + // negative is left, positive is right + public static final Angle ANGLE_LIMIT_LEFT = Degrees.of(-180); + public static final Angle ANGLE_LIMIT_RIGHT = Degrees.of(180); + + // 0 is paralell to the ground, 90 is directly up + public static final Angle PITCH_LIMIT_UPPER = Degrees.of(90); + public static final Angle PITCH_LIMIT_LOWER = Degrees.of(0); + + // Motor configs + public static final TalonFXConfiguration ANGLE_MOTOR_CONFIG = new TalonFXConfiguration() + .withCurrentLimits( + new CurrentLimitsConfigs() + .withStatorCurrentLimit(40) // TODO: tune??? + .withStatorCurrentLimitEnable(true) + ).withMotorOutput( + new MotorOutputConfigs() + .withNeutralMode(NeutralModeValue.Brake) // Must be break because this has to be accurate + .withDutyCycleNeutralDeadband(0.04) // TODO: Figure out what this means + ); + public static final TalonFXConfiguration PITCH_MOTOR_CONFIG = new TalonFXConfiguration() + .withCurrentLimits( + new CurrentLimitsConfigs() + .withStatorCurrentLimit(40) // TODO: tune??? + .withStatorCurrentLimitEnable(true) + ).withMotorOutput( + new MotorOutputConfigs() + .withNeutralMode(NeutralModeValue.Brake) // Must be break because this has to be accurate + .withDutyCycleNeutralDeadband(0.04) // TODO: Figure out what this means + ); + public static final TalonFXConfiguration FLYWHEEL_MOTOR_CONFIG = new TalonFXConfiguration() + .withCurrentLimits( + new CurrentLimitsConfigs() + .withStatorCurrentLimit(40) // TODO: tune??? + .withStatorCurrentLimitEnable(true) // TODO: Figure out what this means + ).withMotorOutput( + new MotorOutputConfigs() + .withNeutralMode(NeutralModeValue.Coast) // Must be coast because this is spinny spinny + .withDutyCycleNeutralDeadband(0.04) // TODO: Figure out what this means + ); + public static final TalonFXConfiguration FEEDER_MOTOR_CONFIG = new TalonFXConfiguration() + .withCurrentLimits( + new CurrentLimitsConfigs() + .withStatorCurrentLimit(40) // TODO: tune??? + .withStatorCurrentLimitEnable(true) + ).withMotorOutput( + new MotorOutputConfigs() + .withNeutralMode(NeutralModeValue.Coast) // Must be coast because this is spinny spinny + .withDutyCycleNeutralDeadband(0.04) // TODO: Figure out what this means + ); +} diff --git a/src/main/java/frc4388/robot/subsystems/shooter/ShooterIO.java b/src/main/java/frc4388/robot/subsystems/shooter/ShooterIO.java new file mode 100644 index 0000000..ce711e9 --- /dev/null +++ b/src/main/java/frc4388/robot/subsystems/shooter/ShooterIO.java @@ -0,0 +1,42 @@ +package frc4388.robot.subsystems.shooter; + +import static edu.wpi.first.units.Units.Amps; +import static edu.wpi.first.units.Units.InchesPerSecond; +import static edu.wpi.first.units.Units.Rotations; +import static edu.wpi.first.units.Units.RotationsPerSecond; + +import org.littletonrobotics.junction.AutoLog; + +import edu.wpi.first.units.CurrentUnit; +import edu.wpi.first.units.measure.Angle; +import edu.wpi.first.units.measure.AngularVelocity; +import edu.wpi.first.units.measure.Current; +import edu.wpi.first.units.measure.LinearVelocity; + +public interface ShooterIO { + @AutoLog + public class ShooterState { + Angle shooterAngle = Rotations.of(0); + Angle shooterTargetAngle = Rotations.of(0); + Current angleMotorCurrent = Amps.of(0); + + Angle shooterPitch = Rotations.of(0); + Angle shooterTargetPitch = Rotations.of(0); + Current pitchMotorCurrent = Amps.of(0); + + AngularVelocity flywheelVelocity = RotationsPerSecond.of(0); + AngularVelocity flywheelTargetVelocity = RotationsPerSecond.of(0); + Current flywheelMotorCurrent = Amps.of(0); + + LinearVelocity feederVelocity = InchesPerSecond.of(0); + LinearVelocity feederTargetVelocity = InchesPerSecond.of(0); + Current feederMotorCurrent = Amps.of(0); + } + + public default void setShooterAngle(ShooterState state, Angle angle) {} + public default void setShooterPitch(ShooterState state, Angle angle) {} + public default void setFlywheelVelocity(ShooterState state, AngularVelocity angularVelocity) {} + public default void setFeederVelocity(ShooterState state, LinearVelocity linearVelocity) {} + + public default void updateInputs(ShooterState state) {} +} \ No newline at end of file diff --git a/src/main/java/frc4388/robot/subsystems/shooter/ShooterReal.java b/src/main/java/frc4388/robot/subsystems/shooter/ShooterReal.java new file mode 100644 index 0000000..0560891 --- /dev/null +++ b/src/main/java/frc4388/robot/subsystems/shooter/ShooterReal.java @@ -0,0 +1,111 @@ +package frc4388.robot.subsystems.shooter; + +import static edu.wpi.first.units.Units.InchesPerSecond; +import static edu.wpi.first.units.Units.Rotations; +import static edu.wpi.first.units.Units.RotationsPerSecond; + +import com.ctre.phoenix6.controls.PositionDutyCycle; +import com.ctre.phoenix6.controls.VelocityDutyCycle; +import com.ctre.phoenix6.hardware.TalonFX; + +import edu.wpi.first.units.measure.*; + +public class ShooterReal implements ShooterIO { + + TalonFX m_angleMotor; + TalonFX m_pitchMotor; + TalonFX m_flywheelMotor; + TalonFX m_feederMotor; + + public ShooterReal( + TalonFX angleMotor, + TalonFX pitchMotor, + TalonFX flywheelMotor, + TalonFX feederMotor + ) { + m_angleMotor = angleMotor; + m_pitchMotor = pitchMotor; + m_flywheelMotor = flywheelMotor; + m_feederMotor = feederMotor; + + // Apply the configs + m_angleMotor.getConfigurator().apply(ShooterConstants.ANGLE_MOTOR_CONFIG); + m_pitchMotor.getConfigurator().apply(ShooterConstants.PITCH_MOTOR_CONFIG); + m_flywheelMotor.getConfigurator().apply(ShooterConstants.FLYWHEEL_MOTOR_CONFIG); + m_feederMotor.getConfigurator().apply(ShooterConstants.FEEDER_MOTOR_CONFIG); + } + + private Angle clampAng(Angle x, Angle min, Angle max){ + if(x.gt(max)) { + return max; + }else if(x.lt(min)) { + return min; + }else{ + return x; + } + } + + // TODO: Test + @Override + public void setShooterAngle(ShooterState state, Angle angle) { + state.shooterTargetAngle = angle; + // Assume that the angle is always accurate, because I think we will use a shaft encoder + // Assume that 0 degrees = forwards. Might need an offset here + + Angle boundedAngle = clampAng(angle, ShooterConstants.ANGLE_LIMIT_LEFT, ShooterConstants.ANGLE_LIMIT_RIGHT); + // (REAL_ROT) * (MOTOR_ROT / REAL_ROT) = MOTOR_ROT + double motorTargetAngle = boundedAngle.in(Rotations) / ShooterConstants.ANGLE_MOTOR_GEAR_RATIO; + PositionDutyCycle posRequest = new PositionDutyCycle(motorTargetAngle); + m_angleMotor.setControl(posRequest); + } + + + // TODO: Test + @Override + public void setShooterPitch(ShooterState state, Angle angle) { + state.shooterTargetPitch = angle; + // TODO: Test + // This assumes that the 0 is paralell to the ground. Might need an offset here + + + Angle boundedAngle = clampAng(angle, ShooterConstants.PITCH_LIMIT_UPPER, ShooterConstants.PITCH_LIMIT_LOWER); + // (REAL_ROT) * (MOTOR_ROT / REAL_ROT) = MOTOR_ROT + double motorTargetAngle = boundedAngle.in(Rotations) / ShooterConstants.PITCH_MOTOR_GEAR_RATIO; + PositionDutyCycle posRequest = new PositionDutyCycle(motorTargetAngle); + m_angleMotor.setControl(posRequest); + } + + @Override + public void setFlywheelVelocity(ShooterState state, AngularVelocity angularVelocity) { + state.flywheelTargetVelocity = angularVelocity; + // (REAL_ROT / SEC) * (MOTOR_ROT / REAL_ROT) = (MOTOR_ROT / SEC) + double motorSpeed = angularVelocity.in(RotationsPerSecond) / ShooterConstants.FLYWHEEL_GEAR_RATIO; + VelocityDutyCycle velocity = new VelocityDutyCycle(motorSpeed); + m_feederMotor.setControl(velocity); + } + + @Override + public void setFeederVelocity(ShooterState state, LinearVelocity linearVelocity) { + state.feederTargetVelocity = linearVelocity; + // (IN / SEC) * (ROT / IN) = (ROT / SEC) + double motorSpeed = linearVelocity.in(InchesPerSecond) / ShooterConstants.FEEDER_INCHES_PER_ROT; + VelocityDutyCycle velRequest = new VelocityDutyCycle(motorSpeed); + m_feederMotor.setControl(velRequest); + } + + @Override + public void updateInputs(ShooterState state) { + state.shooterAngle = m_angleMotor.getPosition().getValue().times(ShooterConstants.ANGLE_MOTOR_GEAR_RATIO); + state.angleMotorCurrent = m_angleMotor.getStatorCurrent(false).getValue(); + + state.shooterPitch = m_pitchMotor.getPosition().getValue().times(ShooterConstants.PITCH_MOTOR_GEAR_RATIO); + state.pitchMotorCurrent = m_pitchMotor.getStatorCurrent().getValue(); + + state.flywheelVelocity = m_flywheelMotor.getVelocity().getValue(); + state.flywheelMotorCurrent = m_flywheelMotor.getStatorCurrent().getValue(); + + state.feederVelocity = InchesPerSecond.of(m_feederMotor.getVelocity().getValue().in(RotationsPerSecond) * ShooterConstants.FEEDER_INCHES_PER_ROT); + state.feederMotorCurrent = m_feederMotor.getStatorCurrent().getValue(); + } + +} diff --git a/src/main/java/frc4388/robot/subsystems/swerve/SwerveDrive.java b/src/main/java/frc4388/robot/subsystems/swerve/SwerveDrive.java index bbc61e4..2fc6306 100644 --- a/src/main/java/frc4388/robot/subsystems/swerve/SwerveDrive.java +++ b/src/main/java/frc4388/robot/subsystems/swerve/SwerveDrive.java @@ -4,6 +4,8 @@ package frc4388.robot.subsystems.swerve; +import java.util.function.Supplier; + import org.littletonrobotics.junction.AutoLogOutput; import org.littletonrobotics.junction.Logger; @@ -315,6 +317,10 @@ public class SwerveDrive extends SubsystemBase implements Queryable { return state.currentPose; } + public Supplier getPoseSupplier() { + return () -> this.getPose2d(); + } + public void resetGyro() { io.tareEverything(); robotKnowsWhereItIs = false; diff --git a/vendordeps/AdvantageKit.json b/vendordeps/AdvantageKit.json index 5d79bff..162ad66 100644 --- a/vendordeps/AdvantageKit.json +++ b/vendordeps/AdvantageKit.json @@ -1,9 +1,9 @@ { "fileName": "AdvantageKit.json", "name": "AdvantageKit", - "version": "26.0.0-beta-1", + "version": "26.0.0", "uuid": "d820cc26-74e3-11ec-90d6-0242ac120003", - "frcYear": "2026beta", + "frcYear": "2026", "mavenUrls": [ "https://frcmaven.wpi.edu/artifactory/littletonrobotics-mvn-release/" ], @@ -12,14 +12,14 @@ { "groupId": "org.littletonrobotics.akit", "artifactId": "akit-java", - "version": "26.0.0-beta-1" + "version": "26.0.0" } ], "jniDependencies": [ { "groupId": "org.littletonrobotics.akit", "artifactId": "akit-wpilibio", - "version": "26.0.0-beta-1", + "version": "26.0.0", "skipInvalidPlatforms": false, "isJar": false, "validPlatforms": [ diff --git a/vendordeps/NavX.json b/vendordeps/NavX.json index 92e0504..92ed2f1 100644 --- a/vendordeps/NavX.json +++ b/vendordeps/NavX.json @@ -3,7 +3,7 @@ "name": "NavX", "version": "2024.1.0", "uuid": "cb311d09-36e9-4143-a032-55bb2b94443b", - "frcYear": "2026beta", + "frcYear": "2026", "mavenUrls": [ "https://dev.studica.com/maven/release/2024/" ], diff --git a/vendordeps/PathplannerLib-2025.2.7.json b/vendordeps/PathplannerLib-2025.2.7.json index c7dac8e..da77d6b 100644 --- a/vendordeps/PathplannerLib-2025.2.7.json +++ b/vendordeps/PathplannerLib-2025.2.7.json @@ -3,7 +3,7 @@ "name": "PathplannerLib", "version": "2025.2.7", "uuid": "1b42324f-17c6-4875-8e77-1c312bc8c786", - "frcYear": "2026beta", + "frcYear": "2026", "mavenUrls": [ "https://3015rangerrobotics.github.io/pathplannerlib/repo" ], diff --git a/vendordeps/Phoenix5-5.36.0-beta-1.json b/vendordeps/Phoenix5-5.36.0.json similarity index 85% rename from vendordeps/Phoenix5-5.36.0-beta-1.json rename to vendordeps/Phoenix5-5.36.0.json index 987c74c..9a27e47 100644 --- a/vendordeps/Phoenix5-5.36.0-beta-1.json +++ b/vendordeps/Phoenix5-5.36.0.json @@ -1,50 +1,50 @@ { - "fileName": "Phoenix5-5.36.0-beta-1.json", + "fileName": "Phoenix5-5.36.0.json", "name": "CTRE-Phoenix (v5)", - "version": "5.36.0-beta-1", - "frcYear": "2026beta", + "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-beta-latest.json", + "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-beta-latest.json", - "onlineUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2026-beta-latest.json" + "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-beta-latest.json" + "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-beta-latest.json" + "offlineFileName": "Phoenix5-replay-frc2026-latest.json" } ], "javaDependencies": [ { "groupId": "com.ctre.phoenix", "artifactId": "api-java", - "version": "5.36.0-beta-1" + "version": "5.36.0" }, { "groupId": "com.ctre.phoenix", "artifactId": "wpiapi-java", - "version": "5.36.0-beta-1" + "version": "5.36.0" } ], "jniDependencies": [ { "groupId": "com.ctre.phoenix", "artifactId": "cci", - "version": "5.36.0-beta-1", + "version": "5.36.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -58,7 +58,7 @@ { "groupId": "com.ctre.phoenix.sim", "artifactId": "cci-sim", - "version": "5.36.0-beta-1", + "version": "5.36.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -74,7 +74,7 @@ { "groupId": "com.ctre.phoenix", "artifactId": "wpiapi-cpp", - "version": "5.36.0-beta-1", + "version": "5.36.0", "libName": "CTRE_Phoenix_WPI", "headerClassifier": "headers", "sharedLibrary": true, @@ -90,7 +90,7 @@ { "groupId": "com.ctre.phoenix", "artifactId": "api-cpp", - "version": "5.36.0-beta-1", + "version": "5.36.0", "libName": "CTRE_Phoenix", "headerClassifier": "headers", "sharedLibrary": true, @@ -106,7 +106,7 @@ { "groupId": "com.ctre.phoenix", "artifactId": "cci", - "version": "5.36.0-beta-1", + "version": "5.36.0", "libName": "CTRE_PhoenixCCI", "headerClassifier": "headers", "sharedLibrary": true, @@ -122,7 +122,7 @@ { "groupId": "com.ctre.phoenix.sim", "artifactId": "wpiapi-cpp-sim", - "version": "5.36.0-beta-1", + "version": "5.36.0", "libName": "CTRE_Phoenix_WPISim", "headerClassifier": "headers", "sharedLibrary": true, @@ -138,7 +138,7 @@ { "groupId": "com.ctre.phoenix.sim", "artifactId": "api-cpp-sim", - "version": "5.36.0-beta-1", + "version": "5.36.0", "libName": "CTRE_PhoenixSim", "headerClassifier": "headers", "sharedLibrary": true, @@ -154,7 +154,7 @@ { "groupId": "com.ctre.phoenix.sim", "artifactId": "cci-sim", - "version": "5.36.0-beta-1", + "version": "5.36.0", "libName": "CTRE_PhoenixCCISim", "headerClassifier": "headers", "sharedLibrary": true, diff --git a/vendordeps/Phoenix6-26.0.0-beta-1.json b/vendordeps/Phoenix6-26.1.0.json similarity index 91% rename from vendordeps/Phoenix6-26.0.0-beta-1.json rename to vendordeps/Phoenix6-26.1.0.json index 681be31..dc5dc62 100644 --- a/vendordeps/Phoenix6-26.0.0-beta-1.json +++ b/vendordeps/Phoenix6-26.1.0.json @@ -1,8 +1,8 @@ { - "fileName": "Phoenix6-26.0.0-beta-1.json", + "fileName": "Phoenix6-26.1.0.json", "name": "CTRE-Phoenix (v6)", - "version": "26.0.0-beta-1", - "frcYear": "2026beta", + "version": "26.1.0", + "frcYear": "2026", "uuid": "e995de00-2c64-4df5-8831-c1441420ff19", "mavenUrls": [ "https://maven.ctr-electronics.com/release/" @@ -19,14 +19,14 @@ { "groupId": "com.ctre.phoenix6", "artifactId": "wpiapi-java", - "version": "26.0.0-beta-1" + "version": "26.1.0" } ], "jniDependencies": [ { "groupId": "com.ctre.phoenix6", "artifactId": "api-cpp", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -40,7 +40,7 @@ { "groupId": "com.ctre.phoenix6", "artifactId": "tools", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -54,7 +54,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "api-cpp-sim", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -68,7 +68,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "tools-sim", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -82,7 +82,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simTalonSRX", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -96,7 +96,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simVictorSPX", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -110,7 +110,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simPigeonIMU", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -124,7 +124,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProTalonFX", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -138,7 +138,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProTalonFXS", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -152,7 +152,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANcoder", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -166,7 +166,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProPigeon2", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -180,7 +180,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANrange", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -194,7 +194,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANdi", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -208,7 +208,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANdle", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -224,7 +224,7 @@ { "groupId": "com.ctre.phoenix6", "artifactId": "wpiapi-cpp", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_Phoenix6_WPI", "headerClassifier": "headers", "sharedLibrary": true, @@ -240,7 +240,7 @@ { "groupId": "com.ctre.phoenix6", "artifactId": "tools", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_PhoenixTools", "headerClassifier": "headers", "sharedLibrary": true, @@ -256,7 +256,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "wpiapi-cpp-sim", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_Phoenix6_WPISim", "headerClassifier": "headers", "sharedLibrary": true, @@ -272,7 +272,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "tools-sim", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_PhoenixTools_Sim", "headerClassifier": "headers", "sharedLibrary": true, @@ -288,7 +288,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simTalonSRX", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimTalonSRX", "headerClassifier": "headers", "sharedLibrary": true, @@ -304,7 +304,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simVictorSPX", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimVictorSPX", "headerClassifier": "headers", "sharedLibrary": true, @@ -320,7 +320,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simPigeonIMU", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimPigeonIMU", "headerClassifier": "headers", "sharedLibrary": true, @@ -336,7 +336,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProTalonFX", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimProTalonFX", "headerClassifier": "headers", "sharedLibrary": true, @@ -352,7 +352,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProTalonFXS", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimProTalonFXS", "headerClassifier": "headers", "sharedLibrary": true, @@ -368,7 +368,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANcoder", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimProCANcoder", "headerClassifier": "headers", "sharedLibrary": true, @@ -384,7 +384,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProPigeon2", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimProPigeon2", "headerClassifier": "headers", "sharedLibrary": true, @@ -400,7 +400,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANrange", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimProCANrange", "headerClassifier": "headers", "sharedLibrary": true, @@ -416,7 +416,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANdi", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimProCANdi", "headerClassifier": "headers", "sharedLibrary": true, @@ -432,7 +432,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANdle", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimProCANdle", "headerClassifier": "headers", "sharedLibrary": true, diff --git a/vendordeps/WPILibNewCommands.json b/vendordeps/WPILibNewCommands.json index 7ebc954..d90630e 100644 --- a/vendordeps/WPILibNewCommands.json +++ b/vendordeps/WPILibNewCommands.json @@ -3,7 +3,7 @@ "name": "WPILib-New-Commands", "version": "1.0.0", "uuid": "111e20f7-815e-48f8-9dd6-e675ce75b266", - "frcYear": "2026beta", + "frcYear": "2026", "mavenUrls": [], "jsonUrl": "", "javaDependencies": [ diff --git a/vendordeps/photonlib.json b/vendordeps/photonlib.json index bb62e61..7b78472 100644 --- a/vendordeps/photonlib.json +++ b/vendordeps/photonlib.json @@ -3,7 +3,7 @@ "name": "photonlib", "version": "v2026.0.1-beta", "uuid": "515fe07e-bfc6-11fa-b3de-0242ac130004", - "frcYear": "2026beta", + "frcYear": "2026", "mavenUrls": [ "https://maven.photonvision.org/repository/internal", "https://maven.photonvision.org/repository/snapshots" diff --git a/.github/workflows/gradle.yml b/workflows/gradle.yml similarity index 100% rename from .github/workflows/gradle.yml rename to workflows/gradle.yml