From 350645aabdcb51825ee9afd5bd59949f90e9dd40 Mon Sep 17 00:00:00 2001 From: Nilesh Agarwalla <49494444+BrownGenius@users.noreply.github.com> Date: Wed, 24 Jan 2024 20:11:51 -0500 Subject: [PATCH] Initial YAGSL based swerve implementation (#13) * Basic Swerve YAGSL implementation --------- Co-authored-by: Alex --- .../controllerproperties.json | 8 + .../swervePracticeBot/modules/backleft.json | 30 ++ .../swervePracticeBot/modules/backright.json | 30 ++ .../swervePracticeBot/modules/frontleft.json | 30 ++ .../swervePracticeBot/modules/frontright.json | 30 ++ .../modules/physicalproperties.json | 16 + .../modules/pidfproperties.json | 16 + .../deploy/swervePracticeBot/swervedrive.json | 14 + src/main/java/frc/robot/Robot.java | 2 +- src/main/java/frc/robot/RobotContainer.java | 19 + .../robot/commands/drive/DriveCommand.java | 34 ++ .../frc/robot/subsystems/drive/Drive.java | 26 ++ .../frc/robot/subsystems/drive/DriveBase.java | 19 + .../subsystems/drive/DriveSwerveYAGSL.java | 52 +++ vendordeps/NavX.json | 40 +++ vendordeps/PathplannerLib.json | 38 ++ vendordeps/Phoenix5.json | 151 ++++++++ vendordeps/Phoenix6.json | 339 ++++++++++++++++++ vendordeps/ReduxLib_2024.json | 55 +++ vendordeps/yagsl.json | 20 ++ 20 files changed, 968 insertions(+), 1 deletion(-) create mode 100644 src/main/deploy/swervePracticeBot/controllerproperties.json create mode 100644 src/main/deploy/swervePracticeBot/modules/backleft.json create mode 100644 src/main/deploy/swervePracticeBot/modules/backright.json create mode 100644 src/main/deploy/swervePracticeBot/modules/frontleft.json create mode 100644 src/main/deploy/swervePracticeBot/modules/frontright.json create mode 100644 src/main/deploy/swervePracticeBot/modules/physicalproperties.json create mode 100644 src/main/deploy/swervePracticeBot/modules/pidfproperties.json create mode 100644 src/main/deploy/swervePracticeBot/swervedrive.json create mode 100644 src/main/java/frc/robot/commands/drive/DriveCommand.java create mode 100644 src/main/java/frc/robot/subsystems/drive/Drive.java create mode 100644 src/main/java/frc/robot/subsystems/drive/DriveBase.java create mode 100644 src/main/java/frc/robot/subsystems/drive/DriveSwerveYAGSL.java create mode 100644 vendordeps/NavX.json create mode 100644 vendordeps/PathplannerLib.json create mode 100644 vendordeps/Phoenix5.json create mode 100644 vendordeps/Phoenix6.json create mode 100644 vendordeps/ReduxLib_2024.json create mode 100644 vendordeps/yagsl.json diff --git a/src/main/deploy/swervePracticeBot/controllerproperties.json b/src/main/deploy/swervePracticeBot/controllerproperties.json new file mode 100644 index 00000000..669097e7 --- /dev/null +++ b/src/main/deploy/swervePracticeBot/controllerproperties.json @@ -0,0 +1,8 @@ +{ + "angleJoystickRadiusDeadband": 0.5, + "heading": { + "p": 0.4, + "i": 0, + "d": 0.01 + } +} \ No newline at end of file diff --git a/src/main/deploy/swervePracticeBot/modules/backleft.json b/src/main/deploy/swervePracticeBot/modules/backleft.json new file mode 100644 index 00000000..658de410 --- /dev/null +++ b/src/main/deploy/swervePracticeBot/modules/backleft.json @@ -0,0 +1,30 @@ +{ + "location": { + "front": -9.75, + "left": 9.75 + }, + "absoluteEncoderOffset": -257.2, + "drive": { + "type": "sparkmax", + "id": 12, + "canbus": null + }, + "inverted": { + "drive": false, + "angle": true + }, + "angle": { + "type": "sparkmax", + "id": 16, + "canbus": null + }, + "conversionFactor": { + "angle": 0, + "drive": 0 + }, + "encoder": { + "type": "cancoder", + "id": 20, + "canbus": null + } +} \ No newline at end of file diff --git a/src/main/deploy/swervePracticeBot/modules/backright.json b/src/main/deploy/swervePracticeBot/modules/backright.json new file mode 100644 index 00000000..d8c7eb77 --- /dev/null +++ b/src/main/deploy/swervePracticeBot/modules/backright.json @@ -0,0 +1,30 @@ +{ + "location": { + "front": -9.75, + "left": -9.75 + }, + "absoluteEncoderOffset": -293, + "drive": { + "type": "sparkmax", + "id": 13, + "canbus": null + }, + "inverted": { + "drive": true, + "angle": true + }, + "angle": { + "type": "sparkmax", + "id": 17, + "canbus": null + }, + "conversionFactor": { + "angle": 0, + "drive": 0 + }, + "encoder": { + "type": "cancoder", + "id": 21, + "canbus": null + } +} \ No newline at end of file diff --git a/src/main/deploy/swervePracticeBot/modules/frontleft.json b/src/main/deploy/swervePracticeBot/modules/frontleft.json new file mode 100644 index 00000000..caf92980 --- /dev/null +++ b/src/main/deploy/swervePracticeBot/modules/frontleft.json @@ -0,0 +1,30 @@ +{ + "location": { + "front": 9.75, + "left": 9.75 + }, + "absoluteEncoderOffset": -230, + "drive": { + "type": "sparkmax", + "id": 10, + "canbus": null + }, + "inverted": { + "drive": false, + "angle": true + }, + "angle": { + "type": "sparkmax", + "id": 14, + "canbus": null + }, + "conversionFactor": { + "angle": 0, + "drive": 0 + }, + "encoder": { + "type": "cancoder", + "id": 18, + "canbus": null + } +} \ No newline at end of file diff --git a/src/main/deploy/swervePracticeBot/modules/frontright.json b/src/main/deploy/swervePracticeBot/modules/frontright.json new file mode 100644 index 00000000..9fc345e3 --- /dev/null +++ b/src/main/deploy/swervePracticeBot/modules/frontright.json @@ -0,0 +1,30 @@ +{ + "location": { + "front": 9.75, + "left": -9.75 + }, + "absoluteEncoderOffset": -290, + "drive": { + "type": "sparkmax", + "id": 11, + "canbus": null + }, + "inverted": { + "drive": false, + "angle": true + }, + "angle": { + "type": "sparkmax", + "id": 15, + "canbus": null + }, + "conversionFactor": { + "angle": 0, + "drive": 0 + }, + "encoder": { + "type": "cancoder", + "id": 19, + "canbus": null + } +} \ No newline at end of file diff --git a/src/main/deploy/swervePracticeBot/modules/physicalproperties.json b/src/main/deploy/swervePracticeBot/modules/physicalproperties.json new file mode 100644 index 00000000..9be10f3d --- /dev/null +++ b/src/main/deploy/swervePracticeBot/modules/physicalproperties.json @@ -0,0 +1,16 @@ +{ + "optimalVoltage": 12, + "wheelGripCoefficientOfFriction": 1.19, + "currentLimit": { + "drive": 40, + "angle": 20 + }, + "conversionFactor": { + "angle": 16.8, + "drive": 0.047286787200699704 + }, + "rampRate": { + "drive": 0.25, + "angle": 0.25 + } +} \ No newline at end of file diff --git a/src/main/deploy/swervePracticeBot/modules/pidfproperties.json b/src/main/deploy/swervePracticeBot/modules/pidfproperties.json new file mode 100644 index 00000000..99664bbe --- /dev/null +++ b/src/main/deploy/swervePracticeBot/modules/pidfproperties.json @@ -0,0 +1,16 @@ +{ + "drive": { + "p": 0.0020645, + "i": 0, + "d": 0, + "f": 0, + "iz": 0 + }, + "angle": { + "p": 0.01, + "i": 0, + "d": 0, + "f": 0, + "iz": 0 + } +} \ No newline at end of file diff --git a/src/main/deploy/swervePracticeBot/swervedrive.json b/src/main/deploy/swervePracticeBot/swervedrive.json new file mode 100644 index 00000000..d2b6dbd5 --- /dev/null +++ b/src/main/deploy/swervePracticeBot/swervedrive.json @@ -0,0 +1,14 @@ +{ + "imu": { + "type": "navx_mxp", + "id": 0, + "canbus": null + }, + "invertedIMU": true, + "modules": [ + "frontleft.json", + "frontright.json", + "backleft.json", + "backright.json" + ] +} \ No newline at end of file diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index 01bfba15..47cd0a12 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -57,7 +57,7 @@ public void robotInit() { } else {*/ if (isReal()) { // Running on real robot - Logger.addDataReceiver(new WPILOGWriter("/media/sda1/")); // Log to a USB stick + // Logger.addDataReceiver(new WPILOGWriter("/media/sda1/")); // Log to a USB stick Logger.addDataReceiver(new NT4Publisher()); // Publish data to NetworkTables } else { // Running in simulation diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index d3d9c0df..6080f156 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -4,12 +4,15 @@ package frc.robot; +import edu.wpi.first.math.MathUtil; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.Commands; import edu.wpi.first.wpilibj2.command.InstantCommand; import edu.wpi.first.wpilibj2.command.button.CommandXboxController; import frc.robot.commands.IntakeBaseCommand; import frc.robot.commands.ShooterEnable; +import frc.robot.commands.drive.DriveCommand; +import frc.robot.subsystems.drive.DriveSwerveYAGSL; import frc.robot.subsystems.intake.IntakeBase; import frc.robot.subsystems.intake.IntakeIOSim; import frc.robot.subsystems.intake.IntakeIOSparkMax; @@ -21,6 +24,7 @@ public class RobotContainer { public final CommandXboxController controller; public final ShooterSubsystem shooter; public final IntakeBase intake; + public final DriveSwerveYAGSL drive; public RobotContainer() { controller = new CommandXboxController(0); @@ -40,6 +44,8 @@ public RobotContainer() { intake = new IntakeBase(new IntakeIOSim()); } + drive = new DriveSwerveYAGSL(); + configureBindings(); } @@ -52,6 +58,19 @@ private void configureBindings() { intake, () -> controller.rightBumper().getAsBoolean(), () -> controller.leftBumper().getAsBoolean())); + + drive.setDefaultCommand( + new DriveCommand( + drive, + () -> MathUtil.applyDeadband(-controller.getLeftY(), 0.01), + () -> MathUtil.applyDeadband(-controller.getLeftX(), 0.01), + () -> MathUtil.applyDeadband(-controller.getRightX(), 0.01))); + // TODO: Move deadband to constants file + + controller + .start() + .onTrue( + new InstantCommand(() -> drive.setFieldOrientedDrive(!drive.isFieldOrientedDrive()))); } public Command getAutonomousCommand() { diff --git a/src/main/java/frc/robot/commands/drive/DriveCommand.java b/src/main/java/frc/robot/commands/drive/DriveCommand.java new file mode 100644 index 00000000..21c64932 --- /dev/null +++ b/src/main/java/frc/robot/commands/drive/DriveCommand.java @@ -0,0 +1,34 @@ +package frc.robot.commands.drive; + +import edu.wpi.first.math.kinematics.ChassisSpeeds; +import edu.wpi.first.wpilibj2.command.Command; +import frc.robot.subsystems.drive.DriveBase; +import java.util.function.DoubleSupplier; + +public class DriveCommand extends Command { + DriveBase drive; + DoubleSupplier speedX; + DoubleSupplier speedY; + DoubleSupplier rot; + + public DriveCommand( + DriveBase drive, DoubleSupplier speedX, DoubleSupplier speedY, DoubleSupplier rot) { + this.drive = drive; + this.speedX = speedX; + this.speedY = speedY; + this.rot = rot; + + addRequirements(drive); + } + + @Override + public void execute() { + ChassisSpeeds speeds = + new ChassisSpeeds( + speedX.getAsDouble() * drive.getMaxLinearSpeed(), + speedY.getAsDouble() * drive.getMaxLinearSpeed(), + rot.getAsDouble() * drive.getMaxAngularSpeed()); + + drive.runVelocity(speeds); + } +} diff --git a/src/main/java/frc/robot/subsystems/drive/Drive.java b/src/main/java/frc/robot/subsystems/drive/Drive.java new file mode 100644 index 00000000..a309baaa --- /dev/null +++ b/src/main/java/frc/robot/subsystems/drive/Drive.java @@ -0,0 +1,26 @@ +package frc.robot.subsystems.drive; + +import edu.wpi.first.math.kinematics.ChassisSpeeds; + +public interface Drive { + /** + * Sets the desired chassis speed + * + * @param velocity specifies the setpoint velocity for the chassis + */ + public void runVelocity(ChassisSpeeds velocity); + + /** + * This returns the robot's max linear speed in meter/sec + * + * @return speed in meter/sec + */ + public double getMaxLinearSpeed(); + + /** + * This returns the robot's max angular speed in radian/sec + * + * @return speed in radian/sec + */ + public double getMaxAngularSpeed(); +} diff --git a/src/main/java/frc/robot/subsystems/drive/DriveBase.java b/src/main/java/frc/robot/subsystems/drive/DriveBase.java new file mode 100644 index 00000000..734cdca6 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/drive/DriveBase.java @@ -0,0 +1,19 @@ +package frc.robot.subsystems.drive; + +import edu.wpi.first.math.kinematics.ChassisSpeeds; +import edu.wpi.first.wpilibj2.command.SubsystemBase; + +public class DriveBase extends SubsystemBase implements Drive { + @Override + public void runVelocity(ChassisSpeeds velocity) {} + + @Override + public double getMaxLinearSpeed() { + return 0; + } + + @Override + public double getMaxAngularSpeed() { + return 0; + } +} diff --git a/src/main/java/frc/robot/subsystems/drive/DriveSwerveYAGSL.java b/src/main/java/frc/robot/subsystems/drive/DriveSwerveYAGSL.java new file mode 100644 index 00000000..9699663d --- /dev/null +++ b/src/main/java/frc/robot/subsystems/drive/DriveSwerveYAGSL.java @@ -0,0 +1,52 @@ +package frc.robot.subsystems.drive; + +import edu.wpi.first.math.kinematics.ChassisSpeeds; +import edu.wpi.first.math.util.Units; +import edu.wpi.first.wpilibj.Filesystem; +import java.io.File; +import swervelib.SwerveDrive; +import swervelib.parser.SwerveParser; + +public class DriveSwerveYAGSL extends DriveBase { + private final double maximumSpeed = + Units.feetToMeters(4.5); // * TODO: Calculate actual max speed */ + private final File swerveJsonDirectory = + new File(Filesystem.getDeployDirectory(), "swervePracticeBot"); + private SwerveDrive swerveDrive; + private boolean fieldOrientedDrive = false; + + public DriveSwerveYAGSL() { + try { + swerveDrive = new SwerveParser(swerveJsonDirectory).createSwerveDrive(maximumSpeed); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + @Override + public void runVelocity(ChassisSpeeds velocity) { + if (fieldOrientedDrive) { + swerveDrive.driveFieldOriented(velocity); + } else { + swerveDrive.drive(velocity); + } + } + + @Override + public double getMaxLinearSpeed() { + return swerveDrive.getMaximumVelocity(); + } + + @Override + public double getMaxAngularSpeed() { + return swerveDrive.getMaximumAngularVelocity(); + } + + public void setFieldOrientedDrive(boolean enable) { + fieldOrientedDrive = enable; + } + + public boolean isFieldOrientedDrive() { + return fieldOrientedDrive; + } +} diff --git a/vendordeps/NavX.json b/vendordeps/NavX.json new file mode 100644 index 00000000..e978a5f7 --- /dev/null +++ b/vendordeps/NavX.json @@ -0,0 +1,40 @@ +{ + "fileName": "NavX.json", + "name": "NavX", + "version": "2024.1.0", + "uuid": "cb311d09-36e9-4143-a032-55bb2b94443b", + "frcYear": "2024", + "mavenUrls": [ + "https://dev.studica.com/maven/release/2024/" + ], + "jsonUrl": "https://dev.studica.com/releases/2024/NavX.json", + "javaDependencies": [ + { + "groupId": "com.kauailabs.navx.frc", + "artifactId": "navx-frc-java", + "version": "2024.1.0" + } + ], + "jniDependencies": [], + "cppDependencies": [ + { + "groupId": "com.kauailabs.navx.frc", + "artifactId": "navx-frc-cpp", + "version": "2024.1.0", + "headerClassifier": "headers", + "sourcesClassifier": "sources", + "sharedLibrary": false, + "libName": "navx_frc", + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "linuxathena", + "linuxraspbian", + "linuxarm32", + "linuxarm64", + "linuxx86-64", + "osxuniversal", + "windowsx86-64" + ] + } + ] +} \ No newline at end of file diff --git a/vendordeps/PathplannerLib.json b/vendordeps/PathplannerLib.json new file mode 100644 index 00000000..f86862cc --- /dev/null +++ b/vendordeps/PathplannerLib.json @@ -0,0 +1,38 @@ +{ + "fileName": "PathplannerLib.json", + "name": "PathplannerLib", + "version": "2024.1.3", + "uuid": "1b42324f-17c6-4875-8e77-1c312bc8c786", + "frcYear": "2024", + "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.1.3" + } + ], + "jniDependencies": [], + "cppDependencies": [ + { + "groupId": "com.pathplanner.lib", + "artifactId": "PathplannerLib-cpp", + "version": "2024.1.3", + "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/Phoenix5.json b/vendordeps/Phoenix5.json new file mode 100644 index 00000000..88a68dd0 --- /dev/null +++ b/vendordeps/Phoenix5.json @@ -0,0 +1,151 @@ +{ + "fileName": "Phoenix5.json", + "name": "CTRE-Phoenix (v5)", + "version": "5.33.0", + "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.0" + }, + { + "groupId": "com.ctre.phoenix", + "artifactId": "wpiapi-java", + "version": "5.33.0" + } + ], + "jniDependencies": [ + { + "groupId": "com.ctre.phoenix", + "artifactId": "cci", + "version": "5.33.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxathena" + ], + "simMode": "hwsim" + }, + { + "groupId": "com.ctre.phoenix.sim", + "artifactId": "cci-sim", + "version": "5.33.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "osxuniversal" + ], + "simMode": "swsim" + } + ], + "cppDependencies": [ + { + "groupId": "com.ctre.phoenix", + "artifactId": "wpiapi-cpp", + "version": "5.33.0", + "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.0", + "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.0", + "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.0", + "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.0", + "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.0", + "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/Phoenix6.json b/vendordeps/Phoenix6.json new file mode 100644 index 00000000..69a40798 --- /dev/null +++ b/vendordeps/Phoenix6.json @@ -0,0 +1,339 @@ +{ + "fileName": "Phoenix6.json", + "name": "CTRE-Phoenix (v6)", + "version": "24.1.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.1.0" + } + ], + "jniDependencies": [ + { + "groupId": "com.ctre.phoenix6", + "artifactId": "tools", + "version": "24.1.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxathena" + ], + "simMode": "hwsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "tools-sim", + "version": "24.1.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simTalonSRX", + "version": "24.1.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simTalonFX", + "version": "24.1.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simVictorSPX", + "version": "24.1.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simPigeonIMU", + "version": "24.1.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simCANCoder", + "version": "24.1.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProTalonFX", + "version": "24.1.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProCANcoder", + "version": "24.1.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProPigeon2", + "version": "24.1.0", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "osxuniversal" + ], + "simMode": "swsim" + } + ], + "cppDependencies": [ + { + "groupId": "com.ctre.phoenix6", + "artifactId": "wpiapi-cpp", + "version": "24.1.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.1.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.1.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.1.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.1.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.1.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.1.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.1.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.1.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.1.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.1.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.1.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/ReduxLib_2024.json b/vendordeps/ReduxLib_2024.json new file mode 100644 index 00000000..53bc91d2 --- /dev/null +++ b/vendordeps/ReduxLib_2024.json @@ -0,0 +1,55 @@ +{ + "fileName": "ReduxLib_2024.json", + "name": "ReduxLib", + "version": "2024.1.1", + "frcYear": 2024, + "uuid": "151ecca8-670b-4026-8160-cdd2679ef2bd", + "mavenUrls": [ + "https://maven.reduxrobotics.com/" + ], + "jsonUrl": "https://frcsdk.reduxrobotics.com/ReduxLib_2024.json", + "javaDependencies": [ + { + "groupId": "com.reduxrobotics.frc", + "artifactId": "ReduxLib-java", + "version": "2024.1.1" + } + ], + "jniDependencies": [ + { + "groupId": "com.reduxrobotics.frc", + "artifactId": "ReduxLib-driver", + "version": "2024.1.1", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "linuxathena", + "linuxx86-64", + "linuxarm32", + "linuxarm64", + "osxuniversal", + "windowsx86-64" + ] + } + ], + "cppDependencies": [ + { + "groupId": "com.reduxrobotics.frc", + "artifactId": "ReduxLib-cpp", + "version": "2024.1.1", + "libName": "ReduxLib-cpp", + "headerClassifier": "headers", + "sourcesClassifier": "sources", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "linuxathena", + "linuxx86-64", + "linuxarm32", + "linuxarm64", + "osxuniversal", + "windowsx86-64" + ] + } + ] +} \ No newline at end of file diff --git a/vendordeps/yagsl.json b/vendordeps/yagsl.json new file mode 100644 index 00000000..1840cf63 --- /dev/null +++ b/vendordeps/yagsl.json @@ -0,0 +1,20 @@ +{ + "fileName": "yagsl.json", + "name": "YAGSL", + "version": "2024.4.5", + "frcYear": "2024", + "uuid": "1ccce5a4-acd2-4d18-bca3-4b8047188400", + "mavenUrls": [ + "https://broncbotz3481.github.io/YAGSL-Lib/yagsl/repos" + ], + "jsonUrl": "https://broncbotz3481.github.io/YAGSL-Lib/yagsl/yagsl.json", + "javaDependencies": [ + { + "groupId": "swervelib", + "artifactId": "YAGSL-java", + "version": "2024.4.5" + } + ], + "jniDependencies": [], + "cppDependencies": [] +} \ No newline at end of file