From 36bdd24e6e3b221f8ae287f0b248395ddbc8f26f Mon Sep 17 00:00:00 2001 From: Arsema Robi Date: Wed, 24 Sep 2025 18:51:39 -0700 Subject: [PATCH 01/12] change all the same private variable within CB and PB to protected. --- .../subsystems/AlgaeArm/AlgaeArmIOCB.java | 23 +++++++++---------- .../subsystems/AlgaeArm/AlgaeArmIOPB.java | 18 +-------------- .../AlgaeRoller/AlgaeRollerIOCB.java | 4 ++-- .../AlgaeRoller/AlgaeRollerIOPB.java | 4 +--- .../AlgaeShooter/AlgaeShooterIOCB.java | 6 ++--- .../AlgaeShooter/AlgaeShooterIOPB.java | 6 +---- .../subsystems/AlgaeTilt/AlgaeTiltIOCB.java | 12 +++++----- .../subsystems/AlgaeTilt/AlgaeTiltIOPB.java | 11 ++------- .../ClimberWheel/ClimberWheelIOCB.java | 6 ++--- .../ClimberWheel/ClimberWheelIOPB.java | 8 ++----- .../ClimberWinch/ClimberWinchIOCB.java | 12 +++++----- .../ClimberWinch/ClimberWinchIOPB.java | 10 +------- .../CoralShooter/CoralShooterIOCB.java | 14 +++++------ .../CoralShooter/CoralShooterIOPB.java | 15 ++---------- .../subsystems/Elevator/ElevatorIOCB.java | 8 +++---- .../subsystems/Elevator/ElevatorIOPB.java | 6 +---- 16 files changed, 53 insertions(+), 110 deletions(-) diff --git a/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOCB.java b/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOCB.java index 00a19d16..cc8dd239 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOCB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOCB.java @@ -1,7 +1,6 @@ // Copyright (c) FIRST and other WPILib contributors. // Open Source Software; you can modify and/or share it under the terms of // the WPILib BSD license file in the root directory of this project. - package frc.robot.subsystems.AlgaeArm; import java.util.function.DoubleSupplier; @@ -32,21 +31,21 @@ public class AlgaeArmIOCB implements AlgaeArmIO { - private final SparkMax armMotor = new SparkMax(Constants.CompBotConstants.ALGAE_ARM_ID, MotorType.kBrushless); // placeholder // ID - private final RelativeEncoder encoder = armMotor.getEncoder(); + protected final SparkMax armMotor = new SparkMax(Constants.CompBotConstants.ALGAE_ARM_ID, MotorType.kBrushless); // placeholder // ID + protected final RelativeEncoder encoder = armMotor.getEncoder(); - private final double kP = 0.025; - private final double kI = 0.0; - private final double kD = 0.0; + protected final double kP = 0.025; + protected final double kI = 0.0; + protected final double kD = 0.0; - private final double POSITION_CONVERSION_FACTOR = (1.0 / 5.0) * (1.0 / 5.0) * (18.0 / 36.0) * (360.0 / 1.0); - private final double VELOCITY_CONVERSION_FACTOR = POSITION_CONVERSION_FACTOR / 60.0; + protected final double POSITION_CONVERSION_FACTOR = (1.0 / 5.0) * (1.0 / 5.0) * (18.0 / 36.0) * (360.0 / 1.0); + protected final double VELOCITY_CONVERSION_FACTOR = POSITION_CONVERSION_FACTOR / 60.0; - private final double FORWARD_LIMIT = 150.0; - private final double REVERSE_LIMIT = 10.0; - private final SparkMaxConfig sparkMaxConfig = new SparkMaxConfig(); + protected final double FORWARD_LIMIT = 150.0; + protected final double REVERSE_LIMIT = 10.0; + protected final SparkMaxConfig sparkMaxConfig = new SparkMaxConfig(); - private final double MAX_OUTPUT = 0.5; + protected final double MAX_OUTPUT = 0.5; /** Creates a new AlgaeArmIOPB. */ public AlgaeArmIOCB() { diff --git a/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOPB.java b/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOPB.java index e5e96709..54bd0dca 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOPB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOPB.java @@ -30,23 +30,7 @@ import edu.wpi.first.wpilibj2.command.SubsystemBase; import frc.robot.Constants; -public class AlgaeArmIOPB implements AlgaeArmIO { - - private final SparkMax armMotor = new SparkMax(Constants.PracticeBotConstants.ALGAE_ARM_ID, MotorType.kBrushless); // placeholder // ID - private final RelativeEncoder encoder = armMotor.getEncoder(); - - private final double kP = 0.025; - private final double kI = 0.0; - private final double kD = 0.0; - - private final double POSITION_CONVERSION_FACTOR = (1.0 / 5.0) * (1.0 / 5.0) * (18.0 / 36.0) * (360.0 / 1.0); - private final double VELOCITY_CONVERSION_FACTOR = POSITION_CONVERSION_FACTOR / 60.0; - - private final double FORWARD_LIMIT = 150.0; - private final double REVERSE_LIMIT = 1.0; - private final SparkMaxConfig sparkMaxConfig = new SparkMaxConfig(); - - private final double MAX_OUTPUT = 0.5; +public class AlgaeArmIOPB extends AlgaeArmIOCB{ /** Creates a new AlgaeArmIOPB. */ public AlgaeArmIOPB() { diff --git a/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOCB.java b/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOCB.java index 8f396209..d162d569 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOCB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOCB.java @@ -17,8 +17,8 @@ public class AlgaeRollerIOCB implements AlgaeRollerIO { private final SparkMax motor = new SparkMax(Constants.CompBotConstants.ALGAE_ROLLER, MotorType.kBrushless); - private final SparkMaxConfig config = new SparkMaxConfig(); - private final RelativeEncoder encoder = motor.getEncoder(); + protected final SparkMaxConfig config = new SparkMaxConfig(); + protected final RelativeEncoder encoder = motor.getEncoder(); /** Creates a new AlgaeIntakeRollerIOPB. */ public AlgaeRollerIOCB() { diff --git a/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOPB.java b/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOPB.java index e5638ece..7fb4e2cc 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOPB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOPB.java @@ -15,10 +15,8 @@ import edu.wpi.first.wpilibj2.command.SubsystemBase; import frc.robot.Constants; -public class AlgaeRollerIOPB implements AlgaeRollerIO { +public class AlgaeRollerIOPB extends AlgaeRollerIOCB { private final SparkMax motor = new SparkMax(Constants.PracticeBotConstants.ALGAE_ROLLER, MotorType.kBrushless); - private final SparkMaxConfig config = new SparkMaxConfig(); - private final RelativeEncoder encoder = motor.getEncoder(); /** Creates a new AlgaeIntakeRollerIOPB. */ public AlgaeRollerIOPB() { diff --git a/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOCB.java b/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOCB.java index f6730614..d91f6317 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOCB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOCB.java @@ -30,9 +30,9 @@ public class AlgaeShooterIOCB implements AlgaeShooterIO { private final SparkFlex algaeShooterMotorFront = new SparkFlex(Constants.CompBotConstants.ALGAE_SHOOTER_FRONT_ID, MotorType.kBrushless); // no ID private final SparkFlex algaeShooterMotorBack = new SparkFlex(Constants.CompBotConstants.ALGAE_SHOOTER_BACK_ID, MotorType.kBrushless); // no ID - private SparkFlexConfig frontConfig = new SparkFlexConfig(); - private SparkFlexConfig backConfig = new SparkFlexConfig(); - private final double positionConversionFactor = 1.0; + protected SparkFlexConfig frontConfig = new SparkFlexConfig(); + protected SparkFlexConfig backConfig = new SparkFlexConfig(); + protected final double positionConversionFactor = 1.0; /** Creates a new AlgaeShooterIOWB. */ public AlgaeShooterIOCB() { diff --git a/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOPB.java b/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOPB.java index 93f50137..a9690e76 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOPB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOPB.java @@ -25,15 +25,11 @@ import frc.robot.Constants; import frc.robot.subsystems.Elevator.ElevatorIO.ElevatorIOInputs; -public class AlgaeShooterIOPB implements AlgaeShooterIO { +public class AlgaeShooterIOPB extends AlgaeShooterIOCB { private final SparkFlex algaeShooterMotorFront = new SparkFlex(Constants.PracticeBotConstants.ALGAE_SHOOTER_FRONT_ID, MotorType.kBrushless); // no ID private final SparkFlex algaeShooterMotorBack = new SparkFlex(Constants.PracticeBotConstants.ALGAE_SHOOTER_BACK_ID, MotorType.kBrushless); // no ID - private SparkFlexConfig frontConfig = new SparkFlexConfig(); - private SparkFlexConfig backConfig = new SparkFlexConfig(); - private final double positionConversionFactor = 1.0; - /** Creates a new AlgaeShooterIOWB. */ public AlgaeShooterIOPB() { // TODO: add values diff --git a/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOCB.java b/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOCB.java index 705da6a7..c6794866 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOCB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOCB.java @@ -29,16 +29,16 @@ public class AlgaeTiltIOCB implements AlgaeTiltIO { // private final RelativeEncoder encoder = motor.getEncoder(); // TODO: make absolute when we get one!! private final double kP = 4; - private final double kI = 0.0; - private final double kD = 0.0; + protected final double kI = 0.0; + protected final double kD = 0.0; - private final double forwardLimit = 38.0; - private final double reverseLimit = -10.0; + protected final double forwardLimit = 38.0; + protected final double reverseLimit = -10.0; private final double ZERO_OFFSET = 0.2145; // TODO: find the zero offset - private final double positionConversionFactor = 1.0; - private final SparkMaxConfig sparkMaxConfig = new SparkMaxConfig(); + protected final double positionConversionFactor = 1.0; + protected final SparkMaxConfig sparkMaxConfig = new SparkMaxConfig(); /** Creates a new AlgaeIntakeIOPB. */ public AlgaeTiltIOCB() { diff --git a/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOPB.java b/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOPB.java index 3183fa53..509665b7 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOPB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOPB.java @@ -20,18 +20,12 @@ import edu.wpi.first.wpilibj2.command.SubsystemBase; import frc.robot.Constants; -public class AlgaeTiltIOPB implements AlgaeTiltIO { +public class AlgaeTiltIOPB extends AlgaeTiltIOCB { private final SparkMax motor = new SparkMax(Constants.PracticeBotConstants.ALGAE_TILT, MotorType.kBrushless); private final RelativeEncoder encoder = motor.getEncoder(); // TODO: make absolute when we get one!! private final double kP = 0.035 * 2.0; - private final double kI = 0.0; - private final double kD = 0.0; - - private final double forwardLimit = 38.0; - private final double reverseLimit = -10.0; - - private final double positionConversionFactor = 1.0; + private final SparkMaxConfig sparkMaxConfig = new SparkMaxConfig(); /** Creates a new AlgaeIntakeIOPB. */ @@ -46,7 +40,6 @@ public AlgaeTiltIOPB() { softLimitConfig.reverseSoftLimitEnabled(true); sparkMaxConfig.apply(softLimitConfig); - ClosedLoopConfig closedLoopConfig = new ClosedLoopConfig(); closedLoopConfig.pid(kP, kI, kD); sparkMaxConfig.apply(closedLoopConfig); diff --git a/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOCB.java b/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOCB.java index 264b4976..2cb851fc 100644 --- a/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOCB.java +++ b/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOCB.java @@ -20,10 +20,10 @@ public class ClimberWheelIOCB implements ClimberWheelIO { private final SparkMax wheelMotor = new SparkMax(CompBotConstants.CLIMBER_ROLLER_ID, MotorType.kBrushless); - private final RelativeEncoder encoder = wheelMotor.getEncoder(); - private final PIDController pid = new PIDController(0, 0, 0); // TODO: find pid values + protected final RelativeEncoder encoder = wheelMotor.getEncoder(); + protected final PIDController pid = new PIDController(0, 0, 0); // TODO: find pid values - private final SparkMaxConfig config = new SparkMaxConfig(); + protected final SparkMaxConfig config = new SparkMaxConfig(); /** Creates a new ClimberWheelIOPB. */ public ClimberWheelIOCB() { diff --git a/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOPB.java b/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOPB.java index f7b8c094..2481a653 100644 --- a/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOPB.java +++ b/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOPB.java @@ -17,13 +17,9 @@ import frc.robot.Constants.PracticeBotConstants; import frc.robot.subsystems.ClimberWheel.ClimberWheelIO.ClimberWheelIOInputs; -public class ClimberWheelIOPB implements ClimberWheelIO { +public class ClimberWheelIOPB extends ClimberWheelIOCB { private final SparkMax wheelMotor = new SparkMax(PracticeBotConstants.CLIMBER_ROLLER_ID, MotorType.kBrushless); - private final RelativeEncoder encoder = wheelMotor.getEncoder(); - private final PIDController pid = new PIDController(0, 0, 0); // TODO: find pid values - - private final SparkMaxConfig config = new SparkMaxConfig(); - + /** Creates a new ClimberWheelIOPB. */ public ClimberWheelIOPB() { config.idleMode(IdleMode.kBrake); diff --git a/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOCB.java b/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOCB.java index 0fdee45e..b3dd90c8 100644 --- a/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOCB.java +++ b/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOCB.java @@ -24,14 +24,14 @@ public class ClimberWinchIOCB implements ClimberWinchIO { private final SparkMax winchMotor = new SparkMax(CompBotConstants.CLIMBER_WINCH_ID, MotorType.kBrushless); - private final RelativeEncoder winchEncoder = winchMotor.getEncoder(); + protected final RelativeEncoder winchEncoder = winchMotor.getEncoder(); - private final double kP = 0.2; - private final double kI = 0.0; - private final double kD = 0.0; + protected final double kP = 0.2; + protected final double kI = 0.0; + protected final double kD = 0.0; - private final double positionConversionFactor = 1.0; - private final SparkMaxConfig config = new SparkMaxConfig(); + protected final double positionConversionFactor = 1.0; + protected final SparkMaxConfig config = new SparkMaxConfig(); /** Creates a new ClimberIOPB. */ public ClimberWinchIOCB() { diff --git a/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOPB.java b/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOPB.java index 2326b946..3896497a 100644 --- a/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOPB.java +++ b/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOPB.java @@ -19,17 +19,9 @@ import edu.wpi.first.wpilibj2.command.SubsystemBase; import frc.robot.Constants.PracticeBotConstants; -public class ClimberWinchIOPB implements ClimberWinchIO { +public class ClimberWinchIOPB extends ClimberWinchIOCB { private final SparkMax winchMotor = new SparkMax(PracticeBotConstants.CLIMBER_WINCH_ID, MotorType.kBrushless); - private final RelativeEncoder winchEncoder = winchMotor.getEncoder(); - - private final double kP = 0.2; - private final double kI = 0.0; - private final double kD = 0.0; - - private final double positionConversionFactor = 1.0; - private final SparkMaxConfig config = new SparkMaxConfig(); /** Creates a new ClimberIOPB. */ public ClimberWinchIOPB() { diff --git a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java index 9b795160..ce9fdf37 100644 --- a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java +++ b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java @@ -19,16 +19,16 @@ public class CoralShooterIOCB implements CoralShooterIO { private final SparkMax outtakeMotor = new SparkMax(Constants.CompBotConstants.CORAL_SHOOTER_ID, MotorType.kBrushless); - private final RelativeEncoder encoder = outtakeMotor.getEncoder(); - private final SparkMaxConfig sparkMaxConfig = new SparkMaxConfig(); + protected final RelativeEncoder encoder = outtakeMotor.getEncoder(); + protected final SparkMaxConfig sparkMaxConfig = new SparkMaxConfig(); private final Canandcolor intakeSensor = new Canandcolor(Constants.CompBotConstants.INTAKE_SENSOR_ID); private final Canandcolor outtakeSensor = new Canandcolor(Constants.CompBotConstants.OUTTAKE_SENSOR_ID); - private final double KP = 0.0; - private final double KI = 0.0; - private final double KD = 0.0; - private final double KF = 0.0; + protected final double KP = 0.0; + protected final double KI = 0.0; + protected final double KD = 0.0; + protected final double KF = 0.0; public CoralShooterIOCB() { sparkMaxConfig.idleMode(IdleMode.kBrake); @@ -40,7 +40,7 @@ public void setDutyCycle(double dutyCycle) { outtakeMotor.set(dutyCycle); } - private boolean isInOuttakeSensor() { + protected boolean isInOuttakeSensor() { return outtakeSensor.getProximity() < 0.1; } diff --git a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOPB.java b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOPB.java index 5eef4de0..c7db13b3 100644 --- a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOPB.java +++ b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOPB.java @@ -16,20 +16,13 @@ import frc.robot.Constants; /** Add your docs here. */ -public class CoralShooterIOPB implements CoralShooterIO { +public class CoralShooterIOPB extends CoralShooterIOCB { private final SparkMax outtakeMotor = new SparkMax(Constants.PracticeBotConstants.CORAL_SHOOTER_ID, MotorType.kBrushless); - private final RelativeEncoder encoder = outtakeMotor.getEncoder(); - private final SparkMaxConfig sparkMaxConfig = new SparkMaxConfig(); - + private final Canandcolor intakeSensor = new Canandcolor(Constants.PracticeBotConstants.INTAKE_SENSOR_ID); private final Canandcolor outtakeSensor = new Canandcolor(Constants.PracticeBotConstants.OUTTAKE_SENSOR_ID); - private final double KP = 0.0; - private final double KI = 0.0; - private final double KD = 0.0; - private final double KF = 0.0; - public CoralShooterIOPB() { sparkMaxConfig.idleMode(IdleMode.kBrake); sparkMaxConfig.inverted(false); @@ -40,10 +33,6 @@ public void setDutyCycle(double dutyCycle) { outtakeMotor.set(dutyCycle); } - private boolean isInOuttakeSensor() { - return outtakeSensor.getProximity() < 0.1; - } - private boolean isInIntakeSensor() { return intakeSensor.getProximity() < 0.06; } diff --git a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java index 67c7cf7c..ff0de766 100644 --- a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java +++ b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java @@ -39,16 +39,16 @@ public class ElevatorIOCB implements ElevatorIO { private final TalonFX backElevatorMotor = new TalonFX(CompBotConstants.BACK_ELEVATOR_ID, CompBotConstants.CANBUS_NAME); private final TalonFX frontElevatorMotor = new TalonFX(CompBotConstants.FRONT_ELEVATOR_ID, CompBotConstants.CANBUS_NAME); // private final DifferentialMechanism elevatorDiff; - private TalonFXConfiguration frontConfig = new TalonFXConfiguration(); - private TalonFXConfiguration backConfig = new TalonFXConfiguration(); - private MotorOutputConfigs outputConfigs = new MotorOutputConfigs(); + protected TalonFXConfiguration frontConfig = new TalonFXConfiguration(); + protected TalonFXConfiguration backConfig = new TalonFXConfiguration(); + protected MotorOutputConfigs outputConfigs = new MotorOutputConfigs(); // private DifferentialSensorsConfigs sens = backConfig.DifferentialSensors; private final DigitalInput bottomSwitch = new DigitalInput( WoodbotConstants.ELEVATOR_BOTTOM_SWITCH ); - private final double GEAR_RATIO = 1.0; + protected final double GEAR_RATIO = 1.0; public ElevatorIOCB() { final double UPPER_LIMIT = 31.0; diff --git a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOPB.java b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOPB.java index 1a8f34df..53c12e8e 100644 --- a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOPB.java +++ b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOPB.java @@ -34,20 +34,16 @@ import frc.robot.Constants.WoodbotConstants; /** Add your docs here. */ -public class ElevatorIOPB implements ElevatorIO { +public class ElevatorIOPB extends ElevatorIOCB { private final TalonFX backElevatorMotor = new TalonFX(PracticeBotConstants.BACK_ELEVATOR_ID, PracticeBotConstants.CANBUS_NAME); private final TalonFX frontElevatorMotor = new TalonFX(PracticeBotConstants.FRONT_ELEVATOR_ID, PracticeBotConstants.CANBUS_NAME); // private final DifferentialMechanism elevatorDiff; - private TalonFXConfiguration frontConfig = new TalonFXConfiguration(); - private TalonFXConfiguration backConfig = new TalonFXConfiguration(); - private MotorOutputConfigs outputConfigs = new MotorOutputConfigs(); // private DifferentialSensorsConfigs sens = backConfig.DifferentialSensors; private final DigitalInput bottomSwitch = new DigitalInput( WoodbotConstants.ELEVATOR_BOTTOM_SWITCH ); - private final double GEAR_RATIO = 1.0; public ElevatorIOPB() { final double UPPER_LIMIT = 31.0; From 171a8e1a2b167822286e2bb3a0c3a6c572b8bd33 Mon Sep 17 00:00:00 2001 From: Kaleb-Robotics <26BallmannKaleb@bprep.org> Date: Wed, 24 Sep 2025 19:02:22 -0700 Subject: [PATCH 02/12] HELLO THIS IS A COMMIT --- src/main/java/frc/robot/commands/Autos.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/frc/robot/commands/Autos.java b/src/main/java/frc/robot/commands/Autos.java index 43a0e779..2d0cb76f 100644 --- a/src/main/java/frc/robot/commands/Autos.java +++ b/src/main/java/frc/robot/commands/Autos.java @@ -18,3 +18,6 @@ // throw new UnsupportedOperationException("This is a utility class!"); // } // } + +System.out.println("hello world"); +hello this is kaleb From 4b78c6d4fd18666adfda96c6e7f696ee050428cb Mon Sep 17 00:00:00 2001 From: Arsema Robi Date: Wed, 24 Sep 2025 19:29:32 -0700 Subject: [PATCH 03/12] Deleted repetitive code in PB & CB IO layers --- .../subsystems/AlgaeArm/AlgaeArmIOCB.java | 1 + .../subsystems/AlgaeArm/AlgaeArmIOPB.java | 26 ------------- .../AlgaeRoller/AlgaeRollerIOCB.java | 4 +- .../AlgaeRoller/AlgaeRollerIOPB.java | 13 +------ .../AlgaeShooter/AlgaeShooterIOCB.java | 6 ++- .../AlgaeShooter/AlgaeShooterIOPB.java | 34 +++-------------- .../subsystems/AlgaeTilt/AlgaeTiltIOCB.java | 11 ++++-- .../subsystems/AlgaeTilt/AlgaeTiltIOPB.java | 18 +++------ .../ClimberWheel/ClimberWheelIOCB.java | 4 +- .../ClimberWheel/ClimberWheelIOPB.java | 15 +------- .../ClimberWinch/ClimberWinchIOCB.java | 4 +- .../ClimberWinch/ClimberWinchIOPB.java | 19 ++-------- .../CoralShooter/CoralShooterIOCB.java | 13 +++++-- .../CoralShooter/CoralShooterIOPB.java | 30 +++------------ .../subsystems/Elevator/ElevatorIOCB.java | 7 +++- .../subsystems/Elevator/ElevatorIOPB.java | 37 +++---------------- 16 files changed, 66 insertions(+), 176 deletions(-) diff --git a/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOCB.java b/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOCB.java index cc8dd239..bc237947 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOCB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOCB.java @@ -1,6 +1,7 @@ // Copyright (c) FIRST and other WPILib contributors. // Open Source Software; you can modify and/or share it under the terms of // the WPILib BSD license file in the root directory of this project. +//if CB & PB IO files have equal values, remove from PB, which extends CB. Everything "private" must be "protected" package frc.robot.subsystems.AlgaeArm; import java.util.function.DoubleSupplier; diff --git a/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOPB.java b/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOPB.java index 54bd0dca..ce24b308 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOPB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOPB.java @@ -58,31 +58,5 @@ public AlgaeArmIOPB() { armMotor.configure(sparkMaxConfig, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); } - public void updateInputs(AlgaeArmIOInputs inputs) { - inputs.algaeArmAngle = encoder.getPosition(); - inputs.algaeArmVelocity = encoder.getVelocity(); - inputs.algaeArmVoltage = armMotor.getBusVoltage() * armMotor.getAppliedOutput(); - inputs.algaeArmCurrent = armMotor.getOutputCurrent(); - inputs.algaeArmTemp = armMotor.getMotorTemperature(); - } - - public void setDutyCycle(double dutyCycle) { - armMotor.set(dutyCycle); - } - - public void setPosition(double position) { - armMotor.getClosedLoopController().setReference(position, ControlType.kPosition); - } - - public void enableReverseSoftLimit(boolean enabled){ - sparkMaxConfig.softLimit.reverseSoftLimitEnabled(enabled); - } - /** - * method for updating the encoder position - * @param value new encoder position in motor rotations - */ - public void setEncoder(double value) { - encoder.setPosition(value); - } } \ No newline at end of file diff --git a/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOCB.java b/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOCB.java index d162d569..9146fea6 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOCB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOCB.java @@ -16,12 +16,14 @@ import frc.robot.Constants; public class AlgaeRollerIOCB implements AlgaeRollerIO { - private final SparkMax motor = new SparkMax(Constants.CompBotConstants.ALGAE_ROLLER, MotorType.kBrushless); + protected final SparkMax motor; protected final SparkMaxConfig config = new SparkMaxConfig(); protected final RelativeEncoder encoder = motor.getEncoder(); /** Creates a new AlgaeIntakeRollerIOPB. */ public AlgaeRollerIOCB() { + motor= new SparkMax(Constants.CompBotConstants.ALGAE_ROLLER, MotorType.kBrushless); + config.inverted(true); config.idleMode(IdleMode.kBrake); motor.configure(config, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); diff --git a/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOPB.java b/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOPB.java index 7fb4e2cc..aee989c7 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOPB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOPB.java @@ -16,23 +16,14 @@ import frc.robot.Constants; public class AlgaeRollerIOPB extends AlgaeRollerIOCB { - private final SparkMax motor = new SparkMax(Constants.PracticeBotConstants.ALGAE_ROLLER, MotorType.kBrushless); /** Creates a new AlgaeIntakeRollerIOPB. */ public AlgaeRollerIOPB() { + motor = new SparkMax(Constants.PracticeBotConstants.ALGAE_ROLLER, MotorType.kBrushless); + config.inverted(true); config.idleMode(IdleMode.kBrake); motor.configure(config, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); } - public void setDutyCycle(double dutyCycle) { - motor.set(dutyCycle); - } - - public void updateInputs(AlgaeRollerIOInputs inputs) { - inputs.rollerDutyCycle = motor.get(); - inputs.rollerPosition = encoder.getPosition(); - inputs.rollerVelocity = encoder.getVelocity(); - inputs.rollerCurrent = motor.getAppliedOutput(); - } } diff --git a/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOCB.java b/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOCB.java index d91f6317..0988dbdc 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOCB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOCB.java @@ -27,8 +27,8 @@ public class AlgaeShooterIOCB implements AlgaeShooterIO { - private final SparkFlex algaeShooterMotorFront = new SparkFlex(Constants.CompBotConstants.ALGAE_SHOOTER_FRONT_ID, MotorType.kBrushless); // no ID - private final SparkFlex algaeShooterMotorBack = new SparkFlex(Constants.CompBotConstants.ALGAE_SHOOTER_BACK_ID, MotorType.kBrushless); // no ID + protected final SparkFlex algaeShooterMotorFront; + protected final SparkFlex algaeShooterMotorBack; protected SparkFlexConfig frontConfig = new SparkFlexConfig(); protected SparkFlexConfig backConfig = new SparkFlexConfig(); @@ -36,6 +36,8 @@ public class AlgaeShooterIOCB implements AlgaeShooterIO { /** Creates a new AlgaeShooterIOWB. */ public AlgaeShooterIOCB() { + algaeShooterMotorFront = new SparkFlex(Constants.CompBotConstants.ALGAE_SHOOTER_FRONT_ID, MotorType.kBrushless); // no ID + algaeShooterMotorBack = new SparkFlex(Constants.CompBotConstants.ALGAE_SHOOTER_BACK_ID, MotorType.kBrushless); // no ID // TODO: add values final double kP = 0.0; final double kI = 0.0; diff --git a/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOPB.java b/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOPB.java index a9690e76..de6818c0 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOPB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOPB.java @@ -27,11 +27,13 @@ public class AlgaeShooterIOPB extends AlgaeShooterIOCB { - private final SparkFlex algaeShooterMotorFront = new SparkFlex(Constants.PracticeBotConstants.ALGAE_SHOOTER_FRONT_ID, MotorType.kBrushless); // no ID - private final SparkFlex algaeShooterMotorBack = new SparkFlex(Constants.PracticeBotConstants.ALGAE_SHOOTER_BACK_ID, MotorType.kBrushless); // no ID - + /** Creates a new AlgaeShooterIOWB. */ public AlgaeShooterIOPB() { + algaeShooterMotorFront = new SparkFlex(Constants.PracticeBotConstants.ALGAE_SHOOTER_FRONT_ID, MotorType.kBrushless); // no ID + algaeShooterMotorBack = new SparkFlex(Constants.PracticeBotConstants.ALGAE_SHOOTER_BACK_ID, MotorType.kBrushless); // no ID + + // TODO: add values final double kP = 0.0; final double kI = 0.0; @@ -52,30 +54,4 @@ public AlgaeShooterIOPB() { algaeShooterMotorFront.configure(frontConfig, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); algaeShooterMotorBack.configure(backConfig, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); } - - public void updateInputs(AlgaeShooterIOInputs inputs) { - inputs.algaeShooterFrontVoltage = algaeShooterMotorFront.getBusVoltage(); - inputs.algaeShooterFrontPosition = algaeShooterMotorFront.getEncoder().getPosition(); - inputs.algaeShooterFrontVelocity = algaeShooterMotorFront.getEncoder().getVelocity(); - inputs.algaeShooterFromCurrent = algaeShooterMotorFront.getOutputCurrent(); - inputs.algaeShooterFromTemperature = algaeShooterMotorFront.getMotorTemperature(); - - inputs.algaeShooterBackVoltage = algaeShooterMotorBack.getBusVoltage(); - inputs.algaeShooterBackPosition = algaeShooterMotorBack.getEncoder().getPosition(); - inputs.algaeShooterBackVelocity = algaeShooterMotorBack.getEncoder().getVelocity(); - inputs.algaeShooterBackCurrent = algaeShooterMotorBack.getOutputCurrent(); - inputs.algaeShooterBackTemperature = algaeShooterMotorBack.getMotorTemperature(); - } - - public void setDutyCycle(double dutyCycle) { - algaeShooterMotorFront.set(dutyCycle); - } - - public void setVelocity(double velocity) { - algaeShooterMotorFront.getClosedLoopController().setReference(velocity, ControlType.kVelocity); - } - - public void stop() { - algaeShooterMotorFront.stopMotor(); - } } diff --git a/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOCB.java b/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOCB.java index c6794866..adb8cd0f 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOCB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOCB.java @@ -24,11 +24,11 @@ import frc.robot.Constants; public class AlgaeTiltIOCB implements AlgaeTiltIO { - private final SparkMax motor = new SparkMax(Constants.CompBotConstants.ALGAE_TILT, MotorType.kBrushless); - private final AbsoluteEncoder absEncoder = motor.getAbsoluteEncoder(); // TODO: make absolute when we get one!! + protected final SparkMax motor; + protected final AbsoluteEncoder absEncoder; // private final RelativeEncoder encoder = motor.getEncoder(); // TODO: make absolute when we get one!! - private final double kP = 4; + protected final double kP; protected final double kI = 0.0; protected final double kD = 0.0; @@ -42,6 +42,11 @@ public class AlgaeTiltIOCB implements AlgaeTiltIO { /** Creates a new AlgaeIntakeIOPB. */ public AlgaeTiltIOCB() { + motor = new SparkMax(Constants.CompBotConstants.ALGAE_TILT, MotorType.kBrushless); + absEncoder = motor.getAbsoluteEncoder(); // TODO: make absolute when we get one!! + + kP = 4; + sparkMaxConfig.idleMode(IdleMode.kBrake); sparkMaxConfig.inverted(true); diff --git a/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOPB.java b/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOPB.java index 509665b7..4425fa5c 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOPB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOPB.java @@ -21,15 +21,16 @@ import frc.robot.Constants; public class AlgaeTiltIOPB extends AlgaeTiltIOCB { - private final SparkMax motor = new SparkMax(Constants.PracticeBotConstants.ALGAE_TILT, MotorType.kBrushless); private final RelativeEncoder encoder = motor.getEncoder(); // TODO: make absolute when we get one!! - private final double kP = 0.035 * 2.0; - - private final SparkMaxConfig sparkMaxConfig = new SparkMaxConfig(); - /** Creates a new AlgaeIntakeIOPB. */ public AlgaeTiltIOPB() { + motor = new SparkMax(Constants.PracticeBotConstants.ALGAE_TILT, MotorType.kBrushless); + + kP = 0.035 * 2.0; + + + sparkMaxConfig.idleMode(IdleMode.kBrake); sparkMaxConfig.inverted(false); @@ -51,13 +52,6 @@ public AlgaeTiltIOPB() { motor.configure(sparkMaxConfig, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); } - public void setDutyCycle(double dutyCycle) { - motor.set(dutyCycle); - } - - public void setPosition(double position) { - motor.getClosedLoopController().setReference(position, ControlType.kPosition); - } /** * method for updating the encoder value diff --git a/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOCB.java b/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOCB.java index 2cb851fc..145c8aa3 100644 --- a/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOCB.java +++ b/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOCB.java @@ -19,7 +19,7 @@ import frc.robot.subsystems.ClimberWheel.ClimberWheelIO.ClimberWheelIOInputs; public class ClimberWheelIOCB implements ClimberWheelIO { - private final SparkMax wheelMotor = new SparkMax(CompBotConstants.CLIMBER_ROLLER_ID, MotorType.kBrushless); + protected final SparkMax wheelMotor; protected final RelativeEncoder encoder = wheelMotor.getEncoder(); protected final PIDController pid = new PIDController(0, 0, 0); // TODO: find pid values @@ -27,6 +27,8 @@ public class ClimberWheelIOCB implements ClimberWheelIO { /** Creates a new ClimberWheelIOPB. */ public ClimberWheelIOCB() { + wheelMotor = new SparkMax(CompBotConstants.CLIMBER_ROLLER_ID, MotorType.kBrushless); + config.idleMode(IdleMode.kBrake); config.inverted(false); wheelMotor.configure(config, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); diff --git a/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOPB.java b/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOPB.java index 2481a653..72d294b1 100644 --- a/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOPB.java +++ b/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOPB.java @@ -18,24 +18,13 @@ import frc.robot.subsystems.ClimberWheel.ClimberWheelIO.ClimberWheelIOInputs; public class ClimberWheelIOPB extends ClimberWheelIOCB { - private final SparkMax wheelMotor = new SparkMax(PracticeBotConstants.CLIMBER_ROLLER_ID, MotorType.kBrushless); /** Creates a new ClimberWheelIOPB. */ public ClimberWheelIOPB() { + wheelMotor = new SparkMax(PracticeBotConstants.CLIMBER_ROLLER_ID, MotorType.kBrushless); + config.idleMode(IdleMode.kBrake); config.inverted(false); wheelMotor.configure(config, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); } - - public void setDutyCycle(double dutyCycle) { - wheelMotor.set(dutyCycle); - } - - public void updateInputs(ClimberWheelIOInputs inputs) { - inputs.wheelDutyCycle = wheelMotor.get(); - inputs.wheelPosition = encoder.getPosition(); - inputs.wheelVelocity = encoder.getVelocity(); - inputs.wheelCurrent = wheelMotor.getOutputCurrent(); - inputs.wheelTemp = wheelMotor.getMotorTemperature(); - } } diff --git a/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOCB.java b/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOCB.java index b3dd90c8..43cd4136 100644 --- a/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOCB.java +++ b/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOCB.java @@ -23,7 +23,7 @@ public class ClimberWinchIOCB implements ClimberWinchIO { - private final SparkMax winchMotor = new SparkMax(CompBotConstants.CLIMBER_WINCH_ID, MotorType.kBrushless); + protected final SparkMax winchMotor; protected final RelativeEncoder winchEncoder = winchMotor.getEncoder(); protected final double kP = 0.2; @@ -35,6 +35,8 @@ public class ClimberWinchIOCB implements ClimberWinchIO { /** Creates a new ClimberIOPB. */ public ClimberWinchIOCB() { + winchMotor = = new SparkMax(CompBotConstants.CLIMBER_WINCH_ID, MotorType.kBrushless); + config.idleMode(IdleMode.kBrake); config.inverted(true); ClosedLoopConfig closedLoopConfig = new ClosedLoopConfig(); diff --git a/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOPB.java b/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOPB.java index 3896497a..df6e1427 100644 --- a/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOPB.java +++ b/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOPB.java @@ -21,10 +21,12 @@ public class ClimberWinchIOPB extends ClimberWinchIOCB { - private final SparkMax winchMotor = new SparkMax(PracticeBotConstants.CLIMBER_WINCH_ID, MotorType.kBrushless); /** Creates a new ClimberIOPB. */ public ClimberWinchIOPB() { + winchMotor = new SparkMax(PracticeBotConstants.CLIMBER_WINCH_ID, MotorType.kBrushless); + + config.idleMode(IdleMode.kBrake); config.inverted(true); ClosedLoopConfig closedLoopConfig = new ClosedLoopConfig(); @@ -36,19 +38,4 @@ public ClimberWinchIOPB() { winchMotor.configure(config, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); } - public void setDutyCycle(double dutyCycle) { - winchMotor.set(dutyCycle); - } - - public void setPosition(double position) { - winchMotor.getClosedLoopController().setReference(position, ControlType.kPosition); - } - - public void updateInputs(ClimberWinchIOInputs inputs) { - inputs.winchDutyCycle = winchMotor.getAppliedOutput(); - inputs.winchPosition = winchEncoder.getPosition(); - inputs.winchVelocity = winchEncoder.getVelocity(); - inputs.winchCurrent = winchMotor.getOutputCurrent(); - inputs.winchTemp = winchMotor.getMotorTemperature(); - } } diff --git a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java index ce9fdf37..e1d50599 100644 --- a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java +++ b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java @@ -18,19 +18,24 @@ /** Add your docs here. */ public class CoralShooterIOCB implements CoralShooterIO { - private final SparkMax outtakeMotor = new SparkMax(Constants.CompBotConstants.CORAL_SHOOTER_ID, MotorType.kBrushless); + protected final SparkMax outtakeMotor; protected final RelativeEncoder encoder = outtakeMotor.getEncoder(); protected final SparkMaxConfig sparkMaxConfig = new SparkMaxConfig(); - private final Canandcolor intakeSensor = new Canandcolor(Constants.CompBotConstants.INTAKE_SENSOR_ID); - private final Canandcolor outtakeSensor = new Canandcolor(Constants.CompBotConstants.OUTTAKE_SENSOR_ID); - + protected final Canandcolor intakeSensor; + protected final Canandcolor outtakeSensor; + protected final double KP = 0.0; protected final double KI = 0.0; protected final double KD = 0.0; protected final double KF = 0.0; public CoralShooterIOCB() { + outtakeMotor = new SparkMax(Constants.CompBotConstants.CORAL_SHOOTER_ID, MotorType.kBrushless); + + intakeSensor = new Canandcolor(Constants.CompBotConstants.INTAKE_SENSOR_ID); + outtakeMotor = new Canandcolor(Constants.CompBotConstants.OUTTAKE_SENSOR_ID); + sparkMaxConfig.idleMode(IdleMode.kBrake); sparkMaxConfig.inverted(false); outtakeMotor.configure(sparkMaxConfig, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); diff --git a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOPB.java b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOPB.java index c7db13b3..bad543a6 100644 --- a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOPB.java +++ b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOPB.java @@ -18,37 +18,19 @@ /** Add your docs here. */ public class CoralShooterIOPB extends CoralShooterIOCB { - private final SparkMax outtakeMotor = new SparkMax(Constants.PracticeBotConstants.CORAL_SHOOTER_ID, MotorType.kBrushless); - - private final Canandcolor intakeSensor = new Canandcolor(Constants.PracticeBotConstants.INTAKE_SENSOR_ID); - private final Canandcolor outtakeSensor = new Canandcolor(Constants.PracticeBotConstants.OUTTAKE_SENSOR_ID); - + public CoralShooterIOPB() { + outtakeMotor = new SparkMax(Constants.PracticeBotConstants.CORAL_SHOOTER_ID, MotorType.kBrushless); + + intakeSensor = new Canandcolor(Constants.PracticeBotConstants.INTAKE_SENSOR_ID); + outtakeSensor = new Canandcolor(Constants.PracticeBotConstants.OUTTAKE_SENSOR_ID); + sparkMaxConfig.idleMode(IdleMode.kBrake); sparkMaxConfig.inverted(false); outtakeMotor.configure(sparkMaxConfig, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); } - public void setDutyCycle(double dutyCycle) { - outtakeMotor.set(dutyCycle); - } - private boolean isInIntakeSensor() { return intakeSensor.getProximity() < 0.06; } - - public void stop() { - outtakeMotor.stopMotor(); - } - - public void updateInputs(CoralShooterIOInputs inputs) { - inputs.outtakeStatorCurrent = outtakeMotor.getOutputCurrent(); - inputs.outtakePosition = encoder.getPosition(); - inputs.outtakeVelocity = encoder.getVelocity(); - inputs.outtakeVoltage = outtakeMotor.getAppliedOutput() * outtakeMotor.getBusVoltage(); - inputs.outtakeSensor = this.isInOuttakeSensor(); - inputs.outtakeSensorProximity = outtakeSensor.getProximity(); - inputs.intakeSensor = this.isInIntakeSensor(); - inputs.intakeSensorProximity = intakeSensor.getProximity(); - } } diff --git a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java index ff0de766..660872ba 100644 --- a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java +++ b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java @@ -36,8 +36,8 @@ /** Add your docs here. */ public class ElevatorIOCB implements ElevatorIO { - private final TalonFX backElevatorMotor = new TalonFX(CompBotConstants.BACK_ELEVATOR_ID, CompBotConstants.CANBUS_NAME); - private final TalonFX frontElevatorMotor = new TalonFX(CompBotConstants.FRONT_ELEVATOR_ID, CompBotConstants.CANBUS_NAME); + protected final TalonFX backElevatorMotor; + protected final TalonFX frontElevatorMotor; // private final DifferentialMechanism elevatorDiff; protected TalonFXConfiguration frontConfig = new TalonFXConfiguration(); protected TalonFXConfiguration backConfig = new TalonFXConfiguration(); @@ -51,6 +51,9 @@ public class ElevatorIOCB implements ElevatorIO { protected final double GEAR_RATIO = 1.0; public ElevatorIOCB() { + backElevatorMotor = new TalonFX(CompBotConstants.BACK_ELEVATOR_ID, CompBotConstants.CANBUS_NAME); + frontElevatorMotor = new TalonFX(CompBotConstants.FRONT_ELEVATOR_ID, CompBotConstants.CANBUS_NAME); + final double UPPER_LIMIT = 31.0; final double LOWER_LIMIT = 0.0; diff --git a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOPB.java b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOPB.java index 53c12e8e..4073758f 100644 --- a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOPB.java +++ b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOPB.java @@ -35,8 +35,7 @@ /** Add your docs here. */ public class ElevatorIOPB extends ElevatorIOCB { - private final TalonFX backElevatorMotor = new TalonFX(PracticeBotConstants.BACK_ELEVATOR_ID, PracticeBotConstants.CANBUS_NAME); - private final TalonFX frontElevatorMotor = new TalonFX(PracticeBotConstants.FRONT_ELEVATOR_ID, PracticeBotConstants.CANBUS_NAME); + // private final DifferentialMechanism elevatorDiff; // private DifferentialSensorsConfigs sens = backConfig.DifferentialSensors; @@ -46,6 +45,9 @@ public class ElevatorIOPB extends ElevatorIOCB { public ElevatorIOPB() { + backElevatorMotor = new TalonFX(PracticeBotConstants.BACK_ELEVATOR_ID, PracticeBotConstants.CANBUS_NAME); + frontElevatorMotor = new TalonFX(PracticeBotConstants.FRONT_ELEVATOR_ID, PracticeBotConstants.CANBUS_NAME); + final double UPPER_LIMIT = 31.0; final double LOWER_LIMIT = 0.0; @@ -109,23 +111,6 @@ public ElevatorIOPB() { frontElevatorMotor.setControl(new Follower(PracticeBotConstants.BACK_ELEVATOR_ID, true)); } - public void updateInputs(ElevatorIOInputs inputs) { - inputs.elevatorStatorCurrent = backElevatorMotor.getStatorCurrent().getValueAsDouble(); - inputs.elevatorSupplyCurrent = backElevatorMotor.getSupplyCurrent().getValueAsDouble(); - inputs.elevatorVoltage = backElevatorMotor.getMotorVoltage().getValueAsDouble(); - inputs.elevatorPosition = backElevatorMotor.getPosition().getValueAsDouble(); - inputs.elevatorVelocity = backElevatorMotor.getVelocity().getValueAsDouble(); - inputs.elevatorSensor = !bottomSwitch.get(); - - Logger.recordOutput("front motor", frontElevatorMotor.getPosition().getValueAsDouble()); - Logger.recordOutput("back motor", backElevatorMotor.getPosition().getValueAsDouble()); - - Logger.recordOutput("front motor duty cycle", frontElevatorMotor.getDutyCycle().getValueAsDouble()); - Logger.recordOutput("back motor duty cycle", backElevatorMotor.getDutyCycle().getValueAsDouble()); - - - } - public void setDutyCycle(double dutyCycle) { DutyCycleOut duty = new DutyCycleOut(dutyCycle); // Logger.recordOutput("duty", duty.Output); @@ -137,21 +122,11 @@ public void setDutyCycle(double dutyCycle) { backElevatorMotor.setControl(duty); - } + - public void stop() { - backElevatorMotor.stopMotor(); - frontElevatorMotor.stopMotor(); - } - - /* - * value is new encoder value in rotations - */ - public void setEncoder(double value) { - backElevatorMotor.setPosition(value); - frontElevatorMotor.setPosition(value); } + /* * height is in motor rotations */ From 4b5d5652b0d1531495ea37dcf3655d8348fa8e72 Mon Sep 17 00:00:00 2001 From: Keirnan Mahoney <27MahoneyKeirnan@bprep.org> Date: Wed, 8 Oct 2025 19:33:09 -0700 Subject: [PATCH 04/12] Unnecessary imports & lines removed, fixing variables not being initialized, converting many constants to variables. The code builds --- src/main/java/frc/robot/commands/Autos.java | 5 +--- .../subsystems/AlgaeArm/AlgaeArmIOCB.java | 12 --------- .../subsystems/AlgaeArm/AlgaeArmIOPB.java | 19 -------------- .../AlgaeRoller/AlgaeRollerIOCB.java | 10 +++---- .../AlgaeRoller/AlgaeRollerIOPB.java | 8 ++---- .../AlgaeShooter/AlgaeShooterIOCB.java | 24 +++++++---------- .../AlgaeShooter/AlgaeShooterIOPB.java | 19 +++----------- .../subsystems/AlgaeTilt/AlgaeTiltIOCB.java | 14 ++++------ .../subsystems/AlgaeTilt/AlgaeTiltIOPB.java | 13 +++------- .../ClimberWheel/ClimberWheelIOCB.java | 10 +++---- .../ClimberWheel/ClimberWheelIOPB.java | 9 ++----- .../ClimberWinch/ClimberWinchIOCB.java | 12 +++------ .../ClimberWinch/ClimberWinchIOPB.java | 9 +------ .../CoralShooter/CoralShooterIOCB.java | 13 +++++----- .../CoralShooter/CoralShooterIOPB.java | 5 +--- .../subsystems/Elevator/ElevatorIOCB.java | 26 +++---------------- .../subsystems/Elevator/ElevatorIOPB.java | 26 ++----------------- 17 files changed, 54 insertions(+), 180 deletions(-) diff --git a/src/main/java/frc/robot/commands/Autos.java b/src/main/java/frc/robot/commands/Autos.java index 2d0cb76f..167eb330 100644 --- a/src/main/java/frc/robot/commands/Autos.java +++ b/src/main/java/frc/robot/commands/Autos.java @@ -17,7 +17,4 @@ // private Autos() { // throw new UnsupportedOperationException("This is a utility class!"); // } -// } - -System.out.println("hello world"); -hello this is kaleb +// } \ No newline at end of file diff --git a/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOCB.java b/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOCB.java index bc237947..ee91d322 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOCB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOCB.java @@ -4,15 +4,6 @@ //if CB & PB IO files have equal values, remove from PB, which extends CB. Everything "private" must be "protected" package frc.robot.subsystems.AlgaeArm; -import java.util.function.DoubleSupplier; - -import com.ctre.phoenix6.configs.MotorOutputConfigs; - -import com.ctre.phoenix6.configs.TalonFXConfiguration; - -import com.ctre.phoenix6.hardware.TalonFX; -import com.ctre.phoenix6.signals.InvertedValue; -import com.ctre.phoenix6.signals.NeutralModeValue; import com.revrobotics.RelativeEncoder; import com.revrobotics.spark.SparkBase.ControlType; import com.revrobotics.spark.SparkBase.PersistMode; @@ -25,9 +16,6 @@ import com.revrobotics.spark.config.SparkBaseConfig.IdleMode; import com.revrobotics.spark.config.SparkMaxConfig; -import edu.wpi.first.math.controller.PIDController; -import edu.wpi.first.wpilibj2.command.Command; -import edu.wpi.first.wpilibj2.command.SubsystemBase; import frc.robot.Constants; public class AlgaeArmIOCB implements AlgaeArmIO { diff --git a/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOPB.java b/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOPB.java index ce24b308..33ac4602 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOPB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOPB.java @@ -4,31 +4,12 @@ package frc.robot.subsystems.AlgaeArm; -import java.util.function.DoubleSupplier; - -import com.ctre.phoenix6.configs.MotorOutputConfigs; - -import com.ctre.phoenix6.configs.TalonFXConfiguration; - -import com.ctre.phoenix6.hardware.TalonFX; -import com.ctre.phoenix6.signals.InvertedValue; -import com.ctre.phoenix6.signals.NeutralModeValue; -import com.revrobotics.RelativeEncoder; -import com.revrobotics.spark.SparkBase.ControlType; import com.revrobotics.spark.SparkBase.PersistMode; import com.revrobotics.spark.SparkBase.ResetMode; -import com.revrobotics.spark.SparkLowLevel.MotorType; -import com.revrobotics.spark.SparkMax; import com.revrobotics.spark.config.ClosedLoopConfig; import com.revrobotics.spark.config.EncoderConfig; import com.revrobotics.spark.config.SoftLimitConfig; import com.revrobotics.spark.config.SparkBaseConfig.IdleMode; -import com.revrobotics.spark.config.SparkMaxConfig; - -import edu.wpi.first.math.controller.PIDController; -import edu.wpi.first.wpilibj2.command.Command; -import edu.wpi.first.wpilibj2.command.SubsystemBase; -import frc.robot.Constants; public class AlgaeArmIOPB extends AlgaeArmIOCB{ diff --git a/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOCB.java b/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOCB.java index 9146fea6..2cc7e03f 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOCB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOCB.java @@ -12,17 +12,17 @@ import com.revrobotics.spark.config.SparkBaseConfig.IdleMode; import com.revrobotics.spark.SparkMax; -import edu.wpi.first.wpilibj2.command.SubsystemBase; import frc.robot.Constants; public class AlgaeRollerIOCB implements AlgaeRollerIO { - protected final SparkMax motor; - protected final SparkMaxConfig config = new SparkMaxConfig(); - protected final RelativeEncoder encoder = motor.getEncoder(); + protected SparkMax motor; + protected SparkMaxConfig config = new SparkMaxConfig(); + protected RelativeEncoder encoder; /** Creates a new AlgaeIntakeRollerIOPB. */ public AlgaeRollerIOCB() { - motor= new SparkMax(Constants.CompBotConstants.ALGAE_ROLLER, MotorType.kBrushless); + motor = new SparkMax(Constants.CompBotConstants.ALGAE_ROLLER, MotorType.kBrushless); + encoder = motor.getEncoder(); config.inverted(true); config.idleMode(IdleMode.kBrake); diff --git a/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOPB.java b/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOPB.java index aee989c7..644f8d65 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOPB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOPB.java @@ -4,26 +4,22 @@ package frc.robot.subsystems.AlgaeRoller; -import com.revrobotics.RelativeEncoder; import com.revrobotics.spark.SparkBase.PersistMode; import com.revrobotics.spark.SparkBase.ResetMode; import com.revrobotics.spark.SparkLowLevel.MotorType; -import com.revrobotics.spark.config.SparkMaxConfig; import com.revrobotics.spark.config.SparkBaseConfig.IdleMode; import com.revrobotics.spark.SparkMax; - -import edu.wpi.first.wpilibj2.command.SubsystemBase; import frc.robot.Constants; public class AlgaeRollerIOPB extends AlgaeRollerIOCB { /** Creates a new AlgaeIntakeRollerIOPB. */ public AlgaeRollerIOPB() { + super(); motor = new SparkMax(Constants.PracticeBotConstants.ALGAE_ROLLER, MotorType.kBrushless); config.inverted(true); config.idleMode(IdleMode.kBrake); motor.configure(config, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); } - -} +} \ No newline at end of file diff --git a/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOCB.java b/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOCB.java index 0988dbdc..76f06310 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOCB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOCB.java @@ -4,14 +4,6 @@ package frc.robot.subsystems.AlgaeShooter; -import com.ctre.phoenix6.configs.MotionMagicConfigs; -import com.ctre.phoenix6.configs.MotorOutputConfigs; -import com.ctre.phoenix6.configs.Slot0Configs; -import com.ctre.phoenix6.configs.TalonFXConfiguration; -import com.ctre.phoenix6.controls.VelocityVoltage; -import com.ctre.phoenix6.hardware.TalonFX; -import com.ctre.phoenix6.signals.InvertedValue; -import com.ctre.phoenix6.signals.NeutralModeValue; import com.revrobotics.spark.SparkBase.ControlType; import com.revrobotics.spark.SparkBase.PersistMode; import com.revrobotics.spark.SparkBase.ResetMode; @@ -20,10 +12,7 @@ import com.revrobotics.spark.config.ClosedLoopConfig; import com.revrobotics.spark.config.EncoderConfig; import com.revrobotics.spark.config.SparkFlexConfig; - -import edu.wpi.first.wpilibj2.command.SubsystemBase; import frc.robot.Constants; -import frc.robot.subsystems.Elevator.ElevatorIO.ElevatorIOInputs; public class AlgaeShooterIOCB implements AlgaeShooterIO { @@ -36,9 +25,16 @@ public class AlgaeShooterIOCB implements AlgaeShooterIO { /** Creates a new AlgaeShooterIOWB. */ public AlgaeShooterIOCB() { - algaeShooterMotorFront = new SparkFlex(Constants.CompBotConstants.ALGAE_SHOOTER_FRONT_ID, MotorType.kBrushless); // no ID - algaeShooterMotorBack = new SparkFlex(Constants.CompBotConstants.ALGAE_SHOOTER_BACK_ID, MotorType.kBrushless); // no ID - // TODO: add values + this( + new SparkFlex(Constants.CompBotConstants.ALGAE_SHOOTER_FRONT_ID, MotorType.kBrushless), + new SparkFlex(Constants.CompBotConstants.ALGAE_SHOOTER_BACK_ID, MotorType.kBrushless) + ); + } + + public AlgaeShooterIOCB(SparkFlex algaeShooterMotorFront, SparkFlex algaeShooterMotorBack) { + this.algaeShooterMotorFront = algaeShooterMotorFront; + this.algaeShooterMotorBack = algaeShooterMotorBack; + final double kP = 0.0; final double kI = 0.0; final double kD = 0.0; diff --git a/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOPB.java b/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOPB.java index de6818c0..c42d711b 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOPB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOPB.java @@ -4,35 +4,24 @@ package frc.robot.subsystems.AlgaeShooter; -import com.ctre.phoenix6.configs.MotionMagicConfigs; -import com.ctre.phoenix6.configs.MotorOutputConfigs; -import com.ctre.phoenix6.configs.Slot0Configs; -import com.ctre.phoenix6.configs.TalonFXConfiguration; -import com.ctre.phoenix6.controls.VelocityVoltage; -import com.ctre.phoenix6.hardware.TalonFX; -import com.ctre.phoenix6.signals.InvertedValue; -import com.ctre.phoenix6.signals.NeutralModeValue; -import com.revrobotics.spark.SparkBase.ControlType; import com.revrobotics.spark.SparkBase.PersistMode; import com.revrobotics.spark.SparkBase.ResetMode; import com.revrobotics.spark.SparkFlex; import com.revrobotics.spark.SparkLowLevel.MotorType; import com.revrobotics.spark.config.ClosedLoopConfig; import com.revrobotics.spark.config.EncoderConfig; -import com.revrobotics.spark.config.SparkFlexConfig; -import edu.wpi.first.wpilibj2.command.SubsystemBase; import frc.robot.Constants; -import frc.robot.subsystems.Elevator.ElevatorIO.ElevatorIOInputs; public class AlgaeShooterIOPB extends AlgaeShooterIOCB { /** Creates a new AlgaeShooterIOWB. */ public AlgaeShooterIOPB() { - algaeShooterMotorFront = new SparkFlex(Constants.PracticeBotConstants.ALGAE_SHOOTER_FRONT_ID, MotorType.kBrushless); // no ID - algaeShooterMotorBack = new SparkFlex(Constants.PracticeBotConstants.ALGAE_SHOOTER_BACK_ID, MotorType.kBrushless); // no ID - + super( + new SparkFlex(Constants.PracticeBotConstants.ALGAE_SHOOTER_FRONT_ID, MotorType.kBrushless), + new SparkFlex(Constants.PracticeBotConstants.ALGAE_SHOOTER_BACK_ID, MotorType.kBrushless) + ); // TODO: add values final double kP = 0.0; diff --git a/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOCB.java b/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOCB.java index adb8cd0f..12846939 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOCB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOCB.java @@ -5,8 +5,6 @@ package frc.robot.subsystems.AlgaeTilt; import com.revrobotics.AbsoluteEncoder; -import com.revrobotics.RelativeEncoder; -import com.revrobotics.spark.SparkAbsoluteEncoder; import com.revrobotics.spark.SparkBase.ControlType; import com.revrobotics.spark.SparkBase.PersistMode; import com.revrobotics.spark.SparkBase.ResetMode; @@ -15,20 +13,18 @@ import com.revrobotics.spark.config.AbsoluteEncoderConfig; import com.revrobotics.spark.config.ClosedLoopConfig; import com.revrobotics.spark.config.EncoderConfig; -import com.revrobotics.spark.config.SoftLimitConfig; import com.revrobotics.spark.config.SparkBaseConfig.IdleMode; import com.revrobotics.spark.config.SparkMaxConfig; import com.revrobotics.spark.config.ClosedLoopConfig.FeedbackSensor; -import edu.wpi.first.wpilibj2.command.SubsystemBase; import frc.robot.Constants; public class AlgaeTiltIOCB implements AlgaeTiltIO { - protected final SparkMax motor; - protected final AbsoluteEncoder absEncoder; + protected SparkMax motor; + protected AbsoluteEncoder absEncoder; // private final RelativeEncoder encoder = motor.getEncoder(); // TODO: make absolute when we get one!! - protected final double kP; + protected double kP; protected final double kI = 0.0; protected final double kD = 0.0; @@ -105,5 +101,5 @@ public void updateInputs(AlgaeTiltIOInputs inputs) { public void setEncoder(double value) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'setEncoder'"); -} -} + } +} \ No newline at end of file diff --git a/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOPB.java b/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOPB.java index 4425fa5c..5f08a905 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOPB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOPB.java @@ -4,9 +4,7 @@ package frc.robot.subsystems.AlgaeTilt; -import com.revrobotics.AbsoluteEncoder; import com.revrobotics.RelativeEncoder; -import com.revrobotics.spark.SparkBase.ControlType; import com.revrobotics.spark.SparkBase.PersistMode; import com.revrobotics.spark.SparkBase.ResetMode; import com.revrobotics.spark.SparkLowLevel.MotorType; @@ -15,9 +13,6 @@ import com.revrobotics.spark.config.EncoderConfig; import com.revrobotics.spark.config.SoftLimitConfig; import com.revrobotics.spark.config.SparkBaseConfig.IdleMode; -import com.revrobotics.spark.config.SparkMaxConfig; - -import edu.wpi.first.wpilibj2.command.SubsystemBase; import frc.robot.Constants; public class AlgaeTiltIOPB extends AlgaeTiltIOCB { @@ -25,11 +20,9 @@ public class AlgaeTiltIOPB extends AlgaeTiltIOCB { /** Creates a new AlgaeIntakeIOPB. */ public AlgaeTiltIOPB() { - motor = new SparkMax(Constants.PracticeBotConstants.ALGAE_TILT, MotorType.kBrushless); - - kP = 0.035 * 2.0; + super.motor = new SparkMax(Constants.PracticeBotConstants.ALGAE_TILT, MotorType.kBrushless); - + super.kP = 0.035 * 2.0; sparkMaxConfig.idleMode(IdleMode.kBrake); sparkMaxConfig.inverted(false); @@ -41,6 +34,7 @@ public AlgaeTiltIOPB() { softLimitConfig.reverseSoftLimitEnabled(true); sparkMaxConfig.apply(softLimitConfig); + ClosedLoopConfig closedLoopConfig = new ClosedLoopConfig(); closedLoopConfig.pid(kP, kI, kD); sparkMaxConfig.apply(closedLoopConfig); @@ -52,7 +46,6 @@ public AlgaeTiltIOPB() { motor.configure(sparkMaxConfig, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); } - /** * method for updating the encoder value * diff --git a/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOCB.java b/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOCB.java index 145c8aa3..cf1108a7 100644 --- a/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOCB.java +++ b/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOCB.java @@ -13,21 +13,19 @@ import com.revrobotics.spark.config.SparkMaxConfig; import edu.wpi.first.math.controller.PIDController; -import edu.wpi.first.wpilibj2.command.SubsystemBase; import frc.robot.Constants.CompBotConstants; -import frc.robot.Constants.PracticeBotConstants; -import frc.robot.subsystems.ClimberWheel.ClimberWheelIO.ClimberWheelIOInputs; public class ClimberWheelIOCB implements ClimberWheelIO { - protected final SparkMax wheelMotor; - protected final RelativeEncoder encoder = wheelMotor.getEncoder(); - protected final PIDController pid = new PIDController(0, 0, 0); // TODO: find pid values + protected SparkMax wheelMotor; + protected RelativeEncoder encoder; + protected PIDController pid = new PIDController(0, 0, 0); // TODO: find pid values protected final SparkMaxConfig config = new SparkMaxConfig(); /** Creates a new ClimberWheelIOPB. */ public ClimberWheelIOCB() { wheelMotor = new SparkMax(CompBotConstants.CLIMBER_ROLLER_ID, MotorType.kBrushless); + encoder = wheelMotor.getEncoder(); config.idleMode(IdleMode.kBrake); config.inverted(false); diff --git a/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOPB.java b/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOPB.java index 72d294b1..8965ce73 100644 --- a/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOPB.java +++ b/src/main/java/frc/robot/subsystems/ClimberWheel/ClimberWheelIOPB.java @@ -4,27 +4,22 @@ package frc.robot.subsystems.ClimberWheel; -import com.revrobotics.RelativeEncoder; import com.revrobotics.spark.SparkBase.PersistMode; import com.revrobotics.spark.SparkBase.ResetMode; import com.revrobotics.spark.SparkLowLevel.MotorType; import com.revrobotics.spark.SparkMax; import com.revrobotics.spark.config.SparkBaseConfig.IdleMode; -import com.revrobotics.spark.config.SparkMaxConfig; - -import edu.wpi.first.math.controller.PIDController; -import edu.wpi.first.wpilibj2.command.SubsystemBase; import frc.robot.Constants.PracticeBotConstants; -import frc.robot.subsystems.ClimberWheel.ClimberWheelIO.ClimberWheelIOInputs; public class ClimberWheelIOPB extends ClimberWheelIOCB { /** Creates a new ClimberWheelIOPB. */ public ClimberWheelIOPB() { + super(); wheelMotor = new SparkMax(PracticeBotConstants.CLIMBER_ROLLER_ID, MotorType.kBrushless); config.idleMode(IdleMode.kBrake); config.inverted(false); wheelMotor.configure(config, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); } -} +} \ No newline at end of file diff --git a/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOCB.java b/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOCB.java index 43cd4136..ca5c0277 100644 --- a/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOCB.java +++ b/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOCB.java @@ -14,17 +14,12 @@ import com.revrobotics.spark.SparkBase.ControlType; import com.revrobotics.spark.SparkBase.PersistMode; import com.revrobotics.spark.SparkBase.ResetMode; - -import edu.wpi.first.math.controller.PIDController; -import edu.wpi.first.wpilibj.Servo; -import edu.wpi.first.wpilibj2.command.SubsystemBase; import frc.robot.Constants.CompBotConstants; -import frc.robot.Constants.PracticeBotConstants; public class ClimberWinchIOCB implements ClimberWinchIO { - protected final SparkMax winchMotor; - protected final RelativeEncoder winchEncoder = winchMotor.getEncoder(); + protected SparkMax winchMotor; + protected RelativeEncoder winchEncoder; protected final double kP = 0.2; protected final double kI = 0.0; @@ -35,7 +30,8 @@ public class ClimberWinchIOCB implements ClimberWinchIO { /** Creates a new ClimberIOPB. */ public ClimberWinchIOCB() { - winchMotor = = new SparkMax(CompBotConstants.CLIMBER_WINCH_ID, MotorType.kBrushless); + winchMotor = new SparkMax(CompBotConstants.CLIMBER_WINCH_ID, MotorType.kBrushless); + winchEncoder = winchMotor.getEncoder(); config.idleMode(IdleMode.kBrake); config.inverted(true); diff --git a/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOPB.java b/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOPB.java index df6e1427..86ebd5a0 100644 --- a/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOPB.java +++ b/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOPB.java @@ -4,19 +4,13 @@ package frc.robot.subsystems.ClimberWinch; -import com.revrobotics.RelativeEncoder; import com.revrobotics.spark.SparkLowLevel.MotorType; import com.revrobotics.spark.config.SparkBaseConfig.IdleMode; import com.revrobotics.spark.config.ClosedLoopConfig; import com.revrobotics.spark.config.EncoderConfig; -import com.revrobotics.spark.config.SparkMaxConfig; import com.revrobotics.spark.SparkMax; -import com.revrobotics.spark.SparkBase.ControlType; import com.revrobotics.spark.SparkBase.PersistMode; import com.revrobotics.spark.SparkBase.ResetMode; - -import edu.wpi.first.math.controller.PIDController; -import edu.wpi.first.wpilibj2.command.SubsystemBase; import frc.robot.Constants.PracticeBotConstants; public class ClimberWinchIOPB extends ClimberWinchIOCB { @@ -37,5 +31,4 @@ public ClimberWinchIOPB() { config.apply(encoderConfig); winchMotor.configure(config, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); } - -} +} \ No newline at end of file diff --git a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java index e1d50599..d2f91282 100644 --- a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java +++ b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java @@ -18,12 +18,12 @@ /** Add your docs here. */ public class CoralShooterIOCB implements CoralShooterIO { - protected final SparkMax outtakeMotor; - protected final RelativeEncoder encoder = outtakeMotor.getEncoder(); - protected final SparkMaxConfig sparkMaxConfig = new SparkMaxConfig(); + protected SparkMax outtakeMotor; + protected RelativeEncoder encoder; + protected SparkMaxConfig sparkMaxConfig = new SparkMaxConfig(); - protected final Canandcolor intakeSensor; - protected final Canandcolor outtakeSensor; + protected Canandcolor intakeSensor; + protected Canandcolor outtakeSensor; protected final double KP = 0.0; protected final double KI = 0.0; @@ -32,9 +32,10 @@ public class CoralShooterIOCB implements CoralShooterIO { public CoralShooterIOCB() { outtakeMotor = new SparkMax(Constants.CompBotConstants.CORAL_SHOOTER_ID, MotorType.kBrushless); + encoder = outtakeMotor.getEncoder(); intakeSensor = new Canandcolor(Constants.CompBotConstants.INTAKE_SENSOR_ID); - outtakeMotor = new Canandcolor(Constants.CompBotConstants.OUTTAKE_SENSOR_ID); + outtakeSensor = new Canandcolor(Constants.CompBotConstants.OUTTAKE_SENSOR_ID); sparkMaxConfig.idleMode(IdleMode.kBrake); sparkMaxConfig.inverted(false); diff --git a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOPB.java b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOPB.java index bad543a6..139111b5 100644 --- a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOPB.java +++ b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOPB.java @@ -5,11 +5,8 @@ package frc.robot.subsystems.CoralShooter; import com.reduxrobotics.sensors.canandcolor.Canandcolor; -import com.revrobotics.RelativeEncoder; import com.revrobotics.spark.SparkMax; -import com.revrobotics.spark.config.SparkMaxConfig; import com.revrobotics.spark.config.SparkBaseConfig.IdleMode; - import com.revrobotics.spark.SparkBase.PersistMode; import com.revrobotics.spark.SparkBase.ResetMode; import com.revrobotics.spark.SparkLowLevel.MotorType; @@ -20,8 +17,8 @@ public class CoralShooterIOPB extends CoralShooterIOCB { public CoralShooterIOPB() { + super(); outtakeMotor = new SparkMax(Constants.PracticeBotConstants.CORAL_SHOOTER_ID, MotorType.kBrushless); - intakeSensor = new Canandcolor(Constants.PracticeBotConstants.INTAKE_SENSOR_ID); outtakeSensor = new Canandcolor(Constants.PracticeBotConstants.OUTTAKE_SENSOR_ID); diff --git a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java index 660872ba..ed799be9 100644 --- a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java +++ b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java @@ -5,39 +5,24 @@ package frc.robot.subsystems.Elevator; import org.littletonrobotics.junction.Logger; - -import com.ctre.phoenix6.configs.DifferentialSensorsConfigs; import com.ctre.phoenix6.configs.MotionMagicConfigs; import com.ctre.phoenix6.configs.MotorOutputConfigs; import com.ctre.phoenix6.configs.Slot0Configs; import com.ctre.phoenix6.configs.TalonFXConfiguration; -import com.ctre.phoenix6.configs.TalonFXConfigurator; -import com.ctre.phoenix6.controls.DifferentialDutyCycle; import com.ctre.phoenix6.controls.DutyCycleOut; import com.ctre.phoenix6.controls.Follower; import com.ctre.phoenix6.controls.MotionMagicVoltage; -import com.ctre.phoenix6.controls.PositionDutyCycle; -import com.ctre.phoenix6.controls.PositionVoltage; -import com.ctre.phoenix6.controls.VelocityVoltage; import com.ctre.phoenix6.hardware.TalonFX; -import com.ctre.phoenix6.mechanisms.DifferentialMechanism; -import com.ctre.phoenix6.mechanisms.SimpleDifferentialMechanism; -import com.ctre.phoenix6.signals.DifferentialSensorSourceValue; import com.ctre.phoenix6.signals.InvertedValue; import com.ctre.phoenix6.signals.NeutralModeValue; -import com.revrobotics.RelativeEncoder; import edu.wpi.first.wpilibj.DigitalInput; -import edu.wpi.first.wpilibj.DutyCycle; -import edu.wpi.first.wpilibj2.command.Commands; -import frc.robot.Constants; import frc.robot.Constants.CompBotConstants; -import frc.robot.Constants.PracticeBotConstants; import frc.robot.Constants.WoodbotConstants; /** Add your docs here. */ public class ElevatorIOCB implements ElevatorIO { - protected final TalonFX backElevatorMotor; - protected final TalonFX frontElevatorMotor; + protected TalonFX backElevatorMotor; + protected TalonFX frontElevatorMotor; // private final DifferentialMechanism elevatorDiff; protected TalonFXConfiguration frontConfig = new TalonFXConfiguration(); protected TalonFXConfiguration backConfig = new TalonFXConfiguration(); @@ -80,7 +65,6 @@ public ElevatorIOCB() { backElevatorMotor.getConfigurator().apply(new TalonFXConfiguration()); frontElevatorMotor.getConfigurator().apply(new TalonFXConfiguration()); - //outputConfigs.withInverted(InvertedValue.Clockwise_Positive); // talonFXConfiguration.SoftwareLimitSwitch.withForwardSoftLimitThreshold(UPPER_LIMIT); @@ -130,8 +114,6 @@ public void updateInputs(ElevatorIOInputs inputs) { Logger.recordOutput("front motor duty cycle", frontElevatorMotor.getDutyCycle().getValueAsDouble()); Logger.recordOutput("back motor duty cycle", backElevatorMotor.getDutyCycle().getValueAsDouble()); - - } public void setDutyCycle(double dutyCycle) { @@ -144,7 +126,6 @@ public void setDutyCycle(double dutyCycle) { frontElevatorMotor.setControl(new Follower(CompBotConstants.BACK_ELEVATOR_ID, true)); backElevatorMotor.setControl(duty); - } public void stop() { @@ -171,5 +152,4 @@ public void setElevatorPostion(double height) { // elevatorDiff.setControl(motionMagicVoltage, positionVoltage); backElevatorMotor.setControl(motionMagicVoltage); } - -} +} \ No newline at end of file diff --git a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOPB.java b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOPB.java index 4073758f..917a2d01 100644 --- a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOPB.java +++ b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOPB.java @@ -4,32 +4,16 @@ package frc.robot.subsystems.Elevator; -import org.littletonrobotics.junction.Logger; - -import com.ctre.phoenix6.configs.DifferentialSensorsConfigs; import com.ctre.phoenix6.configs.MotionMagicConfigs; -import com.ctre.phoenix6.configs.MotorOutputConfigs; import com.ctre.phoenix6.configs.Slot0Configs; import com.ctre.phoenix6.configs.TalonFXConfiguration; -import com.ctre.phoenix6.configs.TalonFXConfigurator; -import com.ctre.phoenix6.controls.DifferentialDutyCycle; import com.ctre.phoenix6.controls.DutyCycleOut; import com.ctre.phoenix6.controls.Follower; import com.ctre.phoenix6.controls.MotionMagicVoltage; -import com.ctre.phoenix6.controls.PositionDutyCycle; -import com.ctre.phoenix6.controls.PositionVoltage; -import com.ctre.phoenix6.controls.VelocityVoltage; import com.ctre.phoenix6.hardware.TalonFX; -import com.ctre.phoenix6.mechanisms.DifferentialMechanism; -import com.ctre.phoenix6.mechanisms.SimpleDifferentialMechanism; -import com.ctre.phoenix6.signals.DifferentialSensorSourceValue; import com.ctre.phoenix6.signals.InvertedValue; import com.ctre.phoenix6.signals.NeutralModeValue; -import com.revrobotics.RelativeEncoder; import edu.wpi.first.wpilibj.DigitalInput; -import edu.wpi.first.wpilibj.DutyCycle; -import edu.wpi.first.wpilibj2.command.Commands; -import frc.robot.Constants; import frc.robot.Constants.PracticeBotConstants; import frc.robot.Constants.WoodbotConstants; @@ -43,8 +27,8 @@ public class ElevatorIOPB extends ElevatorIOCB { WoodbotConstants.ELEVATOR_BOTTOM_SWITCH ); - public ElevatorIOPB() { + super(); backElevatorMotor = new TalonFX(PracticeBotConstants.BACK_ELEVATOR_ID, PracticeBotConstants.CANBUS_NAME); frontElevatorMotor = new TalonFX(PracticeBotConstants.FRONT_ELEVATOR_ID, PracticeBotConstants.CANBUS_NAME); @@ -74,7 +58,6 @@ public ElevatorIOPB() { backElevatorMotor.getConfigurator().apply(new TalonFXConfiguration()); frontElevatorMotor.getConfigurator().apply(new TalonFXConfiguration()); - //outputConfigs.withInverted(InvertedValue.Clockwise_Positive); // talonFXConfiguration.SoftwareLimitSwitch.withForwardSoftLimitThreshold(UPPER_LIMIT); @@ -121,12 +104,8 @@ public void setDutyCycle(double dutyCycle) { frontElevatorMotor.setControl(new Follower(PracticeBotConstants.BACK_ELEVATOR_ID, true)); backElevatorMotor.setControl(duty); - - - } - /* * height is in motor rotations */ @@ -138,5 +117,4 @@ public void setElevatorPostion(double height) { // elevatorDiff.setControl(motionMagicVoltage, positionVoltage); backElevatorMotor.setControl(motionMagicVoltage); } - -} +} \ No newline at end of file From a32e3140250a5c118409662c75784c7afd57ec30 Mon Sep 17 00:00:00 2001 From: Keirnan Mahoney <27MahoneyKeirnan@bprep.org> Date: Wed, 8 Oct 2025 19:58:51 -0700 Subject: [PATCH 05/12] Got rid of duplicate Algae Arm code --- .../subsystems/AlgaeArm/AlgaeArmIOPB.java | 34 +------------------ 1 file changed, 1 insertion(+), 33 deletions(-) diff --git a/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOPB.java b/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOPB.java index 33ac4602..669504cb 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOPB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeArm/AlgaeArmIOPB.java @@ -4,40 +4,8 @@ package frc.robot.subsystems.AlgaeArm; -import com.revrobotics.spark.SparkBase.PersistMode; -import com.revrobotics.spark.SparkBase.ResetMode; -import com.revrobotics.spark.config.ClosedLoopConfig; -import com.revrobotics.spark.config.EncoderConfig; -import com.revrobotics.spark.config.SoftLimitConfig; -import com.revrobotics.spark.config.SparkBaseConfig.IdleMode; - public class AlgaeArmIOPB extends AlgaeArmIOCB{ - /** Creates a new AlgaeArmIOPB. */ public AlgaeArmIOPB() { - sparkMaxConfig.idleMode(IdleMode.kBrake); - sparkMaxConfig.inverted(false); - - ClosedLoopConfig closedLoopConfig = new ClosedLoopConfig(); - closedLoopConfig.pid(kP, kI, kD); - closedLoopConfig.minOutput(-MAX_OUTPUT); - closedLoopConfig.maxOutput(MAX_OUTPUT); - sparkMaxConfig.apply(closedLoopConfig); - - EncoderConfig encoderConfig = new EncoderConfig(); - encoderConfig.positionConversionFactor(POSITION_CONVERSION_FACTOR); - encoderConfig.velocityConversionFactor(VELOCITY_CONVERSION_FACTOR); - sparkMaxConfig.apply(encoderConfig); - - SoftLimitConfig softLimitConfig = new SoftLimitConfig(); - softLimitConfig.forwardSoftLimit(FORWARD_LIMIT); - softLimitConfig.forwardSoftLimitEnabled(true); - softLimitConfig.reverseSoftLimit(REVERSE_LIMIT); - softLimitConfig.reverseSoftLimitEnabled(true); - sparkMaxConfig.apply(softLimitConfig); - - armMotor.configure(sparkMaxConfig, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); - } - - + } } \ No newline at end of file From 75c9221c438f707ccad5222c3301228ba638a5c0 Mon Sep 17 00:00:00 2001 From: Keirnan Mahoney <27MahoneyKeirnan@bprep.org> Date: Wed, 22 Oct 2025 18:55:11 -0700 Subject: [PATCH 06/12] Calling the super class in Practice Bot IO layers --- src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOPB.java | 1 + .../java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOPB.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOPB.java b/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOPB.java index 5f08a905..241cc384 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOPB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOPB.java @@ -20,6 +20,7 @@ public class AlgaeTiltIOPB extends AlgaeTiltIOCB { /** Creates a new AlgaeIntakeIOPB. */ public AlgaeTiltIOPB() { + super(); super.motor = new SparkMax(Constants.PracticeBotConstants.ALGAE_TILT, MotorType.kBrushless); super.kP = 0.035 * 2.0; diff --git a/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOPB.java b/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOPB.java index 86ebd5a0..3dce363e 100644 --- a/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOPB.java +++ b/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOPB.java @@ -18,6 +18,7 @@ public class ClimberWinchIOPB extends ClimberWinchIOCB { /** Creates a new ClimberIOPB. */ public ClimberWinchIOPB() { + super(); winchMotor = new SparkMax(PracticeBotConstants.CLIMBER_WINCH_ID, MotorType.kBrushless); From 8e1e18ac3cd0632bfc229c0dc820242cc961e2cc Mon Sep 17 00:00:00 2001 From: Keirnan Mahoney <27MahoneyKeirnan@bprep.org> Date: Wed, 29 Oct 2025 19:50:02 -0700 Subject: [PATCH 07/12] WEIRD ~ multiple errors whilst merging --- .../subsystems/CoralShooter/CoralShooterIOCB.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java index 93a11b9c..d1c1d437 100644 --- a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java +++ b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java @@ -19,7 +19,7 @@ /** Add your docs here. */ public class CoralShooterIOCB implements CoralShooterIO { private final SparkMax outtakeMotor = - new SparkMax(Constants.CompBotConstants.CORAL_SHOOTER_ID, MotorType.kBrushless); + new SparkMax(Constants.CompBotConstants.CORAL_SHOOTER_ID, MotorType.kBrushless); protected SparkMax outtakeMotor; protected RelativeEncoder encoder; @@ -37,22 +37,26 @@ public CoralShooterIOCB() { outtakeMotor = new SparkMax(Constants.CompBotConstants.CORAL_SHOOTER_ID, MotorType.kBrushless); encoder = outtakeMotor.getEncoder(); - intakeSensor = new Canandcolor(Constants.CompBotConstants.INTAKE_SENSOR_ID); - outtakeSensor = new Canandcolor(Constants.CompBotConstants.OUTTAKE_SENSOR_ID); + CANrangeConfiguration intakeConfig = new CANrangeConfiguration(); + CANrangeConfiguration outtakeConfig = new CANrangeConfiguration(); sparkMaxConfig.idleMode(IdleMode.kBrake); sparkMaxConfig.inverted(false); outtakeMotor.configure(sparkMaxConfig, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); } - +/* Stated twice, this one is commented because it is private private final double KP = 0.0; private final double KI = 0.0; private final double KD = 0.0; private final double KF = 0.0; - + */ +/* Commented because this method occurs twice (however they run different code!!) protected boolean isInOuttakeSensor() { return outtakeSensor.getProximity() < 0.1; } +*/ + intakeSensor = new Canandcolor(Constants.CompBotConstants.INTAKE_SENSOR_ID); + outtakeSensor = new Canandcolor(Constants.CompBotConstants.OUTTAKE_SENSOR_ID); outtakeMotor.configure( sparkMaxConfig, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); From eda686fe8756e24b1bf52b441bd612fdec80c037 Mon Sep 17 00:00:00 2001 From: Keirnan Mahoney <27MahoneyKeirnan@bprep.org> Date: Wed, 5 Nov 2025 16:31:23 -0800 Subject: [PATCH 08/12] Import to fix an error --- .../java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java index d1c1d437..09d60250 100644 --- a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java +++ b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java @@ -7,6 +7,7 @@ import com.ctre.phoenix6.configs.CANrangeConfiguration; import com.ctre.phoenix6.hardware.CANrange; import com.ctre.phoenix6.signals.UpdateModeValue; +import com.reduxrobotics.sensors.canandcolor.Canandcolor; import com.revrobotics.RelativeEncoder; import com.revrobotics.spark.SparkBase.PersistMode; import com.revrobotics.spark.SparkBase.ResetMode; From faae9b83a869433ebbb683839c2f19da1e604056 Mon Sep 17 00:00:00 2001 From: Keirnan Mahoney <27MahoneyKeirnan@bprep.org> Date: Wed, 5 Nov 2025 16:51:39 -0800 Subject: [PATCH 09/12] Imports to fix errors --- .../frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOCB.java | 2 ++ .../robot/subsystems/AlgaeShooter/AlgaeShooterIOPB.java | 2 +- .../robot/subsystems/ClimberWinch/ClimberWinchIOCB.java | 7 +++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOCB.java b/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOCB.java index 16ca79e7..81aea796 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOCB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeRoller/AlgaeRollerIOCB.java @@ -9,6 +9,8 @@ import com.revrobotics.spark.SparkBase.ResetMode; import com.revrobotics.spark.SparkLowLevel.MotorType; import com.revrobotics.spark.SparkMax; +import com.revrobotics.spark.config.SparkBaseConfig.IdleMode; +import com.revrobotics.spark.config.SparkMaxConfig; import frc.robot.Constants; diff --git a/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOPB.java b/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOPB.java index 2de844ff..c55ad622 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOPB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeShooter/AlgaeShooterIOPB.java @@ -10,11 +10,11 @@ import com.revrobotics.spark.SparkLowLevel.MotorType; import com.revrobotics.spark.config.ClosedLoopConfig; import com.revrobotics.spark.config.EncoderConfig; +import com.revrobotics.spark.config.SparkBaseConfig.IdleMode; import frc.robot.Constants; public class AlgaeShooterIOPB extends AlgaeShooterIOCB { - /** Creates a new AlgaeShooterIOWB. */ public AlgaeShooterIOPB() { diff --git a/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOCB.java b/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOCB.java index 82a00e4b..06034f7b 100644 --- a/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOCB.java +++ b/src/main/java/frc/robot/subsystems/ClimberWinch/ClimberWinchIOCB.java @@ -8,6 +8,13 @@ import com.revrobotics.spark.SparkBase.ControlType; import com.revrobotics.spark.SparkBase.PersistMode; import com.revrobotics.spark.SparkBase.ResetMode; +import com.revrobotics.spark.SparkLowLevel.MotorType; +import com.revrobotics.spark.SparkMax; +import com.revrobotics.spark.config.ClosedLoopConfig; +import com.revrobotics.spark.config.EncoderConfig; +import com.revrobotics.spark.config.SparkBaseConfig.IdleMode; +import com.revrobotics.spark.config.SparkMaxConfig; + import frc.robot.Constants.CompBotConstants; public class ClimberWinchIOCB implements ClimberWinchIO { From 4313ac7caaec0651a9657be2b1c8c419e30ce81a Mon Sep 17 00:00:00 2001 From: Keirnan Mahoney <27MahoneyKeirnan@bprep.org> Date: Wed, 5 Nov 2025 18:59:03 -0800 Subject: [PATCH 10/12] All files except for Elevator subsystem IO layers have been simplified with no errors. --- .../subsystems/AlgaeTilt/AlgaeTiltIOCB.java | 9 +------ .../CoralShooter/CoralShooterIOCB.java | 27 ++++++++++--------- .../CoralShooter/CoralShooterIOPB.java | 6 ++--- 3 files changed, 17 insertions(+), 25 deletions(-) diff --git a/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOCB.java b/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOCB.java index eaa52cee..eca989f6 100644 --- a/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOCB.java +++ b/src/main/java/frc/robot/subsystems/AlgaeTilt/AlgaeTiltIOCB.java @@ -16,7 +16,6 @@ import com.revrobotics.spark.config.EncoderConfig; import com.revrobotics.spark.config.SparkBaseConfig.IdleMode; import com.revrobotics.spark.config.SparkMaxConfig; -import com.revrobotics.spark.config.ClosedLoopConfig.FeedbackSensor; import frc.robot.Constants; @@ -32,7 +31,7 @@ public class AlgaeTiltIOCB implements AlgaeTiltIO { protected final double forwardLimit = 38.0; protected final double reverseLimit = -10.0; - private final double ZERO_OFFSET = 0.7170253; + protected final double ZERO_OFFSET = 0.7170253; // 0.5551491; //0.7218491 + 0.833; protected final double positionConversionFactor = 1.0; @@ -98,10 +97,4 @@ public void updateInputs(AlgaeTiltIOInputs inputs) { inputs.armVelocityAbsolute = absEncoder.getVelocity(); inputs.armAmps = motor.getOutputCurrent(); } - -@Override -public void setEncoder(double value) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'setEncoder'"); - } } diff --git a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java index 09d60250..5b207959 100644 --- a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java +++ b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOCB.java @@ -7,7 +7,6 @@ import com.ctre.phoenix6.configs.CANrangeConfiguration; import com.ctre.phoenix6.hardware.CANrange; import com.ctre.phoenix6.signals.UpdateModeValue; -import com.reduxrobotics.sensors.canandcolor.Canandcolor; import com.revrobotics.RelativeEncoder; import com.revrobotics.spark.SparkBase.PersistMode; import com.revrobotics.spark.SparkBase.ResetMode; @@ -19,15 +18,16 @@ /** Add your docs here. */ public class CoralShooterIOCB implements CoralShooterIO { - private final SparkMax outtakeMotor = - new SparkMax(Constants.CompBotConstants.CORAL_SHOOTER_ID, MotorType.kBrushless); - + protected SparkMax outtakeMotor; protected RelativeEncoder encoder; protected SparkMaxConfig sparkMaxConfig = new SparkMaxConfig(); - protected Canandcolor intakeSensor; - protected Canandcolor outtakeSensor; + private final CANrangeConfiguration intakeConfig; + private final CANrangeConfiguration outtakeConfig; + + private final CANrange intakeSensor; + private final CANrange outtakeSensor; protected final double KP = 0.0; protected final double KI = 0.0; @@ -37,14 +37,17 @@ public class CoralShooterIOCB implements CoralShooterIO { public CoralShooterIOCB() { outtakeMotor = new SparkMax(Constants.CompBotConstants.CORAL_SHOOTER_ID, MotorType.kBrushless); encoder = outtakeMotor.getEncoder(); + + intakeSensor = new CANrange(Constants.CompBotConstants.INTAKE_SENSOR_ID); + outtakeSensor = new CANrange(Constants.CompBotConstants.OUTTAKE_SENSOR_ID); - CANrangeConfiguration intakeConfig = new CANrangeConfiguration(); - CANrangeConfiguration outtakeConfig = new CANrangeConfiguration(); + intakeConfig = new CANrangeConfiguration(); + outtakeConfig = new CANrangeConfiguration(); sparkMaxConfig.idleMode(IdleMode.kBrake); sparkMaxConfig.inverted(false); outtakeMotor.configure(sparkMaxConfig, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); - } + /* Stated twice, this one is commented because it is private private final double KP = 0.0; private final double KI = 0.0; @@ -56,9 +59,7 @@ protected boolean isInOuttakeSensor() { return outtakeSensor.getProximity() < 0.1; } */ - intakeSensor = new Canandcolor(Constants.CompBotConstants.INTAKE_SENSOR_ID); - outtakeSensor = new Canandcolor(Constants.CompBotConstants.OUTTAKE_SENSOR_ID); - + outtakeMotor.configure( sparkMaxConfig, ResetMode.kResetSafeParameters, PersistMode.kPersistParameters); @@ -117,4 +118,4 @@ public void updateInputs(CoralShooterIOInputs inputs) { // inputs.intakeSensorProximity = intakeSensor.getProximity(); inputs.intakeSensorProximity = intakeSensor.getDistance().refresh().getValueAsDouble(); } -} +} \ No newline at end of file diff --git a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOPB.java b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOPB.java index b0a42919..41089c67 100644 --- a/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOPB.java +++ b/src/main/java/frc/robot/subsystems/CoralShooter/CoralShooterIOPB.java @@ -10,14 +10,12 @@ import com.revrobotics.spark.SparkBase.PersistMode; import com.revrobotics.spark.SparkBase.ResetMode; import com.revrobotics.spark.SparkLowLevel.MotorType; -import com.revrobotics.spark.SparkMax; -import com.revrobotics.spark.config.SparkBaseConfig.IdleMode; -import com.revrobotics.spark.config.SparkMaxConfig; import frc.robot.Constants; /** Add your docs here. */ public class CoralShooterIOPB extends CoralShooterIOCB { - + private Canandcolor intakeSensor; + private Canandcolor outtakeSensor; public CoralShooterIOPB() { super(); From 59fe3555cde1774694e4e395371da9e9942cd357 Mon Sep 17 00:00:00 2001 From: Keirnan Mahoney <27MahoneyKeirnan@bprep.org> Date: Wed, 5 Nov 2025 19:02:29 -0800 Subject: [PATCH 11/12] Elevator IOCB reverted to main. --- .../subsystems/Elevator/ElevatorIOCB.java | 100 ++++++++++++------ 1 file changed, 70 insertions(+), 30 deletions(-) diff --git a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java index bc0ef649..6e62b5f0 100644 --- a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java +++ b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java @@ -4,7 +4,6 @@ package frc.robot.subsystems.Elevator; -import org.littletonrobotics.junction.Logger; import com.ctre.phoenix6.configs.MotionMagicConfigs; import com.ctre.phoenix6.configs.MotorOutputConfigs; import com.ctre.phoenix6.configs.Slot0Configs; @@ -22,25 +21,24 @@ /** Add your docs here. */ public class ElevatorIOCB implements ElevatorIO { - protected TalonFX backElevatorMotor; - protected TalonFX frontElevatorMotor; - // private final DifferentialMechanism elevatorDiff; - protected TalonFXConfiguration frontConfig = new TalonFXConfiguration(); - protected TalonFXConfiguration backConfig = new TalonFXConfiguration(); - protected MotorOutputConfigs outputConfigs = new MotorOutputConfigs(); - // private DifferentialSensorsConfigs sens = backConfig.DifferentialSensors; + private final TalonFX backElevatorMotor = + new TalonFX(CompBotConstants.BACK_ELEVATOR_ID, CompBotConstants.CANBUS_NAME); + private final TalonFX frontElevatorMotor = + new TalonFX(CompBotConstants.FRONT_ELEVATOR_ID, CompBotConstants.CANBUS_NAME); + // private final DifferentialMechanism elevatorDiff; + private TalonFXConfiguration frontConfig = new TalonFXConfiguration(); + private TalonFXConfiguration backConfig = new TalonFXConfiguration(); + private MotorOutputConfigs outputConfigs = new MotorOutputConfigs(); + // private DifferentialSensorsConfigs sens = backConfig.DifferentialSensors; private final DigitalInput bottomSwitch = new DigitalInput(WoodbotConstants.ELEVATOR_BOTTOM_SWITCH); - protected final double GEAR_RATIO = 1.0; - - public ElevatorIOCB() { - backElevatorMotor = new TalonFX(CompBotConstants.BACK_ELEVATOR_ID, CompBotConstants.CANBUS_NAME); - frontElevatorMotor = new TalonFX(CompBotConstants.FRONT_ELEVATOR_ID, CompBotConstants.CANBUS_NAME); + private final double GEAR_RATIO = 1.0; - final double UPPER_LIMIT = 31.0; - final double LOWER_LIMIT = 0.0; + public ElevatorIOCB() { + final double UPPER_LIMIT = 31.0; + final double LOWER_LIMIT = 0.0; final double kA = 0.01; final double kD = 0.0; @@ -65,12 +63,12 @@ public ElevatorIOCB() { backElevatorMotor.getConfigurator().apply(new TalonFXConfiguration()); frontElevatorMotor.getConfigurator().apply(new TalonFXConfiguration()); - //outputConfigs.withInverted(InvertedValue.Clockwise_Positive); - - // talonFXConfiguration.SoftwareLimitSwitch.withForwardSoftLimitThreshold(UPPER_LIMIT); - // talonFXConfiguration.SoftwareLimitSwitch.withForwardSoftLimitEnable(true); - // talonFXConfiguration.SoftwareLimitSwitch.withReverseSoftLimitThreshold(LOWER_LIMIT); - // talonFXConfiguration.SoftwareLimitSwitch.withReverseSoftLimitEnable(true); + // outputConfigs.withInverted(InvertedValue.Clockwise_Positive); + + // talonFXConfiguration.SoftwareLimitSwitch.withForwardSoftLimitThreshold(UPPER_LIMIT); + // talonFXConfiguration.SoftwareLimitSwitch.withForwardSoftLimitEnable(true); + // talonFXConfiguration.SoftwareLimitSwitch.withReverseSoftLimitThreshold(LOWER_LIMIT); + // talonFXConfiguration.SoftwareLimitSwitch.withReverseSoftLimitEnable(true); MotionMagicConfigs motionMagicConfigs = backConfig.MotionMagic; @@ -93,15 +91,41 @@ public ElevatorIOCB() { backConfig.MotorOutput.withInverted(InvertedValue.CounterClockwise_Positive); backElevatorMotor.getConfigurator().apply(backConfig, 0.05); - Logger.recordOutput("front motor duty cycle", frontElevatorMotor.getDutyCycle().getValueAsDouble()); - Logger.recordOutput("back motor duty cycle", backElevatorMotor.getDutyCycle().getValueAsDouble()); - } + frontElevatorMotor.setNeutralMode(NeutralModeValue.Brake); + frontConfig.MotorOutput.withInverted(InvertedValue.CounterClockwise_Positive); + frontElevatorMotor.getConfigurator().apply(frontConfig, 0.05); + + // elevatorDiff = new DifferentialMechanism(backElevatorMotor, frontElevatorMotor, false); + // elevatorDiff.applyConfigs(); + frontElevatorMotor.setControl(new Follower(CompBotConstants.BACK_ELEVATOR_ID, true)); + } + + public void updateInputs(ElevatorIOInputs inputs) { + inputs.elevatorStatorCurrent = backElevatorMotor.getStatorCurrent().getValueAsDouble(); + inputs.elevatorSupplyCurrent = backElevatorMotor.getSupplyCurrent().getValueAsDouble(); + inputs.elevatorVoltage = backElevatorMotor.getMotorVoltage().getValueAsDouble(); + inputs.elevatorPosition = backElevatorMotor.getPosition().getValueAsDouble(); + inputs.elevatorVelocity = backElevatorMotor.getVelocity().getValueAsDouble(); + inputs.elevatorSensor = !bottomSwitch.get(); Logger.recordOutput("front motor", frontElevatorMotor.getPosition().getValueAsDouble()); Logger.recordOutput("back motor", backElevatorMotor.getPosition().getValueAsDouble()); - backElevatorMotor.setControl(duty); - } + Logger.recordOutput( + "front motor duty cycle", frontElevatorMotor.getDutyCycle().getValueAsDouble()); + Logger.recordOutput( + "back motor duty cycle", backElevatorMotor.getDutyCycle().getValueAsDouble()); + } + + public void setDutyCycle(double dutyCycle) { + DutyCycleOut duty = new DutyCycleOut(dutyCycle); + // Logger.recordOutput("duty", duty.Output); + // DifferentialDutyCycle differentialDuty = new DifferentialDutyCycle(dutyCycle, 0.0); // + // difference between mechanism position should be zero? + // PositionDutyCycle positionDuty = new PositionDutyCycle(0.0); + // elevatorDiff.setControl(duty, differentialDuty); + // backElevatorMotor.set(dutyCycle); + frontElevatorMotor.setControl(new Follower(CompBotConstants.BACK_ELEVATOR_ID, true)); backElevatorMotor.setControl(duty); } @@ -111,8 +135,24 @@ public void stop() { frontElevatorMotor.stopMotor(); } - // PositionVoltage positionVoltage = new PositionVoltage(0); // difference between mechanism position should be zero? - // elevatorDiff.setControl(motionMagicVoltage, positionVoltage); - backElevatorMotor.setControl(motionMagicVoltage); - } + /* + * value is new encoder value in rotations + */ + public void setEncoder(double value) { + backElevatorMotor.setPosition(value); + frontElevatorMotor.setPosition(value); + } + + /* + * height is in motor rotations + */ + public void setElevatorPostion(double height) { + MotionMagicVoltage motionMagicVoltage = new MotionMagicVoltage(height); + frontElevatorMotor.setControl(new Follower(CompBotConstants.BACK_ELEVATOR_ID, true)); + + // PositionVoltage positionVoltage = new PositionVoltage(0); // difference between mechanism + // position should be zero? + // elevatorDiff.setControl(motionMagicVoltage, positionVoltage); + backElevatorMotor.setControl(motionMagicVoltage); + } } From ef7a6e56664c918e6089ca2b79cb96ddc75227c0 Mon Sep 17 00:00:00 2001 From: Keirnan Mahoney <27MahoneyKeirnan@bprep.org> Date: Wed, 5 Nov 2025 19:32:06 -0800 Subject: [PATCH 12/12] ElevatorIOPB has been simplified. --- .../subsystems/Elevator/ElevatorIOCB.java | 30 ++-- .../subsystems/Elevator/ElevatorIOPB.java | 129 +++++++++++------- 2 files changed, 96 insertions(+), 63 deletions(-) diff --git a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java index 6e62b5f0..6cccb5b2 100644 --- a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java +++ b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOCB.java @@ -21,24 +21,21 @@ /** Add your docs here. */ public class ElevatorIOCB implements ElevatorIO { - private final TalonFX backElevatorMotor = - new TalonFX(CompBotConstants.BACK_ELEVATOR_ID, CompBotConstants.CANBUS_NAME); - private final TalonFX frontElevatorMotor = - new TalonFX(CompBotConstants.FRONT_ELEVATOR_ID, CompBotConstants.CANBUS_NAME); + protected final TalonFX backElevatorMotor; + protected final TalonFX frontElevatorMotor; // private final DifferentialMechanism elevatorDiff; - private TalonFXConfiguration frontConfig = new TalonFXConfiguration(); - private TalonFXConfiguration backConfig = new TalonFXConfiguration(); - private MotorOutputConfigs outputConfigs = new MotorOutputConfigs(); + protected TalonFXConfiguration frontConfig = new TalonFXConfiguration(); + protected TalonFXConfiguration backConfig = new TalonFXConfiguration(); + protected MotorOutputConfigs outputConfigs = new MotorOutputConfigs(); // private DifferentialSensorsConfigs sens = backConfig.DifferentialSensors; - private final DigitalInput bottomSwitch = + protected final DigitalInput bottomSwitch = new DigitalInput(WoodbotConstants.ELEVATOR_BOTTOM_SWITCH); - private final double GEAR_RATIO = 1.0; - - public ElevatorIOCB() { - final double UPPER_LIMIT = 31.0; - final double LOWER_LIMIT = 0.0; + protected final double GEAR_RATIO = 1.0; + protected ElevatorIOCB(TalonFX backElevatorMotor, TalonFX frontElevatorMotor) { + this.backElevatorMotor = backElevatorMotor; + this.frontElevatorMotor = frontElevatorMotor; final double kA = 0.01; final double kD = 0.0; @@ -55,6 +52,13 @@ public ElevatorIOCB() { slot0Configs.kP = kP; slot0Configs.kS = kS; slot0Configs.kV = kV; + + } + public ElevatorIOCB() { + this( + new TalonFX(CompBotConstants.BACK_ELEVATOR_ID, CompBotConstants.CANBUS_NAME), + new TalonFX(CompBotConstants.FRONT_ELEVATOR_ID, CompBotConstants.CANBUS_NAME) + ); final double motionMagicCruiseVelocity = 800.0; final double motionMagicAcceleration = 350.0; // used to be 300 - jan 30 diff --git a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOPB.java b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOPB.java index df96d35b..1ae3314e 100644 --- a/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOPB.java +++ b/src/main/java/frc/robot/subsystems/Elevator/ElevatorIOPB.java @@ -5,6 +5,7 @@ package frc.robot.subsystems.Elevator; import com.ctre.phoenix6.configs.MotionMagicConfigs; +import com.ctre.phoenix6.configs.MotorOutputConfigs; import com.ctre.phoenix6.configs.Slot0Configs; import com.ctre.phoenix6.configs.TalonFXConfiguration; import com.ctre.phoenix6.controls.DutyCycleOut; @@ -20,36 +21,17 @@ /** Add your docs here. */ public class ElevatorIOPB extends ElevatorIOCB { - - // private final DifferentialMechanism elevatorDiff; - // private DifferentialSensorsConfigs sens = backConfig.DifferentialSensors; - - private final DigitalInput bottomSwitch = - new DigitalInput(WoodbotConstants.ELEVATOR_BOTTOM_SWITCH); - - public ElevatorIOPB() { - super(); - backElevatorMotor = new TalonFX(PracticeBotConstants.BACK_ELEVATOR_ID, PracticeBotConstants.CANBUS_NAME); - frontElevatorMotor = new TalonFX(PracticeBotConstants.FRONT_ELEVATOR_ID, PracticeBotConstants.CANBUS_NAME); - - final double UPPER_LIMIT = 31.0; - final double LOWER_LIMIT = 0.0; - - final double kA = 0.01; - final double kD = 0.0; - final double kG = 0.3; - final double kI = 0.0; - final double kP = 5.0; // 5 original - final double kS = 0.01; - final double kV = 0.07; - Slot0Configs slot0Configs = backConfig.Slot0; - slot0Configs.kA = kA; - slot0Configs.kD = kD; - slot0Configs.kG = kG; - slot0Configs.kI = kI; - slot0Configs.kP = kP; - slot0Configs.kS = kS; - slot0Configs.kV = kV; + // private final DifferentialMechanism elevatorDiff; + // private DifferentialSensorsConfigs sens = backConfig.DifferentialSensors; + + public ElevatorIOPB() { + super( + new TalonFX(PracticeBotConstants.BACK_ELEVATOR_ID, PracticeBotConstants.CANBUS_NAME), + new TalonFX(PracticeBotConstants.FRONT_ELEVATOR_ID, PracticeBotConstants.CANBUS_NAME) + ); + + final double UPPER_LIMIT = 31.0; + final double LOWER_LIMIT = 0.0; final double motionMagicCruiseVelocity = 800.0; final double motionMagicAcceleration = 350.0; // used to be 300 - jan 30 @@ -58,12 +40,12 @@ public ElevatorIOPB() { backElevatorMotor.getConfigurator().apply(new TalonFXConfiguration()); frontElevatorMotor.getConfigurator().apply(new TalonFXConfiguration()); - //outputConfigs.withInverted(InvertedValue.Clockwise_Positive); - - // talonFXConfiguration.SoftwareLimitSwitch.withForwardSoftLimitThreshold(UPPER_LIMIT); - // talonFXConfiguration.SoftwareLimitSwitch.withForwardSoftLimitEnable(true); - // talonFXConfiguration.SoftwareLimitSwitch.withReverseSoftLimitThreshold(LOWER_LIMIT); - // talonFXConfiguration.SoftwareLimitSwitch.withReverseSoftLimitEnable(true); + // outputConfigs.withInverted(InvertedValue.Clockwise_Positive); + + // talonFXConfiguration.SoftwareLimitSwitch.withForwardSoftLimitThreshold(UPPER_LIMIT); + // talonFXConfiguration.SoftwareLimitSwitch.withForwardSoftLimitEnable(true); + // talonFXConfiguration.SoftwareLimitSwitch.withReverseSoftLimitThreshold(LOWER_LIMIT); + // talonFXConfiguration.SoftwareLimitSwitch.withReverseSoftLimitEnable(true); MotionMagicConfigs motionMagicConfigs = backConfig.MotionMagic; @@ -82,25 +64,72 @@ public ElevatorIOPB() { // sens.withDifferentialTalonFXSensorID(frontElevatorMotor.getDeviceID()); // sens.withDifferentialSensorSource(DifferentialSensorSourceValue.RemoteTalonFX_Diff); - public void setDutyCycle(double dutyCycle) { - DutyCycleOut duty = new DutyCycleOut(dutyCycle); - // Logger.recordOutput("duty", duty.Output); - // DifferentialDutyCycle differentialDuty = new DifferentialDutyCycle(dutyCycle, 0.0); // difference between mechanism position should be zero? - // PositionDutyCycle positionDuty = new PositionDutyCycle(0.0); - // elevatorDiff.setControl(duty, differentialDuty); - // backElevatorMotor.set(dutyCycle); - frontElevatorMotor.setControl(new Follower(PracticeBotConstants.BACK_ELEVATOR_ID, true)); + backElevatorMotor.setNeutralMode(NeutralModeValue.Brake); + backConfig.MotorOutput.withInverted(InvertedValue.CounterClockwise_Positive); + backElevatorMotor.getConfigurator().apply(backConfig, 0.05); + + frontElevatorMotor.setNeutralMode(NeutralModeValue.Brake); + frontConfig.MotorOutput.withInverted(InvertedValue.CounterClockwise_Positive); + frontElevatorMotor.getConfigurator().apply(frontConfig, 0.05); + + // elevatorDiff = new DifferentialMechanism(backElevatorMotor, frontElevatorMotor, false); + // elevatorDiff.applyConfigs(); + frontElevatorMotor.setControl(new Follower(PracticeBotConstants.BACK_ELEVATOR_ID, true)); + } + + public void updateInputs(ElevatorIOInputs inputs) { + inputs.elevatorStatorCurrent = backElevatorMotor.getStatorCurrent().getValueAsDouble(); + inputs.elevatorSupplyCurrent = backElevatorMotor.getSupplyCurrent().getValueAsDouble(); + inputs.elevatorVoltage = backElevatorMotor.getMotorVoltage().getValueAsDouble(); + inputs.elevatorPosition = backElevatorMotor.getPosition().getValueAsDouble(); + inputs.elevatorVelocity = backElevatorMotor.getVelocity().getValueAsDouble(); + inputs.elevatorSensor = !bottomSwitch.get(); + + Logger.recordOutput("front motor", frontElevatorMotor.getPosition().getValueAsDouble()); + Logger.recordOutput("back motor", backElevatorMotor.getPosition().getValueAsDouble()); + + Logger.recordOutput( + "front motor duty cycle", frontElevatorMotor.getDutyCycle().getValueAsDouble()); + Logger.recordOutput( + "back motor duty cycle", backElevatorMotor.getDutyCycle().getValueAsDouble()); + } - backElevatorMotor.setControl(duty); - } + public void setDutyCycle(double dutyCycle) { + DutyCycleOut duty = new DutyCycleOut(dutyCycle); + // Logger.recordOutput("duty", duty.Output); + // DifferentialDutyCycle differentialDuty = new DifferentialDutyCycle(dutyCycle, 0.0); // + // difference between mechanism position should be zero? + // PositionDutyCycle positionDuty = new PositionDutyCycle(0.0); + // elevatorDiff.setControl(duty, differentialDuty); + // backElevatorMotor.set(dutyCycle); + frontElevatorMotor.setControl(new Follower(PracticeBotConstants.BACK_ELEVATOR_ID, true)); + + backElevatorMotor.setControl(duty); + } public void stop() { backElevatorMotor.stopMotor(); frontElevatorMotor.stopMotor(); } - // PositionVoltage positionVoltage = new PositionVoltage(0); // difference between mechanism position should be zero? - // elevatorDiff.setControl(motionMagicVoltage, positionVoltage); - backElevatorMotor.setControl(motionMagicVoltage); - } + /* + * value is new encoder value in rotations + */ + public void setEncoder(double value) { + backElevatorMotor.setPosition(value); + frontElevatorMotor.setPosition(value); + } + + /* + * height is in motor rotations + */ + public void setElevatorPostion(double height) { + MotionMagicVoltage motionMagicVoltage = new MotionMagicVoltage(height); + frontElevatorMotor.setControl(new Follower(PracticeBotConstants.BACK_ELEVATOR_ID, true)); + + // PositionVoltage positionVoltage = new PositionVoltage(0); // difference between mechanism + // position should be zero? + // elevatorDiff.setControl(motionMagicVoltage, positionVoltage); + backElevatorMotor.setControl(motionMagicVoltage); + } }