From 8a8a1ee973811913ce5f19f0c3a23b73a46e1f4d Mon Sep 17 00:00:00 2001 From: Huck-Richardson Date: Wed, 8 Jan 2025 21:06:11 -0500 Subject: [PATCH 1/5] Started adding the biscuit --- .../frc/robot/constants/BiscuitConstants.java | 17 +++++- .../robot/subsystems/biscuit/BiscuitIO.java | 23 ++++++- .../robot/subsystems/biscuit/BiscuitIOFX.java | 60 ++++++++++++++++++- .../subsystems/biscuit/BiscuitSubsystem.java | 48 ++++++++++++++- 4 files changed, 144 insertions(+), 4 deletions(-) diff --git a/src/main/java/frc/robot/constants/BiscuitConstants.java b/src/main/java/frc/robot/constants/BiscuitConstants.java index 4d46333e..21c2485a 100644 --- a/src/main/java/frc/robot/constants/BiscuitConstants.java +++ b/src/main/java/frc/robot/constants/BiscuitConstants.java @@ -1,3 +1,18 @@ package frc.robot.constants; -public class BiscuitConstants {} +import static edu.wpi.first.units.Units.Rotations; + +import com.ctre.phoenix6.configs.TalonFXConfiguration; +import edu.wpi.first.units.measure.Angle; + +public class BiscuitConstants { + + public static TalonFXConfiguration talonConfiguration() { + TalonFXConfiguration talonFXConfiguration = new TalonFXConfiguration(); + return talonFXConfiguration; + } + + public static Angle kZero = Rotations.of(42); // Will need to be experimentally determined + public static int talonID = 3; // Needs to be replaces with real number + public static double kCloseEnough = 2137473647; // This is a little out of wack. +} diff --git a/src/main/java/frc/robot/subsystems/biscuit/BiscuitIO.java b/src/main/java/frc/robot/subsystems/biscuit/BiscuitIO.java index 45a776f2..2a3a97f6 100644 --- a/src/main/java/frc/robot/subsystems/biscuit/BiscuitIO.java +++ b/src/main/java/frc/robot/subsystems/biscuit/BiscuitIO.java @@ -1,3 +1,24 @@ package frc.robot.subsystems.biscuit; -public class BiscuitIO {} +import static edu.wpi.first.units.Units.Rotations; +import static edu.wpi.first.units.Units.RotationsPerSecond; + +import edu.wpi.first.units.measure.Angle; +import edu.wpi.first.units.measure.AngularVelocity; +import org.littletonrobotics.junction.AutoLog; +import org.strykeforce.telemetry.TelemetryService; + +public interface BiscuitIO { + + @AutoLog + public class BiscuitIOInputs { + public Angle position = Rotations.of(0); + public AngularVelocity velocity = RotationsPerSecond.of(0); + } + + public default void setPosition(Angle position) {} + + public default void updateInputs(BiscuitIOInputs inputs) {} + + public default void registerWith(TelemetryService telemetry) {} +} diff --git a/src/main/java/frc/robot/subsystems/biscuit/BiscuitIOFX.java b/src/main/java/frc/robot/subsystems/biscuit/BiscuitIOFX.java index 2c5a726e..71a04cd5 100644 --- a/src/main/java/frc/robot/subsystems/biscuit/BiscuitIOFX.java +++ b/src/main/java/frc/robot/subsystems/biscuit/BiscuitIOFX.java @@ -1,3 +1,61 @@ package frc.robot.subsystems.biscuit; -public class BiscuitIOFX {} +import com.ctre.phoenix6.StatusSignal; +import com.ctre.phoenix6.configs.TalonFXConfiguration; +import com.ctre.phoenix6.configs.TalonFXConfigurator; +import com.ctre.phoenix6.controls.MotionMagicDutyCycle; +import com.ctre.phoenix6.hardware.TalonFX; +import edu.wpi.first.units.measure.Angle; +import edu.wpi.first.units.measure.AngularVelocity; +import frc.robot.constants.BiscuitConstants; +import frc.robot.subsystems.biscuit.BiscuitIO.BiscuitIOInputs; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.strykeforce.telemetry.TelemetryService; +// import com.ctre.phoenix6.BaseStatusSignal.refreshAll; + +public class BiscuitIOFX implements BiscuitIO { + + private Logger logger; + private TalonFX talon; + + private final Angle sensorInitial; + private Angle setPoint; + private StatusSignal position; + private StatusSignal velocity; + + TalonFXConfigurator configurator; + private MotionMagicDutyCycle positionRequest = + new MotionMagicDutyCycle(0).withEnableFOC(false).withFeedForward(0); + + public BiscuitIOFX() { + // Logger initialization with class name + logger = LoggerFactory.getLogger(this.getClass()); + // Moter initialization with ID from constants + talon = new TalonFX(BiscuitConstants.talonID); + // Set the starting encoder position + sensorInitial = talon.getPosition().getValue(); + + // Reset and configure moter settings + configurator = talon.getConfigurator(); + configurator.apply(new TalonFXConfiguration()); + configurator.apply(BiscuitConstants.talonConfiguration()); + + velocity = talon.getVelocity(); + position = talon.getPosition(); + } + + public void setPosition(Angle position) { + setPoint = position.plus(BiscuitConstants.kZero); + talon.setControl(positionRequest.withPosition(setPoint)); + } + + public void updateInputs(BiscuitIOInputs inputs) { + // inputs.velocity = velocity.refresh().getValue(); + inputs.position = position.refresh().getValue().minus(BiscuitConstants.kZero); + } + + public void registerWith(TelemetryService telemetry) { + telemetry.register(talon, true); + } +} diff --git a/src/main/java/frc/robot/subsystems/biscuit/BiscuitSubsystem.java b/src/main/java/frc/robot/subsystems/biscuit/BiscuitSubsystem.java index 213d3f21..929bf0c7 100644 --- a/src/main/java/frc/robot/subsystems/biscuit/BiscuitSubsystem.java +++ b/src/main/java/frc/robot/subsystems/biscuit/BiscuitSubsystem.java @@ -1,3 +1,49 @@ package frc.robot.subsystems.biscuit; -public class BiscuitSubsystem {} +import static edu.wpi.first.units.Units.Rotations; + +import edu.wpi.first.units.measure.*; +import frc.robot.constants.BiscuitConstants; +import java.util.Set; +import org.strykeforce.telemetry.TelemetryService; +import org.strykeforce.telemetry.measurable.MeasurableSubsystem; +import org.strykeforce.telemetry.measurable.Measure; + +public class BiscuitSubsystem extends MeasurableSubsystem { + + private BiscuitIO io; + private BiscuitIOInputsAutoLogged inputs = new BiscuitIOInputsAutoLogged(); + private Angle setPoint; + + public void setPosition(Angle position) { + io.setPosition(position); + } + + public Angle getPosition(Angle position) { + return inputs.position; + } + + public AngularVelocity getVelocity(AngularVelocity velocity) { + return inputs.velocity; + } + + @Override + public void periodic() { + io.updateInputs(inputs); + } + + @Override + public void registerWith(TelemetryService telemetry) { + super.registerWith(telemetry); + io.registerWith(telemetry); + } + + public boolean isFinished() { + return setPoint.minus(inputs.position).abs(Rotations) <= BiscuitConstants.kCloseEnough; + } + + @Override + public Set getMeasures() { + return Set.of(new Measure("Is Biscuit Finished", () -> isFinished() ? 1.0 : 0.0)); + } +} From 27cbf8d4ae3990c87649c115f8d5cf86cb17dcc3 Mon Sep 17 00:00:00 2001 From: Huck-Richardson Date: Thu, 9 Jan 2025 20:13:52 -0500 Subject: [PATCH 2/5] Added the rest of the biscuit --- .../frc/robot/constants/BiscuitConstants.java | 100 +++++++++++++++++- .../robot/subsystems/biscuit/BiscuitIO.java | 3 + .../robot/subsystems/biscuit/BiscuitIOFX.java | 31 +++++- .../subsystems/biscuit/BiscuitSubsystem.java | 5 + 4 files changed, 134 insertions(+), 5 deletions(-) diff --git a/src/main/java/frc/robot/constants/BiscuitConstants.java b/src/main/java/frc/robot/constants/BiscuitConstants.java index 21c2485a..c39b00aa 100644 --- a/src/main/java/frc/robot/constants/BiscuitConstants.java +++ b/src/main/java/frc/robot/constants/BiscuitConstants.java @@ -2,17 +2,115 @@ import static edu.wpi.first.units.Units.Rotations; +import com.ctre.phoenix6.configs.CurrentLimitsConfigs; +import com.ctre.phoenix6.configs.HardwareLimitSwitchConfigs; +import com.ctre.phoenix6.configs.MotionMagicConfigs; +import com.ctre.phoenix6.configs.MotorOutputConfigs; +import com.ctre.phoenix6.configs.Slot0Configs; +import com.ctre.phoenix6.configs.SoftwareLimitSwitchConfigs; import com.ctre.phoenix6.configs.TalonFXConfiguration; +import com.ctre.phoenix6.configs.VoltageConfigs; +import com.ctre.phoenix6.signals.ForwardLimitSourceValue; +import com.ctre.phoenix6.signals.ForwardLimitTypeValue; +import com.ctre.phoenix6.signals.GravityTypeValue; +import com.ctre.phoenix6.signals.NeutralModeValue; +import com.ctre.phoenix6.signals.ReverseLimitSourceValue; +import com.ctre.phoenix6.signals.ReverseLimitTypeValue; import edu.wpi.first.units.measure.Angle; public class BiscuitConstants { public static TalonFXConfiguration talonConfiguration() { TalonFXConfiguration talonFXConfiguration = new TalonFXConfiguration(); + return talonFXConfiguration; } + // These are all wrong right now because we don't have any actual info public static Angle kZero = Rotations.of(42); // Will need to be experimentally determined - public static int talonID = 3; // Needs to be replaces with real number + public static int talonID = 3; public static double kCloseEnough = 2137473647; // This is a little out of wack. + public static final Angle kMaxFwd = Rotations.of(100); + public static final Angle kMaxRev = Rotations.of(-100); + // public static Angle Level1 = ; + + // Disables the TalonFX by setting it's voltage to zero. Not very shocking. + public static TalonFXConfiguration disableTalon() { + TalonFXConfiguration disableConfig = new TalonFXConfiguration(); + + VoltageConfigs voltage = + new VoltageConfigs().withPeakForwardVoltage(0).withPeakReverseVoltage(0); + disableConfig.Voltage = voltage; + + HardwareLimitSwitchConfigs limitSwitch = + new HardwareLimitSwitchConfigs().withForwardLimitEnable(false); + disableConfig.HardwareLimitSwitch = limitSwitch; + + return disableConfig; + } + + // I copied and pasted this because I'm lazy + public static TalonFXConfiguration getFXConfig() { + TalonFXConfiguration fxConfig = new TalonFXConfiguration(); + + CurrentLimitsConfigs current = + new CurrentLimitsConfigs() + .withStatorCurrentLimit(10) + .withStatorCurrentLimitEnable(false) + .withStatorCurrentLimit(20) + .withSupplyCurrentLimit(10) + .withSupplyCurrentLowerLimit(8) + .withSupplyCurrentLowerTime(0.02) + .withSupplyCurrentLimitEnable(true); + fxConfig.CurrentLimits = current; + + HardwareLimitSwitchConfigs hwLimit = + new HardwareLimitSwitchConfigs() + .withForwardLimitAutosetPositionEnable(false) + .withForwardLimitEnable(false) + .withForwardLimitType(ForwardLimitTypeValue.NormallyOpen) + .withForwardLimitSource(ForwardLimitSourceValue.LimitSwitchPin) + .withReverseLimitAutosetPositionEnable(false) + .withReverseLimitEnable(false) + .withReverseLimitType(ReverseLimitTypeValue.NormallyOpen) + .withReverseLimitSource(ReverseLimitSourceValue.LimitSwitchPin); + fxConfig.HardwareLimitSwitch = hwLimit; + + SoftwareLimitSwitchConfigs swLimit = + new SoftwareLimitSwitchConfigs() + .withForwardSoftLimitEnable(true) + .withForwardSoftLimitThreshold(kMaxFwd) + .withReverseSoftLimitEnable(true) + .withReverseSoftLimitThreshold(kMaxRev); + fxConfig.SoftwareLimitSwitch = swLimit; + + Slot0Configs slot0 = + new Slot0Configs() + .withKP(0) + .withKI(0) + .withKD(0) + .withGravityType(GravityTypeValue.Elevator_Static) + .withKG(0) + .withKS(0) + .withKV(0) + .withKA(0); + fxConfig.Slot0 = slot0; + + MotionMagicConfigs motionMagic = + new MotionMagicConfigs() + .withMotionMagicAcceleration(0) + .withMotionMagicCruiseVelocity(0) + .withMotionMagicExpo_kA(0) + .withMotionMagicExpo_kV(0) + .withMotionMagicJerk(0); + fxConfig.MotionMagic = motionMagic; + + MotorOutputConfigs motorOut = + new MotorOutputConfigs() + .withDutyCycleNeutralDeadband(0.01) + .withNeutralMode(NeutralModeValue.Coast); + fxConfig.MotorOutput = motorOut; + + return fxConfig; + } } diff --git a/src/main/java/frc/robot/subsystems/biscuit/BiscuitIO.java b/src/main/java/frc/robot/subsystems/biscuit/BiscuitIO.java index 2a3a97f6..4a91db18 100644 --- a/src/main/java/frc/robot/subsystems/biscuit/BiscuitIO.java +++ b/src/main/java/frc/robot/subsystems/biscuit/BiscuitIO.java @@ -14,6 +14,7 @@ public interface BiscuitIO { public class BiscuitIOInputs { public Angle position = Rotations.of(0); public AngularVelocity velocity = RotationsPerSecond.of(0); + public boolean fwdLimitSwitchOpen = false; } public default void setPosition(Angle position) {} @@ -21,4 +22,6 @@ public default void setPosition(Angle position) {} public default void updateInputs(BiscuitIOInputs inputs) {} public default void registerWith(TelemetryService telemetry) {} + + public default void zero() {} } diff --git a/src/main/java/frc/robot/subsystems/biscuit/BiscuitIOFX.java b/src/main/java/frc/robot/subsystems/biscuit/BiscuitIOFX.java index 71a04cd5..a63ef54b 100644 --- a/src/main/java/frc/robot/subsystems/biscuit/BiscuitIOFX.java +++ b/src/main/java/frc/robot/subsystems/biscuit/BiscuitIOFX.java @@ -1,18 +1,21 @@ package frc.robot.subsystems.biscuit; +import com.ctre.phoenix6.BaseStatusSignal; import com.ctre.phoenix6.StatusSignal; import com.ctre.phoenix6.configs.TalonFXConfiguration; import com.ctre.phoenix6.configs.TalonFXConfigurator; import com.ctre.phoenix6.controls.MotionMagicDutyCycle; import com.ctre.phoenix6.hardware.TalonFX; +import com.ctre.phoenix6.signals.ForwardLimitTypeValue; import edu.wpi.first.units.measure.Angle; import edu.wpi.first.units.measure.AngularVelocity; +import edu.wpi.first.wpilibj.Alert; +import edu.wpi.first.wpilibj.Alert.AlertType; import frc.robot.constants.BiscuitConstants; import frc.robot.subsystems.biscuit.BiscuitIO.BiscuitIOInputs; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.strykeforce.telemetry.TelemetryService; -// import com.ctre.phoenix6.BaseStatusSignal.refreshAll; public class BiscuitIOFX implements BiscuitIO { @@ -23,6 +26,11 @@ public class BiscuitIOFX implements BiscuitIO { private Angle setPoint; private StatusSignal position; private StatusSignal velocity; + private StatusSignal fwdLimitSwitch; + private boolean didZero; + private boolean fwdLimitSwitchOpen; + private Angle offset; + private Alert rangeAlert = new Alert("Biscuit overextended! Shuting down!", AlertType.kError); TalonFXConfigurator configurator; private MotionMagicDutyCycle positionRequest = @@ -40,7 +48,7 @@ public BiscuitIOFX() { configurator = talon.getConfigurator(); configurator.apply(new TalonFXConfiguration()); configurator.apply(BiscuitConstants.talonConfiguration()); - + // Set our variables velocity = talon.getVelocity(); position = talon.getPosition(); } @@ -51,11 +59,26 @@ public void setPosition(Angle position) { } public void updateInputs(BiscuitIOInputs inputs) { - // inputs.velocity = velocity.refresh().getValue(); - inputs.position = position.refresh().getValue().minus(BiscuitConstants.kZero); + BaseStatusSignal.refreshAll(velocity, position, fwdLimitSwitch); + inputs.velocity = velocity.getValue(); + inputs.position = position.getValue().minus(BiscuitConstants.kZero); + inputs.fwdLimitSwitchOpen = fwdLimitSwitch.getValueAsDouble() == 1; } public void registerWith(TelemetryService telemetry) { telemetry.register(talon, true); } + + public void zero() { + didZero = false; + if (fwdLimitSwitchOpen == true) { + Angle pos = position.getValue(); + offset = BiscuitConstants.kZero.minus(pos); + didZero = true; + } else { + rangeAlert.set(true); + logger.error("Biscuit overextended! Shutting down movement!"); + configurator.apply(BiscuitConstants.disableTalon()); + } + } } diff --git a/src/main/java/frc/robot/subsystems/biscuit/BiscuitSubsystem.java b/src/main/java/frc/robot/subsystems/biscuit/BiscuitSubsystem.java index 929bf0c7..ca3703e9 100644 --- a/src/main/java/frc/robot/subsystems/biscuit/BiscuitSubsystem.java +++ b/src/main/java/frc/robot/subsystems/biscuit/BiscuitSubsystem.java @@ -17,6 +17,7 @@ public class BiscuitSubsystem extends MeasurableSubsystem { public void setPosition(Angle position) { io.setPosition(position); + setPoint = position; } public Angle getPosition(Angle position) { @@ -46,4 +47,8 @@ public boolean isFinished() { public Set getMeasures() { return Set.of(new Measure("Is Biscuit Finished", () -> isFinished() ? 1.0 : 0.0)); } + + public void zero() { + io.zero(); + } } From 0a169119f85d1a51f389370985efb16b31882d87 Mon Sep 17 00:00:00 2001 From: Huck-Richardson Date: Mon, 13 Jan 2025 18:36:06 -0500 Subject: [PATCH 3/5] Protected the code --- .../java/frc/robot/subsystems/biscuit/BiscuitSubsystem.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/frc/robot/subsystems/biscuit/BiscuitSubsystem.java b/src/main/java/frc/robot/subsystems/biscuit/BiscuitSubsystem.java index ca3703e9..0cdbe91f 100644 --- a/src/main/java/frc/robot/subsystems/biscuit/BiscuitSubsystem.java +++ b/src/main/java/frc/robot/subsystems/biscuit/BiscuitSubsystem.java @@ -1,3 +1,5 @@ +//Blessed by the great tech-priests of the Adeptus Mechanicus + package frc.robot.subsystems.biscuit; import static edu.wpi.first.units.Units.Rotations; From 15fbab42c016425a5daad13a91d60e5e790ecc10 Mon Sep 17 00:00:00 2001 From: Huck-Richardson Date: Thu, 16 Jan 2025 18:54:17 -0500 Subject: [PATCH 4/5] Fixed the issues --- .vscode/launch.json | 12 ++++++++--- .../frc/robot/constants/BiscuitConstants.java | 21 ++++--------------- .../robot/subsystems/biscuit/BiscuitIO.java | 1 + .../robot/subsystems/biscuit/BiscuitIOFX.java | 9 ++++---- .../subsystems/biscuit/BiscuitSubsystem.java | 10 +++++++-- 5 files changed, 26 insertions(+), 27 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index c9c9713d..18414213 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,18 +4,24 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ - + { + "type": "java", + "name": "Main", + "request": "launch", + "mainClass": "frc.robot.Main", + "projectName": "reefscape" + }, { "type": "wpilib", "name": "WPILib Desktop Debug", "request": "launch", - "desktop": true, + "desktop": true }, { "type": "wpilib", "name": "WPILib roboRIO Debug", "request": "launch", - "desktop": false, + "desktop": false } ] } diff --git a/src/main/java/frc/robot/constants/BiscuitConstants.java b/src/main/java/frc/robot/constants/BiscuitConstants.java index c39b00aa..c589b419 100644 --- a/src/main/java/frc/robot/constants/BiscuitConstants.java +++ b/src/main/java/frc/robot/constants/BiscuitConstants.java @@ -19,14 +19,8 @@ import edu.wpi.first.units.measure.Angle; public class BiscuitConstants { - - public static TalonFXConfiguration talonConfiguration() { - TalonFXConfiguration talonFXConfiguration = new TalonFXConfiguration(); - - return talonFXConfiguration; - } - // These are all wrong right now because we don't have any actual info + public static Angle kZero = Rotations.of(42); // Will need to be experimentally determined public static int talonID = 3; public static double kCloseEnough = 2137473647; // This is a little out of wack. @@ -36,17 +30,10 @@ public static TalonFXConfiguration talonConfiguration() { // Disables the TalonFX by setting it's voltage to zero. Not very shocking. public static TalonFXConfiguration disableTalon() { - TalonFXConfiguration disableConfig = new TalonFXConfiguration(); - VoltageConfigs voltage = - new VoltageConfigs().withPeakForwardVoltage(0).withPeakReverseVoltage(0); - disableConfig.Voltage = voltage; - - HardwareLimitSwitchConfigs limitSwitch = - new HardwareLimitSwitchConfigs().withForwardLimitEnable(false); - disableConfig.HardwareLimitSwitch = limitSwitch; - - return disableConfig; + new VoltageConfigs().withPeakForwardVoltage(0.0).withPeakReverseVoltage(0.0); + getFXConfig().Voltage = voltage; + return getFXConfig(); } // I copied and pasted this because I'm lazy diff --git a/src/main/java/frc/robot/subsystems/biscuit/BiscuitIO.java b/src/main/java/frc/robot/subsystems/biscuit/BiscuitIO.java index 4a91db18..02d8743e 100644 --- a/src/main/java/frc/robot/subsystems/biscuit/BiscuitIO.java +++ b/src/main/java/frc/robot/subsystems/biscuit/BiscuitIO.java @@ -15,6 +15,7 @@ public class BiscuitIOInputs { public Angle position = Rotations.of(0); public AngularVelocity velocity = RotationsPerSecond.of(0); public boolean fwdLimitSwitchOpen = false; + public boolean didZero; } public default void setPosition(Angle position) {} diff --git a/src/main/java/frc/robot/subsystems/biscuit/BiscuitIOFX.java b/src/main/java/frc/robot/subsystems/biscuit/BiscuitIOFX.java index a63ef54b..e519e701 100644 --- a/src/main/java/frc/robot/subsystems/biscuit/BiscuitIOFX.java +++ b/src/main/java/frc/robot/subsystems/biscuit/BiscuitIOFX.java @@ -23,7 +23,6 @@ public class BiscuitIOFX implements BiscuitIO { private TalonFX talon; private final Angle sensorInitial; - private Angle setPoint; private StatusSignal position; private StatusSignal velocity; private StatusSignal fwdLimitSwitch; @@ -47,22 +46,22 @@ public BiscuitIOFX() { // Reset and configure moter settings configurator = talon.getConfigurator(); configurator.apply(new TalonFXConfiguration()); - configurator.apply(BiscuitConstants.talonConfiguration()); + configurator.apply(BiscuitConstants.getFXConfig()); // Set our variables velocity = talon.getVelocity(); position = talon.getPosition(); } public void setPosition(Angle position) { - setPoint = position.plus(BiscuitConstants.kZero); - talon.setControl(positionRequest.withPosition(setPoint)); + talon.setControl(positionRequest.withPosition(position)); } public void updateInputs(BiscuitIOInputs inputs) { BaseStatusSignal.refreshAll(velocity, position, fwdLimitSwitch); inputs.velocity = velocity.getValue(); - inputs.position = position.getValue().minus(BiscuitConstants.kZero); + inputs.position = position.getValue(); inputs.fwdLimitSwitchOpen = fwdLimitSwitch.getValueAsDouble() == 1; + inputs.didZero = didZero; } public void registerWith(TelemetryService telemetry) { diff --git a/src/main/java/frc/robot/subsystems/biscuit/BiscuitSubsystem.java b/src/main/java/frc/robot/subsystems/biscuit/BiscuitSubsystem.java index 0cdbe91f..d6e69c31 100644 --- a/src/main/java/frc/robot/subsystems/biscuit/BiscuitSubsystem.java +++ b/src/main/java/frc/robot/subsystems/biscuit/BiscuitSubsystem.java @@ -1,4 +1,4 @@ -//Blessed by the great tech-priests of the Adeptus Mechanicus +// Blessed by the great tech-priests of the Adeptus Mechanicus package frc.robot.subsystems.biscuit; @@ -7,6 +7,7 @@ import edu.wpi.first.units.measure.*; import frc.robot.constants.BiscuitConstants; import java.util.Set; +import org.littletonrobotics.junction.Logger; import org.strykeforce.telemetry.TelemetryService; import org.strykeforce.telemetry.measurable.MeasurableSubsystem; import org.strykeforce.telemetry.measurable.Measure; @@ -33,6 +34,9 @@ public AngularVelocity getVelocity(AngularVelocity velocity) { @Override public void periodic() { io.updateInputs(inputs); + Logger.processInputs(getName(), inputs); + Logger.recordOutput("Biscuit setPoint", setPoint); + Logger.recordOutput("Is Biscuit Finished", isFinished() ? 1.0 : 0.0); } @Override @@ -47,7 +51,9 @@ public boolean isFinished() { @Override public Set getMeasures() { - return Set.of(new Measure("Is Biscuit Finished", () -> isFinished() ? 1.0 : 0.0)); + return Set.of( + new Measure("Is Biscuit Finished", () -> isFinished() ? 1.0 : 0.0), + new Measure("Biscuit Set Point", () -> setPoint.in(Rotations))); } public void zero() { From 46aebd42fdc9a7f115e71b7d49dee4901d3af756 Mon Sep 17 00:00:00 2001 From: mwitcpalek Date: Mon, 20 Jan 2025 20:11:59 -0500 Subject: [PATCH 5/5] tweak disabling --- src/main/java/frc/robot/constants/BiscuitConstants.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/frc/robot/constants/BiscuitConstants.java b/src/main/java/frc/robot/constants/BiscuitConstants.java index c589b419..e714e54a 100644 --- a/src/main/java/frc/robot/constants/BiscuitConstants.java +++ b/src/main/java/frc/robot/constants/BiscuitConstants.java @@ -29,11 +29,11 @@ public class BiscuitConstants { // public static Angle Level1 = ; // Disables the TalonFX by setting it's voltage to zero. Not very shocking. - public static TalonFXConfiguration disableTalon() { + public static VoltageConfigs disableTalon() { VoltageConfigs voltage = new VoltageConfigs().withPeakForwardVoltage(0.0).withPeakReverseVoltage(0.0); getFXConfig().Voltage = voltage; - return getFXConfig(); + return voltage; } // I copied and pasted this because I'm lazy