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/.github/workflows/gradle.yml b/.github/workflows/gradle.yml
deleted file mode 100644
index 7d89e58..0000000
--- a/.github/workflows/gradle.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-name: Java CI
-
-on:
- push:
- branches:
- - master
- pull_request:
- branches:
- - master
-
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v1
- - name: Set up JDK 17
- uses: actions/setup-java@v1
- with:
- java-version: 17
- - name: Change wrapper permissions
- run: chmod +x ./gradlew
- - name: Build with Gradle
- run: ./gradlew build
diff --git a/.gitignore b/.gitignore
index b5b18bb..375359c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -169,6 +169,8 @@ out/
.fleet
# Simulation GUI and other tools window save file
+networktables.json
+simgui.json
*-window.json
# Simulation data log directory
@@ -176,5 +178,7 @@ logs/
# Folder that has CTRE Phoenix Sim device config storage
ctre_sim/
-simgui.json
-simgui-ds.json
+
+# clangd
+/.cache
+compile_commands.json
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 26d3352..0000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
deleted file mode 100644
index 4edc9d5..0000000
--- a/.idea/gradle.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 6ed36dd..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 35eb1dd..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.templates/CommandTest.java b/.templates/CommandTest.java
deleted file mode 100644
index 72b31df..0000000
--- a/.templates/CommandTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) 2019 FIRST. All Rights Reserved. */
-/* Open Source Software - may be modified and shared by FRC teams. The code */
-/* must be accompanied by the FIRST BSD license file in the root directory of */
-/* the project. */
-/*----------------------------------------------------------------------------*/
-
-package frc4388.robot.commands;
-
-import edu.wpi.first.wpilibj2.command.*;
-import frc4388.robot.subsystems.*;
-import org.junit.*;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-
-public class CommandTest {
- private CommandScheduler scheduler = null;
-
- @Before
- public void setup() {
- scheduler = CommandScheduler.getInstance();
- }
-
- // TODO: Update this to use an actual command. Won't work with inline commands for some reason
-
- @Test
- public void testExample() {
- // Arrange
- Drive drive = mock(Drive.class);
- RunCommand command = new RunCommand(() -> drive.driveWithInput(0, 0), drive);
-
- // Act
- scheduler.schedule(command);
- scheduler.run();
-
- // Assert
- verify(drive).driveWithInput(0, 0);
- }
-}
diff --git a/.templates/SubsystemTest.java b/.templates/SubsystemTest.java
deleted file mode 100644
index 51f30d5..0000000
--- a/.templates/SubsystemTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) 2018-2019 FIRST. All Rights Reserved. */
-/* Open Source Software - may be modified and shared by FRC teams. The code */
-/* must be accompanied by the FIRST BSD license file in the root directory of */
-/* the project. */
-/*----------------------------------------------------------------------------*/
-
-package frc4388.robot.subsystems;
-
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.*;
-
-import edu.wpi.first.wpilibj.Spark;
-import frc4388.robot.Constants.LEDConstants;
-import frc4388.utility.LEDPatterns;
-
-/**
- * Based off the LEDSubsystemTest class
- */
-public class SubsystemTest {
- @Test
- public void testConstructor() {
- // Arrange
- Spark ledController = mock(Spark.class);
-
- // Act
- LED led = new LED(ledController);
-
- // Assert
- assertEquals(LEDConstants.DEFAULT_PATTERN.getValue(), led.getPattern().getValue(), 0.0001);
- }
-
- @Test
- public void testPatterns() {
- // Arrange
- Spark ledController = mock(Spark.class);
- LED led = new LED(ledController);
-
- // Act
- led.setPattern(LEDPatterns.RAINBOW_RAINBOW);
-
- // Assert
- assertEquals(LEDPatterns.RAINBOW_RAINBOW.getValue(), led.getPattern().getValue(), 0.0001);
-
- // Act
- led.setPattern(LEDPatterns.BLUE_BREATH);
-
- // Assert
- assertEquals(LEDPatterns.BLUE_BREATH.getValue(), led.getPattern().getValue(), 0.0001);
-
- // Act
- led.setPattern(LEDPatterns.SOLID_BLACK);
-
- // Assert
- assertEquals(LEDPatterns.SOLID_BLACK.getValue(), led.getPattern().getValue(), 0.0001);
- }
-}
diff --git a/.templates/UtilityTest.java b/.templates/UtilityTest.java
deleted file mode 100644
index 11c15cd..0000000
--- a/.templates/UtilityTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) 2018-2019 FIRST. All Rights Reserved. */
-/* Open Source Software - may be modified and shared by FRC teams. The code */
-/* must be accompanied by the FIRST BSD license file in the root directory of */
-/* the project. */
-/*----------------------------------------------------------------------------*/
-
-package frc4388.utility;
-
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
-
-import com.kauailabs.navx.frc.AHRS;
-
-import org.junit.*;
-
-import frc4388.mocks.MockPigeonIMU;
-import frc4388.robot.Constants.DriveConstants;
-
-/**
- * Based on the RobotGyroUtilityTest class
- */
-public class UtilityTest {
- private RobotGyro gyroPigeon;
- private RobotGyro gyroNavX;
-
- @Test
- public void testConstructor() {
- // Arrange
- MockPigeonIMU pigeon = new MockPigeonIMU(DriveConstants.DRIVE_PIGEON_ID);
- AHRS navX = mock(AHRS.class);
- gyroPigeon = new RobotGyro(pigeon);
- gyroNavX = new RobotGyro(navX);
-
- // Assert
- assertEquals(true, gyroPigeon.m_isGyroAPigeon);
- assertEquals(pigeon, gyroPigeon.getPigeon());
- assertEquals(null, gyroPigeon.getNavX());
- assertEquals(false, gyroNavX.m_isGyroAPigeon);
- assertEquals(navX, gyroNavX.getNavX());
- assertEquals(null, gyroNavX.getPigeon());
- }
-
- @Test
- public void testHeadingPigeon() {
- // Arrange
- MockPigeonIMU pigeon = new MockPigeonIMU(DriveConstants.DRIVE_PIGEON_ID);
- gyroPigeon = new RobotGyro(pigeon);
-
- // Act & Assert
- assertEquals(-90, gyroPigeon.getHeading(270), 0.0001);
- assertEquals(-45, gyroPigeon.getHeading(315), 0.0001);
- assertEquals(-60, gyroPigeon.getHeading(-60), 0.0001);
- assertEquals(30, gyroPigeon.getHeading(30), 0.0001);
- assertEquals(0, gyroPigeon.getHeading(0), 0.0001);
- assertEquals(180, gyroPigeon.getHeading(180), 0.0001);
- assertEquals(-180, gyroPigeon.getHeading(-180), 0.0001);
- assertEquals(97, gyroPigeon.getHeading(1537), 0.0001);
- assertEquals(99, gyroPigeon.getHeading(-2781), 0.0001);
- }
-}
diff --git a/.wpilib/wpilib_preferences.json b/.wpilib/wpilib_preferences.json
index f523e9c..acfab82 100644
--- a/.wpilib/wpilib_preferences.json
+++ b/.wpilib/wpilib_preferences.json
@@ -1,6 +1,6 @@
{
"enableCppIntellisense": false,
"currentLanguage": "java",
- "projectYear": "2024",
+ "projectYear": "2025beta",
"teamNumber": 4388
}
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index d6f82dd..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-Copyright (c) 2009-2024 FIRST
-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 the FIRST nor the
- names of its 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 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/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 43b62ec..645e542 100644
--- a/WPILib-License.md
+++ b/WPILib-License.md
@@ -1,4 +1,4 @@
-Copyright (c) 2009-2023 FIRST and other WPILib contributors
+Copyright (c) 2009-2024 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 9638f90..351eaf0 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,6 +1,6 @@
plugins {
id "java"
- id "edu.wpi.first.GradleRIO" version "2024.3.2"
+ id "edu.wpi.first.GradleRIO" version "2025.1.1-beta-2"
}
java {
@@ -33,6 +33,8 @@ deploy {
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 on roboRIO
}
}
}
@@ -50,6 +52,7 @@ 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()
@@ -67,14 +70,14 @@ dependencies {
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'
+ testImplementation 'org.junit.jupiter:junit-jupiter:5.10.1'
+ testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
-// test {
-// useJUnitPlatform()
-// systemProperty 'junit.jupiter.extensions.autodetection.enabled', 'true'
-//}
+test {
+ useJUnitPlatform()
+ systemProperty 'junit.jupiter.extensions.autodetection.enabled', 'true'
+}
// Simulation configuration (e.g. environment variables).
wpi.sim.addGui().defaultEnabled = true
@@ -98,4 +101,4 @@ wpi.java.configureTestTasks(test)
// Configure string concat to always inline compile
tasks.withType(JavaCompile) {
options.compilerArgs.add '-XDstringConcat=inline'
-}
\ No newline at end of file
+}
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index d64cd49..a4b76b9 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 5e82d67..34bd9ce 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=permwrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew b/gradlew
index 1aa94a4..f5feea6 100755
--- a/gradlew
+++ b/gradlew
@@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
+# SPDX-License-Identifier: Apache-2.0
+#
##############################################################################
#
@@ -55,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -84,7 +86,8 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
-APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
+APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
+' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
diff --git a/gradlew.bat b/gradlew.bat
index 93e3f59..9d21a21 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -13,6 +13,8 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
+@rem SPDX-License-Identifier: Apache-2.0
+@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@@ -43,11 +45,11 @@ set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
+echo. 1>&2
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
goto fail
@@ -57,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
+echo. 1>&2
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
goto fail
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 d94f73c..969c7b0 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -4,7 +4,7 @@ pluginManagement {
repositories {
mavenLocal()
gradlePluginPortal()
- String frcYear = '2024'
+ String frcYear = '2025'
File frcHome
if (OperatingSystem.current().isWindows()) {
String publicFolder = System.getenv('PUBLIC')
diff --git a/src/main/deploy/pathplanner/autos/New Auto.auto b/src/main/deploy/pathplanner/autos/New Auto.auto
new file mode 100644
index 0000000..268147b
--- /dev/null
+++ b/src/main/deploy/pathplanner/autos/New Auto.auto
@@ -0,0 +1,19 @@
+{
+ "version": "2025.0",
+ "command": {
+ "type": "sequential",
+ "data": {
+ "commands": [
+ {
+ "type": "path",
+ "data": {
+ "pathName": "New Path"
+ }
+ }
+ ]
+ }
+ },
+ "resetOdom": true,
+ "folder": null,
+ "choreoAuto": false
+}
\ No newline at end of file
diff --git a/src/main/deploy/pathplanner/navgrid.json b/src/main/deploy/pathplanner/navgrid.json
new file mode 100644
index 0000000..bab0da9
--- /dev/null
+++ b/src/main/deploy/pathplanner/navgrid.json
@@ -0,0 +1 @@
+{"field_size":{"x":16.54,"y":8.21},"nodeSizeMeters":0.3,"grid":[[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true],[true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true],[true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,true,true],[true,true,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,true,true,true],[true,true,true,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,true,true,true,true],[true,true,true,true,false,false,false,false,false,false,true,true,true,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,true,true,true,false,false,false,false,false,false,true,true,true,true,true],[true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true],[true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true],[true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true],[true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true],[true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true],[true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true],[true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true],[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true]]}
\ No newline at end of file
diff --git a/src/main/deploy/pathplanner/paths/New Path.path b/src/main/deploy/pathplanner/paths/New Path.path
new file mode 100644
index 0000000..6441c8a
--- /dev/null
+++ b/src/main/deploy/pathplanner/paths/New Path.path
@@ -0,0 +1,54 @@
+{
+ "version": "2025.0",
+ "waypoints": [
+ {
+ "anchor": {
+ "x": 13.882261436839258,
+ "y": 3.061093579814278
+ },
+ "prevControl": null,
+ "nextControl": {
+ "x": 14.693915037547589,
+ "y": 2.6668618308988026
+ },
+ "isLocked": false,
+ "linkedName": null
+ },
+ {
+ "anchor": {
+ "x": 14.728700191862979,
+ "y": 1.2522655553831117
+ },
+ "prevControl": {
+ "x": 13.928641642594021,
+ "y": 1.3218358640107113
+ },
+ "nextControl": null,
+ "isLocked": false,
+ "linkedName": null
+ }
+ ],
+ "rotationTargets": [],
+ "constraintZones": [],
+ "pointTowardsZones": [],
+ "eventMarkers": [],
+ "globalConstraints": {
+ "maxVelocity": 3.0,
+ "maxAcceleration": 3.0,
+ "maxAngularVelocity": 540.0,
+ "maxAngularAcceleration": 720.0,
+ "nominalVoltage": 12.0,
+ "unlimited": false
+ },
+ "goalEndState": {
+ "velocity": 0,
+ "rotation": 0.0
+ },
+ "reversed": false,
+ "folder": null,
+ "idealStartingState": {
+ "velocity": 0,
+ "rotation": 0.0
+ },
+ "useDefaultConstraints": true
+}
\ No newline at end of file
diff --git a/src/main/deploy/pathplanner/settings.json b/src/main/deploy/pathplanner/settings.json
new file mode 100644
index 0000000..7def6c7
--- /dev/null
+++ b/src/main/deploy/pathplanner/settings.json
@@ -0,0 +1,32 @@
+{
+ "robotWidth": 0.9,
+ "robotLength": 0.9,
+ "holonomicMode": false,
+ "pathFolders": [],
+ "autoFolders": [],
+ "defaultMaxVel": 3.0,
+ "defaultMaxAccel": 3.0,
+ "defaultMaxAngVel": 540.0,
+ "defaultMaxAngAccel": 720.0,
+ "defaultNominalVoltage": 12.0,
+ "robotMass": 74.088,
+ "robotMOI": 6.883,
+ "robotTrackwidth": 0.546,
+ "driveWheelRadius": 0.048,
+ "driveGearing": 5.143,
+ "maxDriveSpeed": 5.45,
+ "driveMotorType": "krakenX60",
+ "driveCurrentLimit": 60.0,
+ "wheelCOF": 1.2,
+ "flModuleX": 0.273,
+ "flModuleY": 0.273,
+ "frModuleX": 0.273,
+ "frModuleY": -0.273,
+ "blModuleX": -0.273,
+ "blModuleY": 0.273,
+ "brModuleX": -0.273,
+ "brModuleY": -0.273,
+ "bumperOffsetX": 0.0,
+ "bumperOffsetY": 0.0,
+ "robotFeatures": []
+}
\ No newline at end of file
diff --git a/src/main/java/frc4388/robot/Constants.java b/src/main/java/frc4388/robot/Constants.java
index 236b556..56cdaf1 100644
--- a/src/main/java/frc4388/robot/Constants.java
+++ b/src/main/java/frc4388/robot/Constants.java
@@ -7,6 +7,8 @@
package frc4388.robot;
+import com.pathplanner.lib.util.ReplanningConfig;
+
import edu.wpi.first.math.trajectory.TrapezoidProfile;
import frc4388.utility.Gains;
import frc4388.utility.LEDPatterns;
@@ -68,7 +70,7 @@ public final class Constants {
// public static final int RIGHT_BACK_STEER_ID = 9;
// public static final int RIGHT_BACK_ENCODER_ID = 13;
- // public static final int DRIVE_PIGEON_ID = 14;
+ public static final int DRIVE_PIGEON_ID = 10;
}
public static final class PIDConstants {
@@ -88,6 +90,8 @@ public final class Constants {
public static final double PATH_MAX_VEL = 0.3; // TODO: find the actual value
public static final double PATH_MAX_ACC = 0.3; // TODO: find the actual value
+
+ public static final ReplanningConfig replanningConfig = new ReplanningConfig();
}
public static final class Conversions {
@@ -131,6 +135,7 @@ public final class Constants {
}
public static final class VisionConstants {
+ public static final String CAMERA_NAME = "photonvision";
}
public static final class DriveConstants {
diff --git a/src/main/java/frc4388/robot/Robot.java b/src/main/java/frc4388/robot/Robot.java
index 58adaea..573ce52 100644
--- a/src/main/java/frc4388/robot/Robot.java
+++ b/src/main/java/frc4388/robot/Robot.java
@@ -7,7 +7,10 @@
package frc4388.robot;
+import edu.wpi.first.math.geometry.Rotation3d;
+import edu.wpi.first.math.geometry.Translation3d;
import edu.wpi.first.wpilibj.TimedRobot;
+import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
import edu.wpi.first.wpilibj2.command.Command;
import edu.wpi.first.wpilibj2.command.CommandScheduler;
import frc4388.utility.DeferredBlock;
diff --git a/src/main/java/frc4388/robot/RobotContainer.java b/src/main/java/frc4388/robot/RobotContainer.java
index baa63bc..4ff2cfa 100644
--- a/src/main/java/frc4388/robot/RobotContainer.java
+++ b/src/main/java/frc4388/robot/RobotContainer.java
@@ -7,9 +7,13 @@
package frc4388.robot;
+import com.pathplanner.lib.auto.AutoBuilder;
+import com.pathplanner.lib.commands.PathPlannerAuto;
+
// Drive Systems
import edu.wpi.first.wpilibj.DriverStation;
import edu.wpi.first.wpilibj.GenericHID;
+import edu.wpi.first.wpilibj.smartdashboard.SendableChooser;
import frc4388.utility.controller.XboxController;
import frc4388.utility.controller.DeadbandedXboxController;
import frc4388.robot.Constants.OIConstants;
@@ -25,11 +29,11 @@ import edu.wpi.first.wpilibj2.command.RunCommand;
import frc4388.utility.controller.VirtualController;
import frc4388.robot.commands.Swerve.neoJoystickPlayback;
import frc4388.robot.commands.Swerve.neoJoystickRecorder;
-
+import frc4388.robot.subsystems.RobotLocalizer;
// Subsystems
// import frc4388.robot.subsystems.LED;
import frc4388.robot.subsystems.SwerveDrive;
-
+import frc4388.robot.subsystems.TankDrive;
// Utilites
import frc4388.utility.DeferredBlock;
import frc4388.utility.configurable.ConfigurableString;
@@ -55,6 +59,14 @@ public class RobotContainer {
// m_robotMap.gyro);
+
+ // ! /* Autos */
+ private final RobotLocalizer robotLocalizer = new RobotLocalizer(m_robotMap.gyro, m_robotMap.cam);
+ private final SendableChooser autoChooser;
+
+
+ private final TankDrive tankDrive = new TankDrive(m_robotMap.FR, m_robotMap.FL, m_robotMap.BL, m_robotMap.BR, robotLocalizer);
+
/* Controllers */
private final DeadbandedXboxController m_driverXbox = new DeadbandedXboxController(OIConstants.XBOX_DRIVER_ID);
private final DeadbandedXboxController m_operatorXbox = new DeadbandedXboxController(OIConstants.XBOX_OPERATOR_ID);
@@ -66,9 +78,9 @@ public class RobotContainer {
// ! Teleop Commands
- // ! /* Autos */
- private String lastAutoName = "defualt.auto";
- private ConfigurableString autoplaybackName = new ConfigurableString("Auto Playback Name", lastAutoName);
+
+ // private String lastAutoName = "defualt.auto";
+ // private ConfigurableString autoplaybackName = new ConfigurableString("Auto Playback Name", lastAutoName);
// private neoJoystickPlayback autoPlayback = new neoJoystickPlayback(m_robotSwerveDrive,
// () -> autoplaybackName.get(), // lastAutoName
// new VirtualController[]{getVirtualDriverController(), getVirtualOperatorController()},
@@ -87,11 +99,11 @@ public class RobotContainer {
/* Default Commands */
// ! Swerve Drive Default Command (Regular Rotation)
// drives the robot with a two-axis input from the driver controller
- m_robotMap.tankDrive.setDefaultCommand(new RunCommand(() -> {
- m_robotMap.tankDrive.driveWithInput(getDeadbandedDriverController().getLeft(),
+ tankDrive.setDefaultCommand(new RunCommand(() -> {
+ tankDrive.driveWithInput(getDeadbandedDriverController().getLeft(),
getDeadbandedDriverController().getRight(),
true);
- }, m_robotMap.tankDrive)
+ }, tankDrive)
.withName("SwerveDrive DefaultCommand"));
// m_robotMap.tankDrive.setToSlow();
@@ -120,7 +132,7 @@ public class RobotContainer {
-
+ autoChooser = AutoBuilder.buildAutoChooser();
}
/**
@@ -201,9 +213,7 @@ public class RobotContainer {
*/
public Command getAutonomousCommand() {
// return autoPlayback;
- return new Command() {
-
- };
+ return autoChooser.getSelected();
}
/**
diff --git a/src/main/java/frc4388/robot/RobotMap.java b/src/main/java/frc4388/robot/RobotMap.java
index 9ae3620..6a74795 100644
--- a/src/main/java/frc4388/robot/RobotMap.java
+++ b/src/main/java/frc4388/robot/RobotMap.java
@@ -8,6 +8,12 @@
package frc4388.robot;
import com.ctre.phoenix6.hardware.TalonFX;
+import com.pathplanner.lib.commands.PathPlannerAuto;
+
+import edu.wpi.first.wpilibj2.command.Command;
+
+import org.photonvision.PhotonCamera;
+
import com.ctre.phoenix.motorcontrol.can.TalonSRX;
import com.ctre.phoenix6.hardware.CANcoder;
import com.ctre.phoenix6.hardware.Pigeon2;
@@ -15,6 +21,7 @@ import com.ctre.phoenix6.hardware.Pigeon2;
// import edu.wpi.first.wpilibj.motorcontrol.Spark;
// import frc4388.robot.Constants.LEDConstants;
import frc4388.robot.Constants.SwerveDriveConstants;
+import frc4388.robot.Constants.VisionConstants;
import frc4388.robot.subsystems.SwerveModule;
import frc4388.robot.subsystems.TankDrive;
import frc4388.utility.RobotGyro;
@@ -24,8 +31,9 @@ import frc4388.utility.RobotGyro;
* testing and modularization.
*/
public class RobotMap {
- // private Pigeon2 m_pigeon2 = new Pigeon2(SwerveDriveConstants.IDs.DRIVE_PIGEON_ID);
- // public RobotGyro gyro = new RobotGyro(m_pigeon2);
+ private Pigeon2 m_pigeon2 = new Pigeon2(SwerveDriveConstants.IDs.DRIVE_PIGEON_ID);
+ public RobotGyro gyro = new RobotGyro(m_pigeon2);
+ public PhotonCamera cam = new PhotonCamera(VisionConstants.CAMERA_NAME);
// public SwerveModule leftFront;
// public SwerveModule rightFront;
@@ -65,7 +73,6 @@ public class RobotMap {
// public final CANcoder rightBackEncoder = new CANcoder(SwerveDriveConstants.IDs.RIGHT_BACK_ENCODER_ID);
void configureDriveMotorControllers() {
- this.tankDrive = new TankDrive(FR, FL, BL, BR);
// initialize SwerveModules
// this.rightFront = new SwerveModule(rightFrontWheel, rightFrontSteer, rightFrontEncoder, SwerveDriveConstants.DefaultSwerveRotOffsets.FRONT_RIGHT_ROT_OFFSET);
// this.leftFront = new SwerveModule(leftFrontWheel, leftFrontSteer, leftFrontEncoder, SwerveDriveConstants.DefaultSwerveRotOffsets.FRONT_LEFT_ROT_OFFSET);
diff --git a/src/main/java/frc4388/robot/subsystems/DiffDrive.java b/src/main/java/frc4388/robot/subsystems/DiffDrive.java
index 91de2e9..b4db7ed 100644
--- a/src/main/java/frc4388/robot/subsystems/DiffDrive.java
+++ b/src/main/java/frc4388/robot/subsystems/DiffDrive.java
@@ -9,6 +9,7 @@ package frc4388.robot.subsystems;
import com.ctre.phoenix6.controls.Follower;
import com.ctre.phoenix6.hardware.TalonFX;
+import com.ctre.phoenix6.hardware.core.CorePigeon2;
import edu.wpi.first.wpilibj.drive.DifferentialDrive;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
diff --git a/src/main/java/frc4388/robot/subsystems/RobotLocalizer.java b/src/main/java/frc4388/robot/subsystems/RobotLocalizer.java
new file mode 100644
index 0000000..3a8ea82
--- /dev/null
+++ b/src/main/java/frc4388/robot/subsystems/RobotLocalizer.java
@@ -0,0 +1,108 @@
+package frc4388.robot.subsystems;
+
+import org.photonvision.PhotonCamera;
+import org.photonvision.targeting.PhotonTrackedTarget;
+
+import com.pathplanner.lib.path.PathPlannerPath;
+
+import edu.wpi.first.math.geometry.Pose2d;
+import edu.wpi.first.math.geometry.Rotation3d;
+import edu.wpi.first.math.geometry.Transform3d;
+import edu.wpi.first.math.geometry.Translation2d;
+import edu.wpi.first.math.geometry.Translation3d;
+import edu.wpi.first.math.kinematics.ChassisSpeeds;
+import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
+import edu.wpi.first.wpilibj2.command.SubsystemBase;
+import frc4388.utility.RobotGyro;
+
+public class RobotLocalizer extends SubsystemBase {
+ private RobotGyro gyro;
+ private Pose2d lastPose2d = new Pose2d();
+ private PhotonCamera camera;
+
+
+ public RobotLocalizer(RobotGyro gyro, PhotonCamera cam) {
+ this.gyro = gyro;
+ this.camera = cam;
+ }
+
+ @Override
+ public void periodic() {
+ // time
+ // Translation3d accel = gyro.getAcceleration();
+
+ // SmartDashboard.putNumber("Accel X", accel.getX());
+ // SmartDashboard.putNumber("Accel Y", accel.getY());
+ // SmartDashboard.putNumber("Accel Z", accel.getZ());
+
+ // Rotation3d rot = gyro.getRotation3d();
+
+ // SmartDashboard.putNumber("Rot X", rot.getX());
+ // SmartDashboard.putNumber("Rot Y", rot.getY());
+ // SmartDashboard.putNumber("Rot Z", rot.getZ());
+
+ // boolean tagExists = SmartDashboard.getBoolean("photonvision/Camera_Module_v1/hasTarget", false);
+
+ Translation2d pos;
+
+ var result = camera.getAllUnreadResults();
+ // if (result.hasTargets()) {
+ // PhotonTrackedTarget target = result.getBestTarget();
+ // Transform3d pos3d = target.getBestCameraToTarget();
+ // pos = new Translation2d(pos3d.getX(), pos3d.getY());
+ // } else {
+ pos = lastPose2d.getTranslation();
+ // }
+
+ // results.
+ // if (!results.isEmpty()) {
+
+ // double totalX = 0;
+ // double totalY = 0;
+
+ // // Camera processed a new frame since last
+ // // Get the last one in the list.
+ // var result = results.get(results.size() - 1);
+ // // PhotonTrackedTarget targets = result.getMultiTagResult();
+
+ // if (result.hasTargets()) {
+ // PhotonTrackedTarget target = result.getBestTarget();
+ // Transform3d pos3d = target.getBestCameraToTarget();
+ // pos = new Translation2d(pos3d.getX(), pos3d.getY());
+ // } else {
+ // pos = lastPose2d.getTranslation();
+ // }
+ // }else {
+ // pos = lastPose2d.getTranslation();
+ // }
+
+
+ lastPose2d = new Pose2d(
+ pos,
+ gyro.getRotation2d()
+ );
+ }
+
+ // Pathplanner function
+ public Pose2d getPose(){
+ return lastPose2d;
+ }
+
+ // PathPlanner func
+ public void resetPose(Pose2d pose){
+ lastPose2d = pose;
+ }
+
+ // PathPlanner
+ public ChassisSpeeds getChassisSpeeds() {
+ return new ChassisSpeeds();
+ }
+
+ // PathPlanner
+ public void setChassisSpeeds(ChassisSpeeds target) {
+ System.out.println(target);
+ }
+
+
+
+}
diff --git a/src/main/java/frc4388/robot/subsystems/SwerveModule.java b/src/main/java/frc4388/robot/subsystems/SwerveModule.java
index b9895fb..02384ea 100644
--- a/src/main/java/frc4388/robot/subsystems/SwerveModule.java
+++ b/src/main/java/frc4388/robot/subsystems/SwerveModule.java
@@ -150,7 +150,7 @@ public class SwerveModule extends SubsystemBase {
public Rotation2d getAngle() {
// * Note: This assumes that the CANCoders are setup with the default feedback coefficient and the sensor value reports degrees.
// return Rotation2d.fromDegrees(encoder.getAbsolutePosition());
- return Rotation2d.fromRotations(encoder.getPosition().getValue());
+ return Rotation2d.fromRotations(encoder.getPosition().getValue().baseUnitMagnitude());
}
public double getAngularVel() {
@@ -184,7 +184,7 @@ public class SwerveModule extends SubsystemBase {
*/
public SwerveModuleState getState() {
return new SwerveModuleState(
- Units.inchesToMeters(driveMotor.getVelocity().getValue() *
+ Units.inchesToMeters(driveMotor.getVelocity().getValue().baseUnitMagnitude() *
SwerveDriveConstants.Conversions.INCHES_PER_WHEEL_REV *
SwerveDriveConstants.Conversions.WHEEL_REV_PER_MOTOR_REV),
getAngle()
diff --git a/src/main/java/frc4388/robot/subsystems/TankDrive.java b/src/main/java/frc4388/robot/subsystems/TankDrive.java
index e23bcd0..069cba3 100755
--- a/src/main/java/frc4388/robot/subsystems/TankDrive.java
+++ b/src/main/java/frc4388/robot/subsystems/TankDrive.java
@@ -1,23 +1,52 @@
package frc4388.robot.subsystems;
+import java.util.function.BooleanSupplier;
+import java.util.function.Function;
+
import com.ctre.phoenix.motorcontrol.ControlMode;
import com.ctre.phoenix.motorcontrol.can.TalonSRX;
+import com.pathplanner.lib.auto.AutoBuilder;
+import com.pathplanner.lib.controllers.PPLTVController;
+import com.pathplanner.lib.path.PathPlannerPath;
import edu.wpi.first.math.geometry.Translation2d;
+import edu.wpi.first.wpilibj.DriverStation;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
+import edu.wpi.first.wpilibj2.command.Command;
import edu.wpi.first.wpilibj2.command.SubsystemBase;
+import frc4388.robot.Constants.SwerveDriveConstants.AutoConstants;
public class TankDrive extends SubsystemBase{
private TalonSRX FR;
private TalonSRX FL;
private TalonSRX BL;
private TalonSRX BR;
+ private RobotLocalizer robotLocalizer;
- public TankDrive(TalonSRX FR,TalonSRX FL,TalonSRX BL, TalonSRX BR){
+ public TankDrive(TalonSRX FR,TalonSRX FL,TalonSRX BL, TalonSRX BR, RobotLocalizer robotLocalizer){
this.FR = FR;
this.FL = FL;
this.BL = BL;
this.BR = BR;
+ this.robotLocalizer = robotLocalizer;
+
+
+ // Configure AutoBuilder last
+ AutoBuilder.configureLTV(
+ robotLocalizer::getPose,
+ robotLocalizer::resetPose,
+ robotLocalizer::getChassisSpeeds,
+ robotLocalizer::setChassisSpeeds,
+ 0.02, // Default loop time
+ AutoConstants.replanningConfig,
+ new BooleanSupplier() {
+ @Override
+ public boolean getAsBoolean() {
+ return false;
+ }
+ },
+ this
+ );
}
private static final ControlMode mode = ControlMode.PercentOutput;
@@ -58,5 +87,6 @@ public class TankDrive extends SubsystemBase{
SmartDashboard.putNumber("FL", FL_rot);
SmartDashboard.putNumber("BL", BL_rot);
SmartDashboard.putNumber("BR", BR_rot);
+
}
}
diff --git a/src/main/java/frc4388/utility/RobotGyro.java b/src/main/java/frc4388/utility/RobotGyro.java
index 966d2e0..87fa8aa 100644
--- a/src/main/java/frc4388/utility/RobotGyro.java
+++ b/src/main/java/frc4388/utility/RobotGyro.java
@@ -9,12 +9,15 @@ package frc4388.utility;
// import com.ctre.phoenix.sensors.WPI_Pigeon2;
import com.ctre.phoenix6.hardware.Pigeon2;
-import com.kauailabs.navx.frc.AHRS;
+// import com.kauailabs.navx.frc.AHRS;
// import edu.wpi.first.wpilibj.GyroBase;
// import edu.wpi.first.wpilibj.interfaces.Gyro;
import edu.wpi.first.math.MathUtil;
import edu.wpi.first.math.geometry.Rotation2d;
+import edu.wpi.first.math.geometry.Rotation3d;
+import edu.wpi.first.math.geometry.Translation2d;
+import edu.wpi.first.math.geometry.Translation3d;
/**
* Gyro class that allows for interchangeable use between a pigeon and a navX
@@ -23,7 +26,7 @@ public class RobotGyro {
private RobotTime m_robotTime = RobotTime.getInstance();
private Pigeon2 m_pigeon = null;
- private AHRS m_navX = null;
+ // private AHRS m_navX = null;
public boolean m_isGyroAPigeon; //true if pigeon, false if navX
private double m_lastPigeonAngle;
@@ -45,10 +48,10 @@ public class RobotGyro {
* Creates a Gyro based on a navX
* @param gyro the gyroscope to use for Gyro
*/
- public RobotGyro(AHRS gyro){
- m_navX = gyro;
- m_isGyroAPigeon = false;
- }
+ // public RobotGyro(AHRS gyro){
+ // m_navX = gyro;
+ // m_isGyroAPigeon = false;
+ // }
/**
* Resets yaw, pitch, and roll.
@@ -98,33 +101,33 @@ public class RobotGyro {
public void reset() {
resetZeroValues();
- if (m_isGyroAPigeon) {
+ // if (m_isGyroAPigeon) {
m_pigeon.setYaw(0);
- } else {
- m_navX.reset();
- }
+ // } else {
+ // // m_navX.reset();
+ // }
}
public void reset(double val) {
resetZeroValues();
- if (m_isGyroAPigeon) {
+ // if (m_isGyroAPigeon) {
m_pigeon.setYaw(val);
- } else {
- m_navX.reset();
- }
+ // } else {
+ // // m_navX.reset();
+ // }
}
public void resetFlip() {
resetZeroValues();
- if (m_isGyroAPigeon) {
+ // if (m_isGyroAPigeon) {
m_pigeon.setYaw(180);
- } else {
- m_navX.reset();
- }
+ // } else {
+ // m_navX.reset();
+ // }
}
@@ -134,7 +137,7 @@ public class RobotGyro {
if (m_isGyroAPigeon) {
m_pigeon.setYaw(90);
} else {
- m_navX.reset();
+ // m_navX.reset();
}
}
@@ -145,7 +148,7 @@ public class RobotGyro {
if (m_isGyroAPigeon) {
m_pigeon.setYaw(270);
} else {
- m_navX.reset();
+ // m_navX.reset();
}
}
@@ -156,7 +159,7 @@ public class RobotGyro {
if (m_isGyroAPigeon) {
m_pigeon.setYaw(60);
} else {
- m_navX.reset();
+ // m_navX.reset();
}
}
@@ -167,7 +170,7 @@ public class RobotGyro {
if (m_isGyroAPigeon) {
m_pigeon.setYaw(-60);
} else {
- m_navX.reset();
+ // m_navX.reset();
}
}
@@ -191,12 +194,30 @@ public class RobotGyro {
return m_pigeon.getRotation2d();
}
+ public Rotation3d getRotation3d() {
+ return m_pigeon.getRotation3d();
+ }
+
+ public Translation2d getAcceleration2d() {
+ return new Translation2d(
+ m_pigeon.getAccelerationX().getValue().baseUnitMagnitude(),
+ m_pigeon.getAccelerationY().getValue().baseUnitMagnitude());
+ }
+
+
+ public Translation3d getAcceleration3d() {
+ return new Translation3d(
+ m_pigeon.getAccelerationX().getValue().baseUnitMagnitude(),
+ m_pigeon.getAccelerationY().getValue().baseUnitMagnitude(),
+ m_pigeon.getAccelerationZ().getValue().baseUnitMagnitude());
+ }
+
public double getAngle() {
- if (m_isGyroAPigeon) {
+ // if (m_isGyroAPigeon) {
return getPigeonAngles()[2];
- } else {
- return m_navX.getAngle();
- }
+ // } else {
+ // return m_navX.getAngle();
+ // }
}
public double getYaw() {
@@ -226,11 +247,11 @@ public class RobotGyro {
* @return The current pitch value in degrees (-90 to 90).
*/
public double getPitch() {
- if (m_isGyroAPigeon) {
+ // if (m_isGyroAPigeon) {
return MathUtil.clamp(getPigeonAngles()[1], -90, 90);
- } else {
- return MathUtil.clamp(m_navX.getPitch(), -90, 90);
- }
+ // } else {
+ // return MathUtil.clamp(m_navX.getPitch(), -90, 90);
+ // }
}
/**
@@ -240,28 +261,28 @@ public class RobotGyro {
* @return The current roll value in degrees (-90 to 90).
*/
public double getRoll() {
- if (m_isGyroAPigeon) {
+ // if (m_isGyroAPigeon) {
return MathUtil.clamp(getPigeonAngles()[2], -90, 90);
- } else {
- return MathUtil.clamp(m_navX.getRoll(), -90, 90);
- }
+ // } else {
+ // return MathUtil.clamp(m_navX.getRoll(), -90, 90);
+ // }
}
public double getRate() {
- if (m_isGyroAPigeon) {
+ // if (m_isGyroAPigeon) {
return m_deltaPigeonAngle / m_robotTime.m_deltaTime * 1000;
- } else {
- return m_navX.getRate();
- }
+ // } else {
+ // // return m_navX.getRate();
+ // }
}
public Pigeon2 getPigeon(){
return m_pigeon;
}
- public AHRS getNavX(){
- return m_navX;
- }
+ // public AHRS getNavX(){
+ // return m_navX;
+ // }
public void close() throws Exception {
diff --git a/template.config.js b/template.config.js
deleted file mode 100644
index 54f2425..0000000
--- a/template.config.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * This file is a configuration file generated by the `Template` extension on `vscode`
- * @see https://marketplace.visualstudio.com/items?itemName=yongwoo.template
- */
-module.exports = {
- // You can change the template path to another path
- templateRootPath: "./.templates",
- // After copying the template file the `replaceFileTextFn` function is executed
- replaceFileTextFn: (fileText, templateName, utils) => {
- // @see https://www.npmjs.com/package/change-case
- const { changeCase } = utils;
- // You can change the text in the file
- return fileText
- .replace(/__templateName__/gm, templateName)
- .replace(
- /__templateNameToPascalCase__/gm,
- changeCase.pascalCase(templateName)
- )
- .replace(
- /__templateNameToParamCase__/gm,
- changeCase.paramCase(templateName)
- );
- },
- replaceFileNameFn: (fileName, templateName, utils) => {
- const { path } = utils;
- // @see https://nodejs.org/api/path.html#path_path_parse_path
- const { base } = path.parse(fileName);
- // You can change the file name
- return base;
- }
-};
diff --git a/vendordeps/NavX.json b/vendordeps/2024/NavX.json
similarity index 97%
rename from vendordeps/NavX.json
rename to vendordeps/2024/NavX.json
index e978a5f..e01bab1 100644
--- a/vendordeps/NavX.json
+++ b/vendordeps/2024/NavX.json
@@ -3,7 +3,7 @@
"name": "NavX",
"version": "2024.1.0",
"uuid": "cb311d09-36e9-4143-a032-55bb2b94443b",
- "frcYear": "2024",
+ "frcYear": "2025",
"mavenUrls": [
"https://dev.studica.com/maven/release/2024/"
],
diff --git a/vendordeps/2024/PathplannerLib2024.json b/vendordeps/2024/PathplannerLib2024.json
new file mode 100644
index 0000000..f112e62
--- /dev/null
+++ b/vendordeps/2024/PathplannerLib2024.json
@@ -0,0 +1,38 @@
+{
+ "fileName": "PathplannerLib2024.json",
+ "name": "PathplannerLib",
+ "version": "2024.2.8",
+ "uuid": "1b42324f-17c6-4875-8e77-1c312bc8c786",
+ "frcYear": "2024",
+ "mavenUrls": [
+ "https://3015rangerrobotics.github.io/pathplannerlib/repo"
+ ],
+ "jsonUrl": "https://3015rangerrobotics.github.io/pathplannerlib/PathplannerLib2024.json",
+ "javaDependencies": [
+ {
+ "groupId": "com.pathplanner.lib",
+ "artifactId": "PathplannerLib-java",
+ "version": "2024.2.8"
+ }
+ ],
+ "jniDependencies": [],
+ "cppDependencies": [
+ {
+ "groupId": "com.pathplanner.lib",
+ "artifactId": "PathplannerLib-cpp",
+ "version": "2024.2.8",
+ "libName": "PathplannerLib",
+ "headerClassifier": "headers",
+ "sharedLibrary": false,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal",
+ "linuxathena",
+ "linuxarm32",
+ "linuxarm64"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/vendordeps/2024/Phoenix.json b/vendordeps/2024/Phoenix.json
new file mode 100644
index 0000000..ff7359e
--- /dev/null
+++ b/vendordeps/2024/Phoenix.json
@@ -0,0 +1,151 @@
+{
+ "fileName": "Phoenix5.json",
+ "name": "CTRE-Phoenix (v5)",
+ "version": "5.33.1",
+ "frcYear": 2024,
+ "uuid": "ab676553-b602-441f-a38d-f1296eff6537",
+ "mavenUrls": [
+ "https://maven.ctr-electronics.com/release/"
+ ],
+ "jsonUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix/Phoenix5-frc2024-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.json",
+ "onlineUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2024-latest.json"
+ }
+ ],
+ "javaDependencies": [
+ {
+ "groupId": "com.ctre.phoenix",
+ "artifactId": "api-java",
+ "version": "5.33.1"
+ },
+ {
+ "groupId": "com.ctre.phoenix",
+ "artifactId": "wpiapi-java",
+ "version": "5.33.1"
+ }
+ ],
+ "jniDependencies": [
+ {
+ "groupId": "com.ctre.phoenix",
+ "artifactId": "cci",
+ "version": "5.33.1",
+ "isJar": false,
+ "skipInvalidPlatforms": true,
+ "validPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "linuxathena"
+ ],
+ "simMode": "hwsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix.sim",
+ "artifactId": "cci-sim",
+ "version": "5.33.1",
+ "isJar": false,
+ "skipInvalidPlatforms": true,
+ "validPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ }
+ ],
+ "cppDependencies": [
+ {
+ "groupId": "com.ctre.phoenix",
+ "artifactId": "wpiapi-cpp",
+ "version": "5.33.1",
+ "libName": "CTRE_Phoenix_WPI",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "linuxathena"
+ ],
+ "simMode": "hwsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix",
+ "artifactId": "api-cpp",
+ "version": "5.33.1",
+ "libName": "CTRE_Phoenix",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "linuxathena"
+ ],
+ "simMode": "hwsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix",
+ "artifactId": "cci",
+ "version": "5.33.1",
+ "libName": "CTRE_PhoenixCCI",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "linuxathena"
+ ],
+ "simMode": "hwsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix.sim",
+ "artifactId": "wpiapi-cpp-sim",
+ "version": "5.33.1",
+ "libName": "CTRE_Phoenix_WPISim",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix.sim",
+ "artifactId": "api-cpp-sim",
+ "version": "5.33.1",
+ "libName": "CTRE_PhoenixSim",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix.sim",
+ "artifactId": "cci-sim",
+ "version": "5.33.1",
+ "libName": "CTRE_PhoenixCCISim",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/vendordeps/2024/Phoenix6.json b/vendordeps/2024/Phoenix6.json
new file mode 100644
index 0000000..0322385
--- /dev/null
+++ b/vendordeps/2024/Phoenix6.json
@@ -0,0 +1,339 @@
+{
+ "fileName": "Phoenix6.json",
+ "name": "CTRE-Phoenix (v6)",
+ "version": "24.3.0",
+ "frcYear": 2024,
+ "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-frc2024-latest.json",
+ "conflictsWith": [
+ {
+ "uuid": "3fcf3402-e646-4fa6-971e-18afe8173b1a",
+ "errorMessage": "The combined Phoenix-6-And-5 vendordep is no longer supported. Please remove the vendordep and instead add both the latest Phoenix 6 vendordep and Phoenix 5 vendordep.",
+ "offlineFileName": "Phoenix6And5.json"
+ }
+ ],
+ "javaDependencies": [
+ {
+ "groupId": "com.ctre.phoenix6",
+ "artifactId": "wpiapi-java",
+ "version": "24.3.0"
+ }
+ ],
+ "jniDependencies": [
+ {
+ "groupId": "com.ctre.phoenix6",
+ "artifactId": "tools",
+ "version": "24.3.0",
+ "isJar": false,
+ "skipInvalidPlatforms": true,
+ "validPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "linuxathena"
+ ],
+ "simMode": "hwsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "tools-sim",
+ "version": "24.3.0",
+ "isJar": false,
+ "skipInvalidPlatforms": true,
+ "validPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simTalonSRX",
+ "version": "24.3.0",
+ "isJar": false,
+ "skipInvalidPlatforms": true,
+ "validPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simTalonFX",
+ "version": "24.3.0",
+ "isJar": false,
+ "skipInvalidPlatforms": true,
+ "validPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simVictorSPX",
+ "version": "24.3.0",
+ "isJar": false,
+ "skipInvalidPlatforms": true,
+ "validPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simPigeonIMU",
+ "version": "24.3.0",
+ "isJar": false,
+ "skipInvalidPlatforms": true,
+ "validPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simCANCoder",
+ "version": "24.3.0",
+ "isJar": false,
+ "skipInvalidPlatforms": true,
+ "validPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simProTalonFX",
+ "version": "24.3.0",
+ "isJar": false,
+ "skipInvalidPlatforms": true,
+ "validPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simProCANcoder",
+ "version": "24.3.0",
+ "isJar": false,
+ "skipInvalidPlatforms": true,
+ "validPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simProPigeon2",
+ "version": "24.3.0",
+ "isJar": false,
+ "skipInvalidPlatforms": true,
+ "validPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ }
+ ],
+ "cppDependencies": [
+ {
+ "groupId": "com.ctre.phoenix6",
+ "artifactId": "wpiapi-cpp",
+ "version": "24.3.0",
+ "libName": "CTRE_Phoenix6_WPI",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "linuxathena"
+ ],
+ "simMode": "hwsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6",
+ "artifactId": "tools",
+ "version": "24.3.0",
+ "libName": "CTRE_PhoenixTools",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "linuxathena"
+ ],
+ "simMode": "hwsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "wpiapi-cpp-sim",
+ "version": "24.3.0",
+ "libName": "CTRE_Phoenix6_WPISim",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "tools-sim",
+ "version": "24.3.0",
+ "libName": "CTRE_PhoenixTools_Sim",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simTalonSRX",
+ "version": "24.3.0",
+ "libName": "CTRE_SimTalonSRX",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simTalonFX",
+ "version": "24.3.0",
+ "libName": "CTRE_SimTalonFX",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simVictorSPX",
+ "version": "24.3.0",
+ "libName": "CTRE_SimVictorSPX",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simPigeonIMU",
+ "version": "24.3.0",
+ "libName": "CTRE_SimPigeonIMU",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simCANCoder",
+ "version": "24.3.0",
+ "libName": "CTRE_SimCANCoder",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simProTalonFX",
+ "version": "24.3.0",
+ "libName": "CTRE_SimProTalonFX",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simProCANcoder",
+ "version": "24.3.0",
+ "libName": "CTRE_SimProCANcoder",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simProPigeon2",
+ "version": "24.3.0",
+ "libName": "CTRE_SimProPigeon2",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/vendordeps/2024/WPILibNewCommands.json b/vendordeps/2024/WPILibNewCommands.json
new file mode 100644
index 0000000..67bf389
--- /dev/null
+++ b/vendordeps/2024/WPILibNewCommands.json
@@ -0,0 +1,38 @@
+{
+ "fileName": "WPILibNewCommands.json",
+ "name": "WPILib-New-Commands",
+ "version": "1.0.0",
+ "uuid": "111e20f7-815e-48f8-9dd6-e675ce75b266",
+ "frcYear": "2024",
+ "mavenUrls": [],
+ "jsonUrl": "",
+ "javaDependencies": [
+ {
+ "groupId": "edu.wpi.first.wpilibNewCommands",
+ "artifactId": "wpilibNewCommands-java",
+ "version": "wpilib"
+ }
+ ],
+ "jniDependencies": [],
+ "cppDependencies": [
+ {
+ "groupId": "edu.wpi.first.wpilibNewCommands",
+ "artifactId": "wpilibNewCommands-cpp",
+ "version": "wpilib",
+ "libName": "wpilibNewCommands",
+ "headerClassifier": "headers",
+ "sourcesClassifier": "sources",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "linuxathena",
+ "linuxarm32",
+ "linuxarm64",
+ "windowsx86-64",
+ "windowsx86",
+ "linuxx86-64",
+ "osxuniversal"
+ ]
+ }
+ ]
+}
diff --git a/vendordeps/navx_frc.json b/vendordeps/2024/navx_frc.json
similarity index 100%
rename from vendordeps/navx_frc.json
rename to vendordeps/2024/navx_frc.json
diff --git a/vendordeps/2024/photonlib-v2025.0.0-beta-6.json b/vendordeps/2024/photonlib-v2025.0.0-beta-6.json
new file mode 100644
index 0000000..c0a6513
--- /dev/null
+++ b/vendordeps/2024/photonlib-v2025.0.0-beta-6.json
@@ -0,0 +1,71 @@
+{
+ "fileName": "photonlib.json",
+ "name": "photonlib",
+ "version": "v2025.0.0-beta-6",
+ "uuid": "515fe07e-bfc6-11fa-b3de-0242ac130004",
+ "frcYear": "2024",
+ "mavenUrls": [
+ "https://maven.photonvision.org/repository/internal",
+ "https://maven.photonvision.org/repository/snapshots"
+ ],
+ "jsonUrl": "https://maven.photonvision.org/repository/internal/org/photonvision/photonlib-json/1.0/photonlib-json-1.0.json",
+ "jniDependencies": [
+ {
+ "groupId": "org.photonvision",
+ "artifactId": "photontargeting-cpp",
+ "version": "v2025.0.0-beta-6",
+ "skipInvalidPlatforms": true,
+ "isJar": false,
+ "validPlatforms": [
+ "windowsx86-64",
+ "linuxathena",
+ "linuxx86-64",
+ "osxuniversal"
+ ]
+ }
+ ],
+ "cppDependencies": [
+ {
+ "groupId": "org.photonvision",
+ "artifactId": "photonlib-cpp",
+ "version": "v2025.0.0-beta-6",
+ "libName": "photonlib",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxathena",
+ "linuxx86-64",
+ "osxuniversal"
+ ]
+ },
+ {
+ "groupId": "org.photonvision",
+ "artifactId": "photontargeting-cpp",
+ "version": "v2025.0.0-beta-6",
+ "libName": "photontargeting",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxathena",
+ "linuxx86-64",
+ "osxuniversal"
+ ]
+ }
+ ],
+ "javaDependencies": [
+ {
+ "groupId": "org.photonvision",
+ "artifactId": "photonlib-java",
+ "version": "v2025.0.0-beta-6"
+ },
+ {
+ "groupId": "org.photonvision",
+ "artifactId": "photontargeting-java",
+ "version": "v2025.0.0-beta-6"
+ }
+ ]
+}
diff --git a/vendordeps/PathplannerLib2024.json b/vendordeps/PathplannerLib2024.json
new file mode 100644
index 0000000..f3dc687
--- /dev/null
+++ b/vendordeps/PathplannerLib2024.json
@@ -0,0 +1,38 @@
+{
+ "fileName": "PathplannerLib.json",
+ "name": "PathplannerLib",
+ "version": "2024.2.8",
+ "uuid": "1b42324f-17c6-4875-8e77-1c312bc8c786",
+ "frcYear": "2025",
+ "mavenUrls": [
+ "https://3015rangerrobotics.github.io/pathplannerlib/repo"
+ ],
+ "jsonUrl": "https://3015rangerrobotics.github.io/pathplannerlib/PathplannerLib.json",
+ "javaDependencies": [
+ {
+ "groupId": "com.pathplanner.lib",
+ "artifactId": "PathplannerLib-java",
+ "version": "2024.2.8"
+ }
+ ],
+ "jniDependencies": [],
+ "cppDependencies": [
+ {
+ "groupId": "com.pathplanner.lib",
+ "artifactId": "PathplannerLib-cpp",
+ "version": "2024.2.8",
+ "libName": "PathplannerLib",
+ "headerClassifier": "headers",
+ "sharedLibrary": false,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "osxuniversal",
+ "linuxathena",
+ "linuxarm32",
+ "linuxarm64"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/vendordeps/Phoenix.json b/vendordeps/Phoenix.json
index ff7359e..ee205af 100644
--- a/vendordeps/Phoenix.json
+++ b/vendordeps/Phoenix.json
@@ -1,151 +1,341 @@
{
- "fileName": "Phoenix5.json",
+
+ "fileName": "Phoenix5-frc2025-beta-latest.json",
+
"name": "CTRE-Phoenix (v5)",
- "version": "5.33.1",
- "frcYear": 2024,
+
+ "version": "5.34.0-beta-4",
+
+ "frcYear": "2025",
+
"uuid": "ab676553-b602-441f-a38d-f1296eff6537",
+
"mavenUrls": [
+
"https://maven.ctr-electronics.com/release/"
+
],
- "jsonUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix/Phoenix5-frc2024-latest.json",
+
+ "jsonUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix/Phoenix5-frc2025-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.json",
- "onlineUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2024-latest.json"
+
+ "offlineFileName": "Phoenix6-frc2025-beta-latest.json",
+
+ "onlineUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2025-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-frc2025-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-frc2025-beta-latest.json"
+
+ }
+
+ ],
+
"javaDependencies": [
+
{
+
"groupId": "com.ctre.phoenix",
+
"artifactId": "api-java",
- "version": "5.33.1"
+
+ "version": "5.34.0-beta-4"
+
},
+
{
+
"groupId": "com.ctre.phoenix",
+
"artifactId": "wpiapi-java",
- "version": "5.33.1"
+
+ "version": "5.34.0-beta-4"
+
}
+
],
+
"jniDependencies": [
+
{
+
"groupId": "com.ctre.phoenix",
+
"artifactId": "cci",
- "version": "5.33.1",
+
+ "version": "5.34.0-beta-4",
+
"isJar": false,
+
"skipInvalidPlatforms": true,
+
"validPlatforms": [
+
"windowsx86-64",
+
"linuxx86-64",
+
+ "linuxarm64",
+
"linuxathena"
+
],
+
"simMode": "hwsim"
+
},
+
{
+
"groupId": "com.ctre.phoenix.sim",
+
"artifactId": "cci-sim",
- "version": "5.33.1",
+
+ "version": "5.34.0-beta-4",
+
"isJar": false,
+
"skipInvalidPlatforms": true,
+
"validPlatforms": [
+
"windowsx86-64",
+
"linuxx86-64",
+
+ "linuxarm64",
+
"osxuniversal"
+
],
+
"simMode": "swsim"
+
}
+
],
+
"cppDependencies": [
+
{
+
"groupId": "com.ctre.phoenix",
+
"artifactId": "wpiapi-cpp",
- "version": "5.33.1",
+
+ "version": "5.34.0-beta-4",
+
"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.33.1",
+
+ "version": "5.34.0-beta-4",
+
"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.33.1",
+
+ "version": "5.34.0-beta-4",
+
"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.33.1",
+
+ "version": "5.34.0-beta-4",
+
"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.33.1",
+
+ "version": "5.34.0-beta-4",
+
"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.33.1",
+
+ "version": "5.34.0-beta-4",
+
"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.json b/vendordeps/Phoenix6.json
index 0322385..0b786d1 100644
--- a/vendordeps/Phoenix6.json
+++ b/vendordeps/Phoenix6.json
@@ -1,50 +1,80 @@
{
- "fileName": "Phoenix6.json",
+ "fileName": "Phoenix6-frc2025-beta-latest.json",
"name": "CTRE-Phoenix (v6)",
- "version": "24.3.0",
- "frcYear": 2024,
+ "version": "25.0.0-beta-4",
+ "frcYear": "2025",
"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-frc2024-latest.json",
+ "jsonUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2025-beta-latest.json",
"conflictsWith": [
{
- "uuid": "3fcf3402-e646-4fa6-971e-18afe8173b1a",
- "errorMessage": "The combined Phoenix-6-And-5 vendordep is no longer supported. Please remove the vendordep and instead add both the latest Phoenix 6 vendordep and Phoenix 5 vendordep.",
- "offlineFileName": "Phoenix6And5.json"
+ "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-beta-latest.json"
}
],
"javaDependencies": [
{
"groupId": "com.ctre.phoenix6",
"artifactId": "wpiapi-java",
- "version": "24.3.0"
+ "version": "25.0.0-beta-4"
}
],
"jniDependencies": [
{
"groupId": "com.ctre.phoenix6",
- "artifactId": "tools",
- "version": "24.3.0",
+ "artifactId": "api-cpp",
+ "version": "25.0.0-beta-4",
"isJar": false,
"skipInvalidPlatforms": true,
"validPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
+ "linuxathena"
+ ],
+ "simMode": "hwsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6",
+ "artifactId": "tools",
+ "version": "25.0.0-beta-4",
+ "isJar": false,
+ "skipInvalidPlatforms": true,
+ "validPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "linuxarm64",
"linuxathena"
],
"simMode": "hwsim"
},
{
"groupId": "com.ctre.phoenix6.sim",
- "artifactId": "tools-sim",
- "version": "24.3.0",
+ "artifactId": "api-cpp-sim",
+ "version": "25.0.0-beta-4",
"isJar": false,
"skipInvalidPlatforms": true,
"validPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "tools-sim",
+ "version": "25.0.0-beta-4",
+ "isJar": false,
+ "skipInvalidPlatforms": true,
+ "validPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "linuxarm64",
"osxuniversal"
],
"simMode": "swsim"
@@ -52,25 +82,13 @@
{
"groupId": "com.ctre.phoenix6.sim",
"artifactId": "simTalonSRX",
- "version": "24.3.0",
- "isJar": false,
- "skipInvalidPlatforms": true,
- "validPlatforms": [
- "windowsx86-64",
- "linuxx86-64",
- "osxuniversal"
- ],
- "simMode": "swsim"
- },
- {
- "groupId": "com.ctre.phoenix6.sim",
- "artifactId": "simTalonFX",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"isJar": false,
"skipInvalidPlatforms": true,
"validPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
"osxuniversal"
],
"simMode": "swsim"
@@ -78,12 +96,13 @@
{
"groupId": "com.ctre.phoenix6.sim",
"artifactId": "simVictorSPX",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"isJar": false,
"skipInvalidPlatforms": true,
"validPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
"osxuniversal"
],
"simMode": "swsim"
@@ -91,12 +110,13 @@
{
"groupId": "com.ctre.phoenix6.sim",
"artifactId": "simPigeonIMU",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"isJar": false,
"skipInvalidPlatforms": true,
"validPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
"osxuniversal"
],
"simMode": "swsim"
@@ -104,12 +124,13 @@
{
"groupId": "com.ctre.phoenix6.sim",
"artifactId": "simCANCoder",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"isJar": false,
"skipInvalidPlatforms": true,
"validPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
"osxuniversal"
],
"simMode": "swsim"
@@ -117,12 +138,13 @@
{
"groupId": "com.ctre.phoenix6.sim",
"artifactId": "simProTalonFX",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"isJar": false,
"skipInvalidPlatforms": true,
"validPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
"osxuniversal"
],
"simMode": "swsim"
@@ -130,12 +152,13 @@
{
"groupId": "com.ctre.phoenix6.sim",
"artifactId": "simProCANcoder",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"isJar": false,
"skipInvalidPlatforms": true,
"validPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
"osxuniversal"
],
"simMode": "swsim"
@@ -143,12 +166,27 @@
{
"groupId": "com.ctre.phoenix6.sim",
"artifactId": "simProPigeon2",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"isJar": false,
"skipInvalidPlatforms": true,
"validPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simProCANrange",
+ "version": "25.0.0-beta-4",
+ "isJar": false,
+ "skipInvalidPlatforms": true,
+ "validPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "linuxarm64",
"osxuniversal"
],
"simMode": "swsim"
@@ -158,7 +196,7 @@
{
"groupId": "com.ctre.phoenix6",
"artifactId": "wpiapi-cpp",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"libName": "CTRE_Phoenix6_WPI",
"headerClassifier": "headers",
"sharedLibrary": true,
@@ -166,6 +204,7 @@
"binaryPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
"linuxathena"
],
"simMode": "hwsim"
@@ -173,7 +212,7 @@
{
"groupId": "com.ctre.phoenix6",
"artifactId": "tools",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"libName": "CTRE_PhoenixTools",
"headerClassifier": "headers",
"sharedLibrary": true,
@@ -181,6 +220,7 @@
"binaryPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
"linuxathena"
],
"simMode": "hwsim"
@@ -188,7 +228,7 @@
{
"groupId": "com.ctre.phoenix6.sim",
"artifactId": "wpiapi-cpp-sim",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"libName": "CTRE_Phoenix6_WPISim",
"headerClassifier": "headers",
"sharedLibrary": true,
@@ -196,6 +236,7 @@
"binaryPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
"osxuniversal"
],
"simMode": "swsim"
@@ -203,7 +244,7 @@
{
"groupId": "com.ctre.phoenix6.sim",
"artifactId": "tools-sim",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"libName": "CTRE_PhoenixTools_Sim",
"headerClassifier": "headers",
"sharedLibrary": true,
@@ -211,6 +252,7 @@
"binaryPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
"osxuniversal"
],
"simMode": "swsim"
@@ -218,7 +260,7 @@
{
"groupId": "com.ctre.phoenix6.sim",
"artifactId": "simTalonSRX",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"libName": "CTRE_SimTalonSRX",
"headerClassifier": "headers",
"sharedLibrary": true,
@@ -226,21 +268,7 @@
"binaryPlatforms": [
"windowsx86-64",
"linuxx86-64",
- "osxuniversal"
- ],
- "simMode": "swsim"
- },
- {
- "groupId": "com.ctre.phoenix6.sim",
- "artifactId": "simTalonFX",
- "version": "24.3.0",
- "libName": "CTRE_SimTalonFX",
- "headerClassifier": "headers",
- "sharedLibrary": true,
- "skipInvalidPlatforms": true,
- "binaryPlatforms": [
- "windowsx86-64",
- "linuxx86-64",
+ "linuxarm64",
"osxuniversal"
],
"simMode": "swsim"
@@ -248,7 +276,7 @@
{
"groupId": "com.ctre.phoenix6.sim",
"artifactId": "simVictorSPX",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"libName": "CTRE_SimVictorSPX",
"headerClassifier": "headers",
"sharedLibrary": true,
@@ -256,6 +284,7 @@
"binaryPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
"osxuniversal"
],
"simMode": "swsim"
@@ -263,7 +292,7 @@
{
"groupId": "com.ctre.phoenix6.sim",
"artifactId": "simPigeonIMU",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"libName": "CTRE_SimPigeonIMU",
"headerClassifier": "headers",
"sharedLibrary": true,
@@ -271,6 +300,7 @@
"binaryPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
"osxuniversal"
],
"simMode": "swsim"
@@ -278,7 +308,7 @@
{
"groupId": "com.ctre.phoenix6.sim",
"artifactId": "simCANCoder",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"libName": "CTRE_SimCANCoder",
"headerClassifier": "headers",
"sharedLibrary": true,
@@ -286,6 +316,7 @@
"binaryPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
"osxuniversal"
],
"simMode": "swsim"
@@ -293,7 +324,7 @@
{
"groupId": "com.ctre.phoenix6.sim",
"artifactId": "simProTalonFX",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"libName": "CTRE_SimProTalonFX",
"headerClassifier": "headers",
"sharedLibrary": true,
@@ -301,6 +332,7 @@
"binaryPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
"osxuniversal"
],
"simMode": "swsim"
@@ -308,7 +340,7 @@
{
"groupId": "com.ctre.phoenix6.sim",
"artifactId": "simProCANcoder",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"libName": "CTRE_SimProCANcoder",
"headerClassifier": "headers",
"sharedLibrary": true,
@@ -316,6 +348,7 @@
"binaryPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
"osxuniversal"
],
"simMode": "swsim"
@@ -323,7 +356,7 @@
{
"groupId": "com.ctre.phoenix6.sim",
"artifactId": "simProPigeon2",
- "version": "24.3.0",
+ "version": "25.0.0-beta-4",
"libName": "CTRE_SimProPigeon2",
"headerClassifier": "headers",
"sharedLibrary": true,
@@ -331,6 +364,23 @@
"binaryPlatforms": [
"windowsx86-64",
"linuxx86-64",
+ "linuxarm64",
+ "osxuniversal"
+ ],
+ "simMode": "swsim"
+ },
+ {
+ "groupId": "com.ctre.phoenix6.sim",
+ "artifactId": "simProCANrange",
+ "version": "25.0.0-beta-4",
+ "libName": "CTRE_SimProCANrange",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxx86-64",
+ "linuxarm64",
"osxuniversal"
],
"simMode": "swsim"
diff --git a/vendordeps/WPILibNewCommands.json b/vendordeps/WPILibNewCommands.json
index 67bf389..3718e0a 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": "2024",
+ "frcYear": "2025",
"mavenUrls": [],
"jsonUrl": "",
"javaDependencies": [
diff --git a/vendordeps/photonlib-v2025.0.0-beta-6.json b/vendordeps/photonlib-v2025.0.0-beta-6.json
new file mode 100644
index 0000000..6a23ba8
--- /dev/null
+++ b/vendordeps/photonlib-v2025.0.0-beta-6.json
@@ -0,0 +1,71 @@
+{
+ "fileName": "photonlib.json",
+ "name": "photonlib",
+ "version": "v2025.0.0-beta-6",
+ "uuid": "515fe07e-bfc6-11fa-b3de-0242ac130004",
+ "frcYear": "2025",
+ "mavenUrls": [
+ "https://maven.photonvision.org/repository/internal",
+ "https://maven.photonvision.org/repository/snapshots"
+ ],
+ "jsonUrl": "https://maven.photonvision.org/repository/internal/org/photonvision/photonlib-json/1.0/photonlib-json-1.0.json",
+ "jniDependencies": [
+ {
+ "groupId": "org.photonvision",
+ "artifactId": "photontargeting-cpp",
+ "version": "v2025.0.0-beta-6",
+ "skipInvalidPlatforms": true,
+ "isJar": false,
+ "validPlatforms": [
+ "windowsx86-64",
+ "linuxathena",
+ "linuxx86-64",
+ "osxuniversal"
+ ]
+ }
+ ],
+ "cppDependencies": [
+ {
+ "groupId": "org.photonvision",
+ "artifactId": "photonlib-cpp",
+ "version": "v2025.0.0-beta-6",
+ "libName": "photonlib",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxathena",
+ "linuxx86-64",
+ "osxuniversal"
+ ]
+ },
+ {
+ "groupId": "org.photonvision",
+ "artifactId": "photontargeting-cpp",
+ "version": "v2025.0.0-beta-6",
+ "libName": "photontargeting",
+ "headerClassifier": "headers",
+ "sharedLibrary": true,
+ "skipInvalidPlatforms": true,
+ "binaryPlatforms": [
+ "windowsx86-64",
+ "linuxathena",
+ "linuxx86-64",
+ "osxuniversal"
+ ]
+ }
+ ],
+ "javaDependencies": [
+ {
+ "groupId": "org.photonvision",
+ "artifactId": "photonlib-java",
+ "version": "v2025.0.0-beta-6"
+ },
+ {
+ "groupId": "org.photonvision",
+ "artifactId": "photontargeting-java",
+ "version": "v2025.0.0-beta-6"
+ }
+ ]
+}