diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index dfe0770..0000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto diff --git a/.vscode/launch.json b/.vscode/launch.json index fb77e69..c9c9713 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,27 +1,21 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "java", - "name": "Main", - "request": "launch", - "mainClass": "frc4388.robot.Main", - "projectName": "2025RidgeScape" - }, - { - "type": "wpilib", - "name": "WPILib Desktop Debug", - "request": "launch", - "desktop": true - }, - { - "type": "wpilib", - "name": "WPILib roboRIO Debug", - "request": "launch", - "desktop": false - } - ] -} +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + + { + "type": "wpilib", + "name": "WPILib Desktop Debug", + "request": "launch", + "desktop": true, + }, + { + "type": "wpilib", + "name": "WPILib roboRIO Debug", + "request": "launch", + "desktop": false, + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json index ef24bd2..5e6ede8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,62 +1,61 @@ -{ - "java.configuration.updateBuildConfiguration": "automatic", - "java.server.launchMode": "Standard", - "files.exclude": { - "**/.git": true, - "**/.svn": true, - "**/.hg": true, - "**/CVS": true, - "**/.DS_Store": true, - "bin/": true, - "**/.classpath": true, - "**/.project": true, - "**/.settings": true, - "**/.factorypath": true, - "**/*~": true - }, - "java.test.config": [ - { - "name": "WPIlibUnitTests", - "workingDirectory": "${workspaceFolder}/build/jni/release", - "vmargs": [ "-Djava.library.path=${workspaceFolder}/build/jni/release" ], - "env": { - "LD_LIBRARY_PATH": "${workspaceFolder}/build/jni/release" , - "DYLD_LIBRARY_PATH": "${workspaceFolder}/build/jni/release" - } - }, - ], - "java.test.defaultConfig": "WPIlibUnitTests", - "java.import.gradle.annotationProcessing.enabled": false, - "java.completion.favoriteStaticMembers": [ - "org.junit.Assert.*", - "org.junit.Assume.*", - "org.junit.jupiter.api.Assertions.*", - "org.junit.jupiter.api.Assumptions.*", - "org.junit.jupiter.api.DynamicContainer.*", - "org.junit.jupiter.api.DynamicTest.*", - "org.mockito.Mockito.*", - "org.mockito.ArgumentMatchers.*", - "org.mockito.Answers.*", - "edu.wpi.first.units.Units.*" - ], - "java.completion.filteredTypes": [ - "java.awt.*", - "com.sun.*", - "sun.*", - "jdk.*", - "org.graalvm.*", - "io.micrometer.shaded.*", - "java.beans.*", - "java.util.Base64.*", - "java.util.Timer", - "java.sql.*", - "javax.swing.*", - "javax.management.*", - "javax.smartcardio.*", - "edu.wpi.first.math.proto.*", - "edu.wpi.first.math.**.proto.*", - "edu.wpi.first.math.**.struct.*", - ], - "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -Xlog:disable", - "wpilib.autoStartRioLog": false -} +{ + "java.configuration.updateBuildConfiguration": "automatic", + "java.server.launchMode": "Standard", + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true, + "bin/": true, + "**/.classpath": true, + "**/.project": true, + "**/.settings": true, + "**/.factorypath": true, + "**/*~": true + }, + "java.test.config": [ + { + "name": "WPIlibUnitTests", + "workingDirectory": "${workspaceFolder}/build/jni/release", + "vmargs": [ "-Djava.library.path=${workspaceFolder}/build/jni/release" ], + "env": { + "LD_LIBRARY_PATH": "${workspaceFolder}/build/jni/release" , + "DYLD_LIBRARY_PATH": "${workspaceFolder}/build/jni/release" + } + }, + ], + "java.test.defaultConfig": "WPIlibUnitTests", + "java.import.gradle.annotationProcessing.enabled": false, + "java.completion.favoriteStaticMembers": [ + "org.junit.Assert.*", + "org.junit.Assume.*", + "org.junit.jupiter.api.Assertions.*", + "org.junit.jupiter.api.Assumptions.*", + "org.junit.jupiter.api.DynamicContainer.*", + "org.junit.jupiter.api.DynamicTest.*", + "org.mockito.Mockito.*", + "org.mockito.ArgumentMatchers.*", + "org.mockito.Answers.*", + "edu.wpi.first.units.Units.*" + ], + "java.completion.filteredTypes": [ + "java.awt.*", + "com.sun.*", + "sun.*", + "jdk.*", + "org.graalvm.*", + "io.micrometer.shaded.*", + "java.beans.*", + "java.util.Base64.*", + "java.util.Timer", + "java.sql.*", + "javax.swing.*", + "javax.management.*", + "javax.smartcardio.*", + "edu.wpi.first.math.proto.*", + "edu.wpi.first.math.**.proto.*", + "edu.wpi.first.math.**.struct.*", + ], + "java.dependency.enableDependencyCheckup": false +} diff --git a/.wpilib/wpilib_preferences.json b/.wpilib/wpilib_preferences.json index 60cf2c2..3e2fa4b 100644 --- a/.wpilib/wpilib_preferences.json +++ b/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": false, "currentLanguage": "java", - "projectYear": "2025", + "projectYear": "2026beta", "teamNumber": 4388 } \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index b659de7..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Robot-Essentials - Basic code for any Ridgebotics robot project \ No newline at end of file diff --git a/WPILib-License.md b/WPILib-License.md index e7cd597..645e542 100644 --- a/WPILib-License.md +++ b/WPILib-License.md @@ -1,24 +1,24 @@ -Copyright (c) 2009-2024 FIRST and other WPILib contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of FIRST, WPILib, nor the names of other WPILib - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY FIRST AND OTHER WPILIB CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY NONINFRINGEMENT AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL FIRST OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2009-2024 FIRST and other WPILib contributors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of FIRST, WPILib, nor the names of other WPILib + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY FIRST AND OTHER WPILIB CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY NONINFRINGEMENT AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL FIRST OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/build.gradle b/build.gradle index e8723ce..a8ab99f 100644 --- a/build.gradle +++ b/build.gradle @@ -1,124 +1,125 @@ -plugins { - id "java" - id "edu.wpi.first.GradleRIO" version "2025.3.2" - id "com.peterabeles.gversion" version "1.10" -} - -java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 -} - -def ROBOT_MAIN_CLASS = "frc4388.robot.Main" - -// Define my targets (RoboRIO) and artifacts (deployable files) -// This is added by GradleRIO's backing project DeployUtils. -deploy { - targets { - roborio(getTargetTypeClass('RoboRIO')) { - // Team number is loaded either from the .wpilib/wpilib_preferences.json - // or from command line. If not found an exception will be thrown. - // You can use getTeamOrDefault(team) instead of getTeamNumber if you - // want to store a team number in this file. - team = project.frc.getTeamNumber() - debug = project.frc.getDebugOrDefault(false) - - artifacts { - // First part is artifact name, 2nd is artifact type - // getTargetTypeClass is a shortcut to get the class type using a string - - frcJava(getArtifactTypeClass('FRCJavaArtifact')) { - } - - // Static files artifact - frcStaticFileDeploy(getArtifactTypeClass('FileTreeArtifact')) { - files = project.fileTree('src/main/deploy') - directory = '/home/lvuser/deploy' - deleteOldFiles = false // Change to true to delete files on roboRIO that no - // longer exist in deploy directory of this project - } - } - } - } -} - -def deployArtifact = deploy.targets.roborio.artifacts.frcJava - -// Set to true to use debug for JNI. -wpi.java.debugJni = false - -// Set this to true to enable desktop support. -def includeDesktopSupport = false - -// Defining my dependencies. In this case, WPILib (+ friends), and vendor libraries. -// Also defines JUnit 5. -dependencies { - annotationProcessor wpi.java.deps.wpilibAnnotations() - implementation wpi.java.deps.wpilib() - implementation wpi.java.vendor.java() - - roborioDebug wpi.java.deps.wpilibJniDebug(wpi.platforms.roborio) - roborioDebug wpi.java.vendor.jniDebug(wpi.platforms.roborio) - - roborioRelease wpi.java.deps.wpilibJniRelease(wpi.platforms.roborio) - roborioRelease wpi.java.vendor.jniRelease(wpi.platforms.roborio) - - nativeDebug wpi.java.deps.wpilibJniDebug(wpi.platforms.desktop) - nativeDebug wpi.java.vendor.jniDebug(wpi.platforms.desktop) - simulationDebug wpi.sim.enableDebug() - - nativeRelease wpi.java.deps.wpilibJniRelease(wpi.platforms.desktop) - nativeRelease wpi.java.vendor.jniRelease(wpi.platforms.desktop) - simulationRelease wpi.sim.enableRelease() - - 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) - annotationProcessor "org.littletonrobotics.akit:akit-autolog:$akitJson.version" -} - -test { - useJUnitPlatform() - systemProperty 'junit.jupiter.extensions.autodetection.enabled', 'true' -} - -// Simulation configuration (e.g. environment variables). -wpi.sim.addGui().defaultEnabled = true -wpi.sim.addDriverstation() - -// Setting up my Jar File. In this case, adding all libraries into the main jar ('fat jar') -// in order to make them all available at runtime. Also adding the manifest so WPILib -// knows where to look for our Robot Class. -jar { - from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } - from sourceSets.main.allSource - manifest edu.wpi.first.gradlerio.GradleRIOPlugin.javaManifest(ROBOT_MAIN_CLASS) - duplicatesStrategy = DuplicatesStrategy.INCLUDE -} - -// Configure jar and deploy tasks -deployArtifact.jarTask = jar -wpi.java.configureExecutableTasks(jar) -wpi.java.configureTestTasks(test) - -// Configure string concat to always inline compile -tasks.withType(JavaCompile) { - options.compilerArgs.add '-XDstringConcat=inline' -} - -task(replayWatch, type: JavaExec) { - mainClass = "org.littletonrobotics.junction.ReplayWatch" - classpath = sourceSets.main.runtimeClasspath -} - -// Create version file -project.compileJava.dependsOn(createVersionFile) -gversion { - srcDir = "src/main/java/" - classPackage = "frc4388.robot.constants" - className = "BuildConstants" - dateFormat = "yyyy-MM-dd HH:mm:ss z" - timeZone = "America/Denver" - indent = " " -} +plugins { + id "java" + id "edu.wpi.first.GradleRIO" version "2026.1.1-beta-1" + id "com.peterabeles.gversion" version "1.10" +} + +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} + +def ROBOT_MAIN_CLASS = "frc4388.robot.Main" + +// Define my targets (RoboRIO) and artifacts (deployable files) +// This is added by GradleRIO's backing project DeployUtils. +deploy { + targets { + roborio(getTargetTypeClass('RoboRIO')) { + // Team number is loaded either from the .wpilib/wpilib_preferences.json + // or from command line. If not found an exception will be thrown. + // You can use getTeamOrDefault(team) instead of getTeamNumber if you + // want to store a team number in this file. + team = project.frc.getTeamNumber() + debug = project.frc.getDebugOrDefault(false) + + artifacts { + // First part is artifact name, 2nd is artifact type + // getTargetTypeClass is a shortcut to get the class type using a string + + frcJava(getArtifactTypeClass('FRCJavaArtifact')) { + } + + // Static files artifact + frcStaticFileDeploy(getArtifactTypeClass('FileTreeArtifact')) { + files = project.fileTree('src/main/deploy') + directory = '/home/lvuser/deploy' + deleteOldFiles = false // Change to true to delete files on roboRIO that no + // longer exist in deploy directory of this project + } + } + } + } +} + +def deployArtifact = deploy.targets.roborio.artifacts.frcJava + +// Set to true to use debug for all targets including JNI, which will drastically impact +// performance. +wpi.java.debugJni = false + +// Set this to true to enable desktop support. +def includeDesktopSupport = true + +// Defining my dependencies. In this case, WPILib (+ friends), and vendor libraries. +// Also defines JUnit 5. +dependencies { + annotationProcessor wpi.java.deps.wpilibAnnotations() + implementation wpi.java.deps.wpilib() + implementation wpi.java.vendor.java() + + roborioDebug wpi.java.deps.wpilibJniDebug(wpi.platforms.roborio) + roborioDebug wpi.java.vendor.jniDebug(wpi.platforms.roborio) + + roborioRelease wpi.java.deps.wpilibJniRelease(wpi.platforms.roborio) + roborioRelease wpi.java.vendor.jniRelease(wpi.platforms.roborio) + + nativeDebug wpi.java.deps.wpilibJniDebug(wpi.platforms.desktop) + nativeDebug wpi.java.vendor.jniDebug(wpi.platforms.desktop) + simulationDebug wpi.sim.enableDebug() + + nativeRelease wpi.java.deps.wpilibJniRelease(wpi.platforms.desktop) + nativeRelease wpi.java.vendor.jniRelease(wpi.platforms.desktop) + simulationRelease wpi.sim.enableRelease() + + 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) + annotationProcessor "org.littletonrobotics.akit:akit-autolog:$akitJson.version" +} + +test { + useJUnitPlatform() + systemProperty 'junit.jupiter.extensions.autodetection.enabled', 'true' +} + +// Simulation configuration (e.g. environment variables). +wpi.sim.addGui().defaultEnabled = true +wpi.sim.addDriverstation() + +// Setting up my Jar File. In this case, adding all libraries into the main jar ('fat jar') +// in order to make them all available at runtime. Also adding the manifest so WPILib +// knows where to look for our Robot Class. +jar { + from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } + from sourceSets.main.allSource + manifest edu.wpi.first.gradlerio.GradleRIOPlugin.javaManifest(ROBOT_MAIN_CLASS) + duplicatesStrategy = DuplicatesStrategy.INCLUDE +} + +// Configure jar and deploy tasks +deployArtifact.jarTask = jar +wpi.java.configureExecutableTasks(jar) +wpi.java.configureTestTasks(test) + +// Configure string concat to always inline compile +tasks.withType(JavaCompile) { + options.compilerArgs.add '-XDstringConcat=inline' +} + +task(replayWatch, type: JavaExec) { + mainClass = "org.littletonrobotics.junction.ReplayWatch" + classpath = sourceSets.main.runtimeClasspath +} + +// Create version file +project.compileJava.dependsOn(createVersionFile) +gversion { + srcDir = "src/main/java/" + classPackage = "frc4388.robot.constants" + className = "BuildConstants" + dateFormat = "yyyy-MM-dd HH:mm:ss z" + timeZone = "America/Denver" + indent = " " +} diff --git a/networktables.json b/networktables.json deleted file mode 100644 index fe51488..0000000 --- a/networktables.json +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/settings.gradle b/settings.gradle index 7cab49b..25f6f6e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,30 +1,30 @@ -import org.gradle.internal.os.OperatingSystem - -pluginManagement { - repositories { - mavenLocal() - gradlePluginPortal() - String frcYear = '2025' - File frcHome - if (OperatingSystem.current().isWindows()) { - String publicFolder = System.getenv('PUBLIC') - if (publicFolder == null) { - publicFolder = "C:\\Users\\Public" - } - def homeRoot = new File(publicFolder, "wpilib") - frcHome = new File(homeRoot, frcYear) - } else { - def userFolder = System.getProperty("user.home") - def homeRoot = new File(userFolder, "wpilib") - frcHome = new File(homeRoot, frcYear) - } - def frcHomeMaven = new File(frcHome, 'maven') - maven { - name 'frcHome' - url frcHomeMaven - } - } -} - -Properties props = System.getProperties(); -props.setProperty("org.gradle.internal.native.headers.unresolved.dependencies.ignore", "true"); +import org.gradle.internal.os.OperatingSystem + +pluginManagement { + repositories { + mavenLocal() + gradlePluginPortal() + String frcYear = '2026' + File frcHome + if (OperatingSystem.current().isWindows()) { + String publicFolder = System.getenv('PUBLIC') + if (publicFolder == null) { + publicFolder = "C:\\Users\\Public" + } + def homeRoot = new File(publicFolder, "wpilib") + frcHome = new File(homeRoot, frcYear) + } else { + def userFolder = System.getProperty("user.home") + def homeRoot = new File(userFolder, "wpilib") + frcHome = new File(homeRoot, frcYear) + } + def frcHomeMaven = new File(frcHome, 'maven') + maven { + name = 'frcHome' + url = frcHomeMaven + } + } +} + +Properties props = System.getProperties(); +props.setProperty("org.gradle.internal.native.headers.unresolved.dependencies.ignore", "true"); diff --git a/simgui-ds.json b/simgui-ds.json deleted file mode 100644 index 47517dc..0000000 --- a/simgui-ds.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "System Joysticks": { - "window": { - "enabled": false - } - }, - "keyboardJoysticks": [ - { - "axisConfig": [ - { - "decKey": 65, - "incKey": 68 - }, - { - "decKey": 87, - "incKey": 83 - }, - { - "decKey": 69, - "decayRate": 0.0, - "incKey": 82, - "keyRate": 0.009999999776482582 - } - ], - "axisCount": 3, - "buttonCount": 4, - "buttonKeys": [ - 90, - 88, - 67, - 86 - ], - "povConfig": [ - { - "key0": 328, - "key135": 323, - "key180": 322, - "key225": 321, - "key270": 324, - "key315": 327, - "key45": 329, - "key90": 326 - } - ], - "povCount": 1 - }, - { - "axisConfig": [ - { - "decKey": 74, - "incKey": 76 - }, - { - "decKey": 73, - "incKey": 75 - } - ], - "axisCount": 2, - "buttonCount": 4, - "buttonKeys": [ - 77, - 44, - 46, - 47 - ], - "povCount": 0 - }, - { - "axisConfig": [ - { - "decKey": 263, - "incKey": 262 - }, - { - "decKey": 265, - "incKey": 264 - } - ], - "axisCount": 2, - "buttonCount": 6, - "buttonKeys": [ - 260, - 268, - 266, - 261, - 269, - 267 - ], - "povCount": 0 - }, - { - "axisCount": 0, - "buttonCount": 0, - "povCount": 0 - } - ], - "robotJoysticks": [ - { - "guid": "030000005e040000ea0200000b050000", - "useGamepad": true - }, - { - "useGamepad": true - }, - {}, - {}, - {}, - { - "useGamepad": true - } - ] -} diff --git a/src/main/java/frc4388/robot/RobotContainer.java b/src/main/java/frc4388/robot/RobotContainer.java index 4d81a20..8569eb3 100644 --- a/src/main/java/frc4388/robot/RobotContainer.java +++ b/src/main/java/frc4388/robot/RobotContainer.java @@ -37,12 +37,12 @@ import edu.wpi.first.wpilibj2.command.ConditionalCommand; import frc4388.utility.controller.VirtualController; import frc4388.robot.commands.MoveForTimeCommand; import frc4388.robot.commands.MoveUntilSuply; -import frc4388.robot.commands.alignment.DriveToReef; +// import frc4388.robot.commands.alignment.DriveToReef; import frc4388.robot.commands.alignment.DriveUntilLiDAR; import frc4388.robot.commands.alignment.LidarAlign; -import frc4388.robot.commands.wait.waitElevatorRefrence; -import frc4388.robot.commands.wait.waitEndefectorRefrence; -import frc4388.robot.commands.wait.waitFeedCoral; +// import frc4388.robot.commands.wait.waitElevatorRefrence; +// import frc4388.robot.commands.wait.waitEndefectorRefrence; +// import frc4388.robot.commands.wait.waitFeedCoral; import frc4388.robot.commands.wait.waitSupplier; import frc4388.robot.constants.Constants; import frc4388.robot.constants.Constants.AutoConstants; @@ -55,15 +55,15 @@ import com.pathplanner.lib.commands.PathPlannerAuto; // Subsystems import frc4388.robot.subsystems.LED; -import frc4388.robot.subsystems.elevator.Elevator; -import frc4388.robot.subsystems.elevator.Elevator.CoordinationState; +// import frc4388.robot.subsystems.elevator.Elevator; +// import frc4388.robot.subsystems.elevator.Elevator.CoordinationState; import frc4388.robot.subsystems.lidar.LiDAR; import frc4388.robot.subsystems.swerve.SwerveDrive; import frc4388.robot.subsystems.vision.Vision; // Utilites import frc4388.utility.DeferredBlock; import frc4388.utility.compute.TimesNegativeOne; -import frc4388.utility.compute.ReefPositionHelper.Side; +// import frc4388.utility.compute.ReefPositionHelper.Side; /** * This class is where the bulk of the robot should be declared. Since @@ -79,13 +79,13 @@ public class RobotContainer { /* Subsystems */ public final LED m_robotLED = new LED(); - public final Vision m_vision = new Vision(m_robotMap.leftCamera, m_robotMap.rightCamera); - public final Elevator m_robotElevator = new Elevator(m_robotMap.elevatorIO, m_robotLED); + public final Vision m_vision = new Vision(); + // public final Elevator m_robotElevator = new Elevator(m_robotMap.elevatorIO, m_robotLED); public final SwerveDrive m_robotSwerveDrive = new SwerveDrive(m_robotMap.swerveDrivetrain, m_vision); // public final SwerveDrive m_robotSwerveDrive = new SwerveDrive(m_robotMap.swerveDrivetrain); - public final LiDAR reefLidar = new LiDAR(m_robotMap.reefLidar, "Reef"); - public final LiDAR reverseLidar = new LiDAR(m_robotMap.reverseLidar, "Reverse"); + // public final LiDAR reefLidar = new LiDAR(m_robotMap.reefLidar, "Reef"); + // public final LiDAR reverseLidar = new LiDAR(m_robotMap.reverseLidar, "Reverse"); /* Controllers */ diff --git a/src/main/java/frc4388/robot/RobotMap.java b/src/main/java/frc4388/robot/RobotMap.java index 01cdb68..49e39c1 100644 --- a/src/main/java/frc4388/robot/RobotMap.java +++ b/src/main/java/frc4388/robot/RobotMap.java @@ -17,12 +17,12 @@ import com.ctre.phoenix6.hardware.CANcoder; import com.ctre.phoenix6.swerve.SwerveDrivetrain; import edu.wpi.first.math.geometry.Rotation2d; import edu.wpi.first.wpilibj.DigitalInput; -import frc4388.robot.constants.Constants.ElevatorConstants; +//import frc4388.robot.constants.Constants.ElevatorConstants; import frc4388.robot.constants.Constants.LiDARConstants; import frc4388.robot.constants.Constants.SimConstants; import frc4388.robot.constants.Constants.VisionConstants; -import frc4388.robot.subsystems.elevator.ElevatorIO; -import frc4388.robot.subsystems.elevator.ElevatorReal; +// import frc4388.robot.subsystems.elevator.ElevatorIO; +// import frc4388.robot.subsystems.elevator.ElevatorReal; import frc4388.robot.subsystems.lidar.LiDAR; import frc4388.robot.subsystems.lidar.LidarIO; import frc4388.robot.subsystems.lidar.LidarReal; @@ -44,13 +44,13 @@ public class RobotMap { // private Pigeon2 m_pigeon2 = new Pigeon2(SwerveDriveConstants.IDs.DRIVE_PIGEON.id); // public RobotGyro gyro = new RobotGyro(m_pigeon2); - public final VisionIO leftCamera; - public final VisionIO rightCamera; + // public final VisionIO leftCamera; + // public final VisionIO rightCamera; // public final LiDAR lidar = new - public final LidarIO reefLidar; - public final LidarIO reverseLidar; + // public final LidarIO reefLidar; + // public final LidarIO reverseLidar; /* LED Subsystem */ @@ -59,25 +59,25 @@ public class RobotMap { /* Swreve Drive Subsystem */ public final SwerveIO swerveDrivetrain; - /* Elevator Subsystem */ - public final ElevatorIO elevatorIO; + // /* Elevator Subsystem */ + // public final ElevatorIO elevatorIO; public RobotMap(SimConstants.Mode mode) { switch (mode) { case REAL: - // Configure cameras - PhotonCamera leftCameraReal = new PhotonCamera(VisionConstants.LEFT_CAMERA_NAME); - PhotonCamera rightCameraReal = new PhotonCamera(VisionConstants.RIGHT_CAMERA_NAME); + // // Configure cameras + // PhotonCamera leftCameraReal = new PhotonCamera(VisionConstants.LEFT_CAMERA_NAME); + // PhotonCamera rightCameraReal = new PhotonCamera(VisionConstants.RIGHT_CAMERA_NAME); - leftCamera = new VisionReal(leftCameraReal, VisionConstants.LEFT_CAMERA_POS); ; - rightCamera = new VisionReal(rightCameraReal, VisionConstants.RIGHT_CAMERA_POS); + // leftCamera = new VisionReal(leftCameraReal, VisionConstants.LEFT_CAMERA_POS); ; + // rightCamera = new VisionReal(rightCameraReal, VisionConstants.RIGHT_CAMERA_POS); - FaultPhotonCamera.addDevice(leftCameraReal, "Left Camera"); - FaultPhotonCamera.addDevice(rightCameraReal , "Right Camera"); + // FaultPhotonCamera.addDevice(leftCameraReal, "Left Camera"); + // FaultPhotonCamera.addDevice(rightCameraReal , "Right Camera"); - // Configure LiDAR - reefLidar = new LidarReal(LiDARConstants.REEF_LIDAR_DIO_CHANNEL); - reverseLidar = new LidarReal(LiDARConstants.REVERSE_LIDAR_DIO_CHANNEL); + // // Configure LiDAR + // reefLidar = new LidarReal(LiDARConstants.REEF_LIDAR_DIO_CHANNEL); + // reverseLidar = new LidarReal(LiDARConstants.REVERSE_LIDAR_DIO_CHANNEL); // Configure swerve drive train SwerveDrivetrain swerveDrivetrainReal = new SwerveDrivetrain (TalonFX::new, TalonFX::new, CANcoder::new, @@ -90,23 +90,23 @@ public class RobotMap { // Configure elevator - TalonFX elevator = new TalonFX(ElevatorConstants.ELEVATOR_ID.id); - TalonFX endeffector = new TalonFX(ElevatorConstants.ENDEFFECTOR_ID.id); + // TalonFX elevator = new TalonFX(ElevatorConstants.ELEVATOR_ID.id); + // TalonFX endeffector = new TalonFX(ElevatorConstants.ENDEFFECTOR_ID.id); - DigitalInput basinLimitSwitch = new DigitalInput(ElevatorConstants.BASIN_LIMIT_SWITCH); - DigitalInput endeffectorLimitSwitch = new DigitalInput(ElevatorConstants.ENDEFFECTOR_LIMIT_SWITCH); - DigitalInput IRIntakeBeam = new DigitalInput(ElevatorConstants.INTAKE_LIMIT_SWITCH); + // DigitalInput basinLimitSwitch = new DigitalInput(ElevatorConstants.BASIN_LIMIT_SWITCH); + // DigitalInput endeffectorLimitSwitch = new DigitalInput(ElevatorConstants.ENDEFFECTOR_LIMIT_SWITCH); + // DigitalInput IRIntakeBeam = new DigitalInput(ElevatorConstants.INTAKE_LIMIT_SWITCH); - elevatorIO = new ElevatorReal(elevator, endeffector, basinLimitSwitch, endeffectorLimitSwitch, IRIntakeBeam); + // elevatorIO = new ElevatorReal(elevator, endeffector, basinLimitSwitch, endeffectorLimitSwitch, IRIntakeBeam); // Fault FaultPidgeon2.addDevice(swerveDrivetrainReal.getPigeon2(), "Gyro"); - FaultTalonFX.addDevice(elevator, "Elevator"); - FaultTalonFX.addDevice(endeffector, "Endeffector"); + // FaultTalonFX.addDevice(elevator, "Elevator"); + // FaultTalonFX.addDevice(endeffector, "Endeffector"); FaultTalonFX.addDevice(swerveDrivetrainReal.getModule(0).getDriveMotor(), "Module 0 Drive"); FaultTalonFX.addDevice(swerveDrivetrainReal.getModule(0).getSteerMotor(), "Module 0 Steer"); @@ -125,12 +125,12 @@ public class RobotMap { // case SIM: // break; default: - leftCamera = new VisionIO() {}; - rightCamera = new VisionIO() {}; - reefLidar = new LidarIO() {}; - reverseLidar = new LidarIO() {}; + // leftCamera = new VisionIO() {}; + // rightCamera = new VisionIO() {}; + // reefLidar = new LidarIO() {}; + // reverseLidar = new LidarIO() {}; swerveDrivetrain = new SwerveIO() {}; - elevatorIO = new ElevatorIO() {}; + // elevatorIO = new ElevatorIO() {}; break; } } diff --git a/src/main/java/frc4388/robot/commands/Autos/neoPlaybackChooser.java b/src/main/java/frc4388/robot/commands/Autos/neoPlaybackChooser.java index a069786..f3d2987 100644 --- a/src/main/java/frc4388/robot/commands/Autos/neoPlaybackChooser.java +++ b/src/main/java/frc4388/robot/commands/Autos/neoPlaybackChooser.java @@ -1,4 +1,4 @@ -package frc4388.robot.commands.autos; +package frc4388.robot.commands.Autos; // package frc4388.robot.commands.Autos; // import java.io.File; diff --git a/src/main/java/frc4388/robot/commands/Swerve/RotateToAngle.java b/src/main/java/frc4388/robot/commands/Swerve/RotateToAngle.java index 50e616c..a3610d1 100644 --- a/src/main/java/frc4388/robot/commands/Swerve/RotateToAngle.java +++ b/src/main/java/frc4388/robot/commands/Swerve/RotateToAngle.java @@ -2,7 +2,7 @@ // Open Source Software; you can modify and/or share it under the terms of // the WPILib BSD license file in the root directory of this project. -package frc4388.robot.commands.swerve; +package frc4388.robot.commands.Swerve; import edu.wpi.first.math.geometry.Translation2d; import frc4388.robot.commands.PID; diff --git a/src/main/java/frc4388/robot/commands/Swerve/neoJoystickPlayback.java b/src/main/java/frc4388/robot/commands/Swerve/neoJoystickPlayback.java index bff5105..ba3c6ce 100644 --- a/src/main/java/frc4388/robot/commands/Swerve/neoJoystickPlayback.java +++ b/src/main/java/frc4388/robot/commands/Swerve/neoJoystickPlayback.java @@ -1,4 +1,4 @@ -package frc4388.robot.commands.swerve; +package frc4388.robot.commands.Swerve; import java.io.FileInputStream; import java.util.ArrayList; diff --git a/src/main/java/frc4388/robot/commands/Swerve/neoJoystickRecorder.java b/src/main/java/frc4388/robot/commands/Swerve/neoJoystickRecorder.java index 4cf3159..9aa9283 100644 --- a/src/main/java/frc4388/robot/commands/Swerve/neoJoystickRecorder.java +++ b/src/main/java/frc4388/robot/commands/Swerve/neoJoystickRecorder.java @@ -1,4 +1,4 @@ -package frc4388.robot.commands.swerve; +package frc4388.robot.commands.Swerve; import java.io.FileOutputStream; import java.util.ArrayList; diff --git a/src/main/java/frc4388/robot/commands/alignment/DriveToReef.java b/src/main/java/frc4388/robot/commands/alignment/DriveToReef.java deleted file mode 100644 index 6a11e85..0000000 --- a/src/main/java/frc4388/robot/commands/alignment/DriveToReef.java +++ /dev/null @@ -1,188 +0,0 @@ -package frc4388.robot.commands.alignment; - -import edu.wpi.first.math.geometry.Pose2d; -import edu.wpi.first.math.geometry.Translation2d; -import edu.wpi.first.math.util.Units; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; -import edu.wpi.first.wpilibj2.command.Command; -import frc4388.robot.constants.Constants.AutoConstants; -import frc4388.robot.subsystems.swerve.SwerveDrive; -import frc4388.robot.subsystems.vision.Vision; -import frc4388.utility.compute.ReefPositionHelper; -import frc4388.utility.compute.TimesNegativeOne; -import frc4388.utility.compute.ReefPositionHelper.Side; -import frc4388.utility.structs.Gains; - -public class DriveToReef extends Command { - - - // private Translation2d translation2d= new Translation2d(14.579471999999997,0.24587199999999998); - // private Translation2d translation2d= new Translation2d(16.579342-0.15,5.547867999999999); - - private PID xPID = new PID(AutoConstants.XY_GAINS, 0); - private PID yPID = new PID(AutoConstants.XY_GAINS, 0); - // private PID rotPID = new PID(AutoConstants.ROT_GAINS, 0); - private Pose2d targetpos; - - SwerveDrive swerveDrive; - Vision vision; - double distance; - Side side; - boolean waitVelocityZero; - - /** - * Command to drive robot to position. - * @param SwerveDrive m_robotSwerveDrive - */ - - public DriveToReef(SwerveDrive swerveDrive, Vision vision, double distance, Side side, boolean waitVelocityZero) { - this.swerveDrive = swerveDrive; - this.vision = vision; - this.distance = distance; - this.side = side; - this.waitVelocityZero = waitVelocityZero && false; - addRequirements(swerveDrive); - } - - - public static double tagRelativeXError = -1; - private static void setTagRelativeXError(double val){ - tagRelativeXError = val; - } - - @Override - public void initialize() { - xPID.initialize(); - yPID.initialize(); - this.targetpos = ReefPositionHelper.getNearestPosition( - this.vision.getPose2d(), - side, - Units.inchesToMeters(AutoConstants.X_OFFSET_TRIM.get()), - distance + Units.inchesToMeters(AutoConstants.Y_OFFSET_TRIM.get()) - ); - } - - double xerr; - double yerr; - double roterr; - - double xoutput; - double youtput; - double rotoutput; - - @Override - public void execute() { - xerr = TimesNegativeOne.invert(targetpos.getX() - vision.getPose2d().getX(), TimesNegativeOne.XAxis); - yerr = TimesNegativeOne.invert(targetpos.getY() - vision.getPose2d().getY(), !TimesNegativeOne.YAxis); - // xerr = targetpos.getX() - vision.getPose2d().getX(); - // yerr = targetpos.getX() - vision.getPose2d().getY(); - - // roterr = TimesNegativeOne.invert(targetpos.getRotation().getDegrees() - vision.getPose2d().getRotation().getDegrees(), TimesNegativeOne.isRed); - - roterr = ((targetpos.getRotation().getDegrees() - vision.getPose2d().getRotation().getDegrees())); - - if(roterr > 180){ - roterr -= 360; - }else if(roterr < -180){ - roterr += 360; - } - - // SmartDashboard.putNumber("Rotational PID target", targetpos.getRotation().getDegrees()); - // SmartDashboard.putNumber("Rotational PID position", vision.getPose2d().getRotation().getDegrees()); - // SmartDashboard.putNumber("Rotational PID error", roterr); - - SmartDashboard.putNumber("PID X Error", xerr); - SmartDashboard.putNumber("PID Y Error", yerr); - SmartDashboard.putNumber("PID Rot Error", roterr); - - xoutput = xPID.update(xerr); - youtput = yPID.update(yerr); - // rotoutput = rotPID.update(roterr); - - xoutput *= Math.abs(xerr) < AutoConstants.XY_TOLERANCE ? 0 : 1; - youtput *= Math.abs(yerr) < AutoConstants.XY_TOLERANCE ? 0 : 1; - // rotoutput *= Math.abs(roterr) < AutoConstants.ROT_TOLERANCE ? 0 : 1; - - - - Translation2d leftStick = new Translation2d( - Math.max(Math.min(-youtput, 1), -1), - Math.max(Math.min(-xoutput, 1), -1) - // 0,0 - ); - - // Translation2d rightStick = new Translation2d( - // Math.max(Math.min(rotoutput, 1), -1), - // 0 - // ); - - setTagRelativeXError( - new Translation2d(xerr, yerr).getAngle() - .rotateBy(targetpos.getRotation()) - .getCos()); - - swerveDrive.driveRelativeAngle(leftStick, targetpos.getRotation()); - // swerveDrive.driveWithInputOrientation(leftStick, rightStick, true); - } - - @Override - public final boolean isFinished() { - boolean finished = ( - (Math.abs(xerr) < AutoConstants.XY_TOLERANCE || Math.abs(xoutput) <= AutoConstants.MIN_XY_PID_OUTPUT) && - (Math.abs(yerr) < AutoConstants.XY_TOLERANCE || Math.abs(youtput) <= AutoConstants.MIN_XY_PID_OUTPUT) && - (Math.abs(roterr) < AutoConstants.ROT_TOLERANCE) && - (!waitVelocityZero || swerveDrive.lastOdomSpeed < AutoConstants.VELOCITY_THRESHHOLD) - ); - // System.out.println(finished); - - if(finished) - swerveDrive.softStop(); - - return finished; - // this statement is a boolean in and of itself - } - - - - - - - - - - - - - - - private class PID { - protected Gains gains; - private double output = 0; - - - /** Creates a new PelvicInflammatoryDisease. */ - public PID(Gains gains, double tolerance) { - this.gains = gains; - } - - // Called when the command is initially scheduled. - public final void initialize() { - output = 0; - } - - private double prevError, cumError = 0; - - // Called every time the scheduler runs while the command is scheduled. - public double update(double error) { - cumError += error * .02; // 20 ms - double delta = error - prevError; - - output = error * gains.kP; - output += cumError * gains.kI; - output += delta * gains.kD; - output += gains.kF; - - return output; - } - } -} diff --git a/src/main/java/frc4388/robot/commands/alignment/LidarAlign.java b/src/main/java/frc4388/robot/commands/alignment/LidarAlign.java index 19efd85..d9b8f9f 100644 --- a/src/main/java/frc4388/robot/commands/alignment/LidarAlign.java +++ b/src/main/java/frc4388/robot/commands/alignment/LidarAlign.java @@ -41,7 +41,7 @@ public class LidarAlign extends Command { this.currentFinderTick = 0; this.speed = 0.4; // TODO: find good speed for this this.foundReef = false; - this.headedRight = (DriveToReef.tagRelativeXError < 0); + //this.headedRight = (DriveToReef.tagRelativeXError < 0); this.additionalDistance = 0; this.bounces = 0; } diff --git a/src/main/java/frc4388/robot/commands/wait/waitElevatorRefrence.java b/src/main/java/frc4388/robot/commands/wait/waitElevatorRefrence.java deleted file mode 100644 index 7d2ec77..0000000 --- a/src/main/java/frc4388/robot/commands/wait/waitElevatorRefrence.java +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -package frc4388.robot.commands.wait; - -import edu.wpi.first.wpilibj2.command.Command; -import frc4388.robot.subsystems.elevator.Elevator; - -/* You should consider using the more terse Command factories API instead https://docs.wpilib.org/en/stable/docs/software/commandbased/organizing-command-based.html#defining-commands */ -public class waitElevatorRefrence extends Command { - /** Creates a new waitElevatorRefrence. */ - private Elevator elevator; - public waitElevatorRefrence(Elevator elevator) { - this.elevator = elevator; - // Use addRequirements() here to declare subsystem dependencies. - } - - // Called when the command is initially scheduled. - @Override - public void initialize() {} - - // Called every time the scheduler runs while the command is scheduled. - @Override - public void execute() {} - - // Called once the command ends or is interrupted. - @Override - public void end(boolean interrupted) {} - - // Returns true when the command should end. - @Override - public boolean isFinished() { - return elevator.elevatorAtReference(); - } -} diff --git a/src/main/java/frc4388/robot/commands/wait/waitEndefectorRefrence.java b/src/main/java/frc4388/robot/commands/wait/waitEndefectorRefrence.java deleted file mode 100644 index 1ff48cd..0000000 --- a/src/main/java/frc4388/robot/commands/wait/waitEndefectorRefrence.java +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -package frc4388.robot.commands.wait; - -import edu.wpi.first.wpilibj2.command.Command; -import frc4388.robot.subsystems.elevator.Elevator; - -/* You should consider using the more terse Command factories API instead https://docs.wpilib.org/en/stable/docs/software/commandbased/organizing-command-based.html#defining-commands */ -public class waitEndefectorRefrence extends Command { - /** Creates a new waitElevatorRefrence. */ - private Elevator elevator; - public waitEndefectorRefrence(Elevator elevator) { - this.elevator = elevator; - // Use addRequirements() here to declare subsystem dependencies. - } - - // Called when the command is initially scheduled. - @Override - public void initialize() {} - - // Called every time the scheduler runs while the command is scheduled. - @Override - public void execute() {} - - // Called once the command ends or is interrupted. - @Override - public void end(boolean interrupted) {} - - // Returns true when the command should end. - @Override - public boolean isFinished() { - return elevator.endeffectorAtReference(); - } -} diff --git a/src/main/java/frc4388/robot/commands/wait/waitFeedCoral.java b/src/main/java/frc4388/robot/commands/wait/waitFeedCoral.java deleted file mode 100644 index 992879a..0000000 --- a/src/main/java/frc4388/robot/commands/wait/waitFeedCoral.java +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -package frc4388.robot.commands.wait; - -import edu.wpi.first.wpilibj2.command.Command; -import frc4388.robot.subsystems.elevator.Elevator; - -/* You should consider using the more terse Command factories API instead https://docs.wpilib.org/en/stable/docs/software/commandbased/organizing-command-based.html#defining-commands */ -public class waitFeedCoral extends Command { - /** Creates a new waitElevatorRefrence. */ - private Elevator elevator; - public waitFeedCoral(Elevator elevator) { - this.elevator = elevator; - // Use addRequirements() here to declare subsystem dependencies. - } - - // Called when the command is initially scheduled. - @Override - public void initialize() {} - - // Called every time the scheduler runs while the command is scheduled. - @Override - public void execute() {} - - // Called once the command ends or is interrupted. - @Override - public void end(boolean interrupted) {} - - // Returns true when the command should end. - @Override - public boolean isFinished() { - return elevator.hasCoral(); - } -} diff --git a/src/main/java/frc4388/robot/constants/BuildConstants.java b/src/main/java/frc4388/robot/constants/BuildConstants.java index 5aeda6b..b45027b 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 = "2025RidgeScape"; + public static final String MAVEN_NAME = "2026KPopRobotHunters"; public static final String VERSION = "unspecified"; - public static final int GIT_REVISION = 173; - public static final String GIT_SHA = "2b7bb1224195b9e001e60b895ee04d63abdfc513"; - public static final String GIT_DATE = "2025-07-17 09:15:19 MDT"; - public static final String GIT_BRANCH = "advantagekit"; - public static final String BUILD_DATE = "2025-07-17 11:55:31 MDT"; - public static final long BUILD_UNIX_TIME = 1752774931371L; - public static final int DIRTY = 1; + 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; private BuildConstants(){} } diff --git a/src/main/java/frc4388/robot/constants/Constants.java b/src/main/java/frc4388/robot/constants/Constants.java index 05bfe77..35170c2 100644 --- a/src/main/java/frc4388/robot/constants/Constants.java +++ b/src/main/java/frc4388/robot/constants/Constants.java @@ -69,6 +69,9 @@ public final class Constants { public static final double MIN_ROT_PID_OUTPUT = 0.0; public static final double VELOCITY_THRESHHOLD = 0.01; + + + public static final double STOP_VELOCITY = 0.; } diff --git a/src/main/java/frc4388/robot/subsystems/swerve/SwerveDriveConstants.java b/src/main/java/frc4388/robot/subsystems/swerve/SwerveDriveConstants.java index 35b02db..f3bbe9f 100644 --- a/src/main/java/frc4388/robot/subsystems/swerve/SwerveDriveConstants.java +++ b/src/main/java/frc4388/robot/subsystems/swerve/SwerveDriveConstants.java @@ -20,8 +20,9 @@ import com.ctre.phoenix6.swerve.SwerveModuleConstants.SteerFeedbackType; import com.ctre.phoenix6.swerve.SwerveModuleConstants.SteerMotorArrangement; import com.ctre.phoenix6.swerve.SwerveModuleConstantsFactory; -import edu.wpi.first.units.measure.Angle; import edu.wpi.first.units.measure.Distance; +import edu.wpi.first.units.measure.Angle; +//import edu.wpi.first.units.measure.measure.Distance; import frc4388.utility.status.CanDevice; import frc4388.utility.structs.Gains; diff --git a/src/main/java/frc4388/utility/compute/ReefPositionHelper.java b/src/main/java/frc4388/utility/compute/ReefPositionHelper.java deleted file mode 100644 index 73dc6a5..0000000 --- a/src/main/java/frc4388/utility/compute/ReefPositionHelper.java +++ /dev/null @@ -1,106 +0,0 @@ -package frc4388.utility.compute; - -import edu.wpi.first.math.geometry.Pose2d; -import edu.wpi.first.math.geometry.Rotation2d; -import edu.wpi.first.math.geometry.Translation2d; -import edu.wpi.first.math.util.Units; -import frc4388.robot.constants.Constants.AutoConstants; -import frc4388.robot.constants.Constants.FieldConstants; - -public class ReefPositionHelper { - public enum Side { - LEFT, - RIGHT, - CENTER, - FAR_LEFT - } - - public static final Pose2d[] RED_TAGS = { - FieldConstants.kTagLayout.getTagPose(6).get().toPose2d(), - FieldConstants.kTagLayout.getTagPose(7).get().toPose2d(), - FieldConstants.kTagLayout.getTagPose(8).get().toPose2d(), - FieldConstants.kTagLayout.getTagPose(9).get().toPose2d(), - FieldConstants.kTagLayout.getTagPose(10).get().toPose2d(), - FieldConstants.kTagLayout.getTagPose(11).get().toPose2d() - }; - - public static final Pose2d[] BLUE_TAGS = { - FieldConstants.kTagLayout.getTagPose(17).get().toPose2d(), - FieldConstants.kTagLayout.getTagPose(18).get().toPose2d(), - FieldConstants.kTagLayout.getTagPose(19).get().toPose2d(), - FieldConstants.kTagLayout.getTagPose(20).get().toPose2d(), - FieldConstants.kTagLayout.getTagPose(21).get().toPose2d(), - FieldConstants.kTagLayout.getTagPose(22).get().toPose2d() - }; - - public static double distanceTo(Pose2d first, Pose2d second){ - return Math.sqrt(Math.pow(first.getX() - second.getX(),2) + Math.pow(first.getY() - second.getY(),2)); - } - - - /* - * Function to loop through a list of tag locations to figure out closest one - */ - public static Pose2d getNearestTag(Pose2d[] locations, Pose2d position){ - if(locations.length <= 0) return new Pose2d(); - - Pose2d minPos = locations[0]; - double minDistance = distanceTo(position,minPos); - - for(int i = 1; i < locations.length; i++){ - double dist = distanceTo(locations[i],position); - if(dist < minDistance){ - minPos = locations[i]; - minDistance = dist; - } - } - - System.out.println(minPos.getRotation().getDegrees()); - - return minPos; - } - - /* - * Function to find closest tag location based on side - */ - public static Pose2d getNearestTag(Pose2d position) { - - if(TimesNegativeOne.isRed) - return getNearestTag(RED_TAGS, position); - else - return getNearestTag(BLUE_TAGS, position); - } - - public static Pose2d getNearestPosition(Pose2d position, Side side, double xtrim, double ydistance) { - return offset(getNearestTag(position), - getSide(side) + xtrim, - ydistance); - } - - public static double getSide(Side side){ - switch(side) { - case LEFT: - return -(AutoConstants.X_SCORING_POSITION_OFFSET); - case FAR_LEFT: - return -(AutoConstants.X_SCORING_POSITION_OFFSET+Units.inchesToMeters(8)); - case RIGHT: - return (AutoConstants.X_SCORING_POSITION_OFFSET); - case CENTER: - return 0; - } - assert false; - return 0; - } - - - public static Pose2d offset(Pose2d oldPose, double xoffset, double yoffset){ - Translation2d oldTranslation = oldPose.getTranslation(); - - double rot = oldPose.getRotation().getRadians(); - - return new Pose2d(new Translation2d( - oldTranslation.getX() + Math.cos(rot + Math.PI/2) * xoffset + Math.cos(rot) * yoffset, - oldTranslation.getY() + Math.sin(rot + Math.PI/2) * xoffset + Math.sin(rot) * yoffset - ), oldPose.getRotation().rotateBy(Rotation2d.k180deg)); - } -} diff --git a/vendordeps/AdvantageKit.json b/vendordeps/AdvantageKit.json index bef4a15..5d79bff 100644 --- a/vendordeps/AdvantageKit.json +++ b/vendordeps/AdvantageKit.json @@ -1,9 +1,9 @@ { "fileName": "AdvantageKit.json", "name": "AdvantageKit", - "version": "4.1.2", + "version": "26.0.0-beta-1", "uuid": "d820cc26-74e3-11ec-90d6-0242ac120003", - "frcYear": "2025", + "frcYear": "2026beta", "mavenUrls": [ "https://frcmaven.wpi.edu/artifactory/littletonrobotics-mvn-release/" ], @@ -12,14 +12,14 @@ { "groupId": "org.littletonrobotics.akit", "artifactId": "akit-java", - "version": "4.1.2" + "version": "26.0.0-beta-1" } ], "jniDependencies": [ { "groupId": "org.littletonrobotics.akit", "artifactId": "akit-wpilibio", - "version": "4.1.2", + "version": "26.0.0-beta-1", "skipInvalidPlatforms": false, "isJar": false, "validPlatforms": [ diff --git a/vendordeps/NavX.json b/vendordeps/NavX.json index ecf8fa0..92e0504 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": "2025", + "frcYear": "2026beta", "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 d3f84e5..c7dac8e 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": "2025", + "frcYear": "2026beta", "mavenUrls": [ "https://3015rangerrobotics.github.io/pathplannerlib/repo" ], diff --git a/vendordeps/Phoenix5-5.36.0-beta-1.json b/vendordeps/Phoenix5-5.36.0-beta-1.json new file mode 100644 index 0000000..987c74c --- /dev/null +++ b/vendordeps/Phoenix5-5.36.0-beta-1.json @@ -0,0 +1,171 @@ +{ + "fileName": "Phoenix5-5.36.0-beta-1.json", + "name": "CTRE-Phoenix (v5)", + "version": "5.36.0-beta-1", + "frcYear": "2026beta", + "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", + "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" + } + ], + "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" + }, + { + "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" + } + ], + "javaDependencies": [ + { + "groupId": "com.ctre.phoenix", + "artifactId": "api-java", + "version": "5.36.0-beta-1" + }, + { + "groupId": "com.ctre.phoenix", + "artifactId": "wpiapi-java", + "version": "5.36.0-beta-1" + } + ], + "jniDependencies": [ + { + "groupId": "com.ctre.phoenix", + "artifactId": "cci", + "version": "5.36.0-beta-1", + "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-beta-1", + "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-beta-1", + "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-beta-1", + "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-beta-1", + "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-beta-1", + "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-beta-1", + "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-beta-1", + "libName": "CTRE_PhoenixCCISim", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + } + ] +} \ No newline at end of file diff --git a/vendordeps/Phoenix6-frc2025-latest.json b/vendordeps/Phoenix6-26.0.0-beta-1.json similarity index 85% rename from vendordeps/Phoenix6-frc2025-latest.json rename to vendordeps/Phoenix6-26.0.0-beta-1.json index 6f40c84..681be31 100644 --- a/vendordeps/Phoenix6-frc2025-latest.json +++ b/vendordeps/Phoenix6-26.0.0-beta-1.json @@ -1,32 +1,32 @@ { - "fileName": "Phoenix6-frc2025-latest.json", + "fileName": "Phoenix6-26.0.0-beta-1.json", "name": "CTRE-Phoenix (v6)", - "version": "25.4.0", - "frcYear": "2025", + "version": "26.0.0-beta-1", + "frcYear": "2026beta", "uuid": "e995de00-2c64-4df5-8831-c1441420ff19", "mavenUrls": [ "https://maven.ctr-electronics.com/release/" ], - "jsonUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2025-latest.json", + "jsonUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2026-latest.json", "conflictsWith": [ { "uuid": "e7900d8d-826f-4dca-a1ff-182f658e98af", "errorMessage": "Users can not have both the replay and regular Phoenix 6 vendordeps in their robot program.", - "offlineFileName": "Phoenix6-replay-frc2025-latest.json" + "offlineFileName": "Phoenix6-replay-frc2026-latest.json" } ], "javaDependencies": [ { "groupId": "com.ctre.phoenix6", "artifactId": "wpiapi-java", - "version": "25.4.0" + "version": "26.0.0-beta-1" } ], "jniDependencies": [ { "groupId": "com.ctre.phoenix6", "artifactId": "api-cpp", - "version": "25.4.0", + "version": "26.0.0-beta-1", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -40,7 +40,7 @@ { "groupId": "com.ctre.phoenix6", "artifactId": "tools", - "version": "25.4.0", + "version": "26.0.0-beta-1", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -54,7 +54,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "api-cpp-sim", - "version": "25.4.0", + "version": "26.0.0-beta-1", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -68,7 +68,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "tools-sim", - "version": "25.4.0", + "version": "26.0.0-beta-1", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -82,7 +82,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simTalonSRX", - "version": "25.4.0", + "version": "26.0.0-beta-1", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -96,7 +96,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simVictorSPX", - "version": "25.4.0", + "version": "26.0.0-beta-1", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -110,21 +110,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simPigeonIMU", - "version": "25.4.0", - "isJar": false, - "skipInvalidPlatforms": true, - "validPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simCANCoder", - "version": "25.4.0", + "version": "26.0.0-beta-1", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -138,7 +124,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProTalonFX", - "version": "25.4.0", + "version": "26.0.0-beta-1", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -152,7 +138,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProTalonFXS", - "version": "25.4.0", + "version": "26.0.0-beta-1", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -166,7 +152,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANcoder", - "version": "25.4.0", + "version": "26.0.0-beta-1", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -180,7 +166,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProPigeon2", - "version": "25.4.0", + "version": "26.0.0-beta-1", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -194,7 +180,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANrange", - "version": "25.4.0", + "version": "26.0.0-beta-1", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -208,7 +194,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANdi", - "version": "25.4.0", + "version": "26.0.0-beta-1", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -222,7 +208,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANdle", - "version": "25.4.0", + "version": "26.0.0-beta-1", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -238,7 +224,7 @@ { "groupId": "com.ctre.phoenix6", "artifactId": "wpiapi-cpp", - "version": "25.4.0", + "version": "26.0.0-beta-1", "libName": "CTRE_Phoenix6_WPI", "headerClassifier": "headers", "sharedLibrary": true, @@ -254,7 +240,7 @@ { "groupId": "com.ctre.phoenix6", "artifactId": "tools", - "version": "25.4.0", + "version": "26.0.0-beta-1", "libName": "CTRE_PhoenixTools", "headerClassifier": "headers", "sharedLibrary": true, @@ -270,7 +256,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "wpiapi-cpp-sim", - "version": "25.4.0", + "version": "26.0.0-beta-1", "libName": "CTRE_Phoenix6_WPISim", "headerClassifier": "headers", "sharedLibrary": true, @@ -286,7 +272,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "tools-sim", - "version": "25.4.0", + "version": "26.0.0-beta-1", "libName": "CTRE_PhoenixTools_Sim", "headerClassifier": "headers", "sharedLibrary": true, @@ -302,7 +288,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simTalonSRX", - "version": "25.4.0", + "version": "26.0.0-beta-1", "libName": "CTRE_SimTalonSRX", "headerClassifier": "headers", "sharedLibrary": true, @@ -318,7 +304,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simVictorSPX", - "version": "25.4.0", + "version": "26.0.0-beta-1", "libName": "CTRE_SimVictorSPX", "headerClassifier": "headers", "sharedLibrary": true, @@ -334,7 +320,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simPigeonIMU", - "version": "25.4.0", + "version": "26.0.0-beta-1", "libName": "CTRE_SimPigeonIMU", "headerClassifier": "headers", "sharedLibrary": true, @@ -347,26 +333,10 @@ ], "simMode": "swsim" }, - { - "groupId": "com.ctre.phoenix6.sim", - "artifactId": "simCANCoder", - "version": "25.4.0", - "libName": "CTRE_SimCANCoder", - "headerClassifier": "headers", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxx86-64", - "linuxarm64", - "osxuniversal" - ], - "simMode": "swsim" - }, { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProTalonFX", - "version": "25.4.0", + "version": "26.0.0-beta-1", "libName": "CTRE_SimProTalonFX", "headerClassifier": "headers", "sharedLibrary": true, @@ -382,7 +352,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProTalonFXS", - "version": "25.4.0", + "version": "26.0.0-beta-1", "libName": "CTRE_SimProTalonFXS", "headerClassifier": "headers", "sharedLibrary": true, @@ -398,7 +368,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANcoder", - "version": "25.4.0", + "version": "26.0.0-beta-1", "libName": "CTRE_SimProCANcoder", "headerClassifier": "headers", "sharedLibrary": true, @@ -414,7 +384,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProPigeon2", - "version": "25.4.0", + "version": "26.0.0-beta-1", "libName": "CTRE_SimProPigeon2", "headerClassifier": "headers", "sharedLibrary": true, @@ -430,7 +400,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANrange", - "version": "25.4.0", + "version": "26.0.0-beta-1", "libName": "CTRE_SimProCANrange", "headerClassifier": "headers", "sharedLibrary": true, @@ -446,7 +416,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANdi", - "version": "25.4.0", + "version": "26.0.0-beta-1", "libName": "CTRE_SimProCANdi", "headerClassifier": "headers", "sharedLibrary": true, @@ -462,7 +432,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANdle", - "version": "25.4.0", + "version": "26.0.0-beta-1", "libName": "CTRE_SimProCANdle", "headerClassifier": "headers", "sharedLibrary": true, diff --git a/vendordeps/WPILibNewCommands.json b/vendordeps/WPILibNewCommands.json index 3718e0a..7ebc954 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": "2025", + "frcYear": "2026beta", "mavenUrls": [], "jsonUrl": "", "javaDependencies": [ @@ -25,6 +25,7 @@ "sharedLibrary": true, "skipInvalidPlatforms": true, "binaryPlatforms": [ + "linuxsystemcore", "linuxathena", "linuxarm32", "linuxarm64", diff --git a/vendordeps/photonlib.json b/vendordeps/photonlib.json index 2d7b1d8..bb62e61 100644 --- a/vendordeps/photonlib.json +++ b/vendordeps/photonlib.json @@ -1,9 +1,9 @@ { "fileName": "photonlib.json", "name": "photonlib", - "version": "v2025.3.1", + "version": "v2026.0.1-beta", "uuid": "515fe07e-bfc6-11fa-b3de-0242ac130004", - "frcYear": "2025", + "frcYear": "2026beta", "mavenUrls": [ "https://maven.photonvision.org/repository/internal", "https://maven.photonvision.org/repository/snapshots" @@ -13,7 +13,7 @@ { "groupId": "org.photonvision", "artifactId": "photontargeting-cpp", - "version": "v2025.3.1", + "version": "v2026.0.1-beta", "skipInvalidPlatforms": true, "isJar": false, "validPlatforms": [ @@ -28,7 +28,7 @@ { "groupId": "org.photonvision", "artifactId": "photonlib-cpp", - "version": "v2025.3.1", + "version": "v2026.0.1-beta", "libName": "photonlib", "headerClassifier": "headers", "sharedLibrary": true, @@ -43,7 +43,7 @@ { "groupId": "org.photonvision", "artifactId": "photontargeting-cpp", - "version": "v2025.3.1", + "version": "v2026.0.1-beta", "libName": "photontargeting", "headerClassifier": "headers", "sharedLibrary": true, @@ -60,12 +60,12 @@ { "groupId": "org.photonvision", "artifactId": "photonlib-java", - "version": "v2025.3.1" + "version": "v2026.0.1-beta" }, { "groupId": "org.photonvision", "artifactId": "photontargeting-java", - "version": "v2025.3.1" + "version": "v2026.0.1-beta" } ] } \ No newline at end of file