diff --git a/src/main/java/frc/robot/Constants.java b/src/main/java/frc/robot/Constants.java index 31a8462..cf489ed 100644 --- a/src/main/java/frc/robot/Constants.java +++ b/src/main/java/frc/robot/Constants.java @@ -306,9 +306,10 @@ public class ShooterRotaryConstants { public static final Angle TOLERANCE = Degrees.of(2.0); - public static final AngularVelocity CRUISE_VELOCITY = RadiansPerSecond.of(1); - public static final AngularAcceleration ACCELERATION = CRUISE_VELOCITY.div(0.1).per(Second); - public static final Velocity JERK = ACCELERATION.per(Second); + // public static final AngularVelocity CRUISE_VELOCITY = Units.RadiansPerSecond.of(1); + // public static final AngularAcceleration ACCELERATION = + // CRUISE_VELOCITY.div(0.1).per(Units.Second); + // public static final Velocity JERK = ACCELERATION.per(Second); private static final double ROTOR_TO_SENSOR = (2.0 / 1.0); private static final double SENSOR_TO_MECHANISM = (2.0 / 1.0); @@ -370,10 +371,10 @@ public static TalonFXConfiguration getFXConfig() { config.MotorOutput.Inverted = InvertedValue.CounterClockwise_Positive; config.SoftwareLimitSwitch.ForwardSoftLimitEnable = false; - config.SoftwareLimitSwitch.ForwardSoftLimitThreshold = MAX_ANGLE.in(Rotations); + // config.SoftwareLimitSwitch.ForwardSoftLimitThreshold = MAX_ANGLE.in(Units.Rotaitons); config.SoftwareLimitSwitch.ReverseSoftLimitEnable = false; - config.SoftwareLimitSwitch.ReverseSoftLimitThreshold = MIN_ANGLE.in(Rotations); + // config.SoftwareLimitSwitch.ReverseSoftLimitThreshold = MIN_ANGLE.in(Units.Rotations); config.Feedback.RotorToSensorRatio = ROTOR_TO_SENSOR; config.Feedback.SensorToMechanismRatio = SENSOR_TO_MECHANISM; diff --git a/src/main/java/frc/robot/Robot.java b/src/main/java/frc/robot/Robot.java index d1c197b..d9dbd13 100644 --- a/src/main/java/frc/robot/Robot.java +++ b/src/main/java/frc/robot/Robot.java @@ -16,6 +16,9 @@ import com.ctre.phoenix6.swerve.SwerveModuleConstants; import com.ctre.phoenix6.swerve.SwerveModuleConstants.DriveMotorArrangement; import com.ctre.phoenix6.swerve.SwerveModuleConstants.SteerMotorArrangement; +import edu.wpi.first.wpilibj.Alert; +import edu.wpi.first.wpilibj.Alert.AlertType; +import edu.wpi.first.wpilibj.RobotController; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.CommandScheduler; import frc.robot.generated.TunerConstants; @@ -35,6 +38,7 @@ public class Robot extends LoggedRobot { private Command autonomousCommand; private RobotContainer robotContainer; + private Alert lowBatteryAlert = new Alert("The robot is low on battery!", AlertType.kWarning); public Robot() { // Record metadata @@ -114,7 +118,10 @@ public void robotPeriodic() { // This must be called from the robot's periodic block in order for anything in // the Command-based framework to work. CommandScheduler.getInstance().run(); - + if (0.0 <= RobotController.getBatteryVoltage() + && RobotController.getBatteryVoltage() <= 11.01) { + lowBatteryAlert.set(true); + } // Return to non-RT thread priority (do not modify the first argument) // Threads.setCurrentThreadPriority(false, 10); } diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index 8eee7a7..28c14a8 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -22,16 +22,13 @@ import edu.wpi.first.wpilibj2.command.Commands; import edu.wpi.first.wpilibj2.command.button.CommandXboxController; import edu.wpi.first.wpilibj2.command.sysid.SysIdRoutine; +import frc.lib.W8.io.absoluteencoder.AbsoluteEncoderIOCANCoder; import frc.lib.W8.io.absoluteencoder.AbsoluteEncoderIOCANCoderSim; import frc.lib.W8.io.motor.*; import frc.lib.W8.mechanisms.flywheel.*; -import frc.lib.W8.mechanisms.linear.LinearMechanism; -import frc.lib.W8.mechanisms.linear.LinearMechanismReal; -import frc.lib.W8.mechanisms.linear.LinearMechanismSim; import frc.lib.W8.mechanisms.rotary.RotaryMechanism; import frc.lib.W8.mechanisms.rotary.RotaryMechanismReal; import frc.lib.W8.mechanisms.rotary.RotaryMechanismSim; -import frc.robot.Constants.ClimberConstants; import frc.robot.Constants.HopperConstants; import frc.robot.Constants.IntakeConstants; import frc.robot.Constants.Ports; @@ -39,7 +36,6 @@ import frc.robot.Constants.ShooterRotaryConstants; import frc.robot.commands.DriveCommands; import frc.robot.generated.TunerConstants; -import frc.robot.subsystems.Climber; import frc.robot.subsystems.Hopper; import frc.robot.subsystems.Intake; import frc.robot.subsystems.Shooter; @@ -63,7 +59,6 @@ public class RobotContainer { private final Drive drive; private final Hopper hopper; private final Shooter shooter; - private final Climber climber; private final Intake intake; // Controller @@ -110,14 +105,6 @@ public RobotContainer() { Ports.ShooterRoller), Constants.ShooterRotaryConstants.CONSTANTS, java.util.Optional.empty())); - climber = - new Climber( - new LinearMechanismReal( - new MotorIOTalonFX( - ClimberConstants.MOTOR_NAME, - ClimberConstants.getFXConfig(), - Ports.ClimberLinearMechanism), - ClimberConstants.CHARACTERISTICS)); intake = new Intake( @@ -133,7 +120,7 @@ public RobotContainer() { Ports.IntakeRoller), IntakeConstants.CONSTANTS, Optional.of( - new AbsoluteEncoderIOCANCoderSim( + new AbsoluteEncoderIOCANCoder( Ports.IntakeRoller, IntakeConstants.MOTOR_NAME + " Encoder", IntakeConstants.getCANcoderConfig(false))))); @@ -187,17 +174,6 @@ public RobotContainer() { true, ShooterRotaryConstants.CONSTANTS, java.util.Optional.empty())); - climber = - new Climber( - new LinearMechanismSim( - new MotorIOTalonFXSim( - ClimberConstants.MOTOR_NAME, - ClimberConstants.getFXConfig(), - Ports.ClimberLinearMechanism), - ClimberConstants.DCMOTOR, - ClimberConstants.CARRIAGE_MASS, - ClimberConstants.CHARACTERISTICS, - true)); intake = new Intake( @@ -236,10 +212,6 @@ public RobotContainer() { new ModuleIO() {}); hopper = new Hopper(new FlywheelMechanism() {}); - climber = - new Climber( - new LinearMechanism( - ClimberConstants.MOTOR_NAME, ClimberConstants.CHARACTERISTICS) {}); shooter = new Shooter( diff --git a/src/main/java/frc/robot/subsystems/Climber.java b/src/main/java/frc/robot/subsystems/Climber.java index 5e1def5..c504aba 100644 --- a/src/main/java/frc/robot/subsystems/Climber.java +++ b/src/main/java/frc/robot/subsystems/Climber.java @@ -1,13 +1,9 @@ package frc.robot.subsystems; -import static edu.wpi.first.units.Units.Inches; import static edu.wpi.first.units.Units.Meters; -import edu.wpi.first.units.Units; import edu.wpi.first.units.measure.Distance; -import edu.wpi.first.units.measure.LinearVelocity; import edu.wpi.first.wpilibj2.command.SubsystemBase; -import frc.lib.W8.io.motor.MotorIO.PIDSlot; import frc.lib.W8.mechanisms.linear.LinearMechanism; import frc.robot.Constants.ClimberConstants; @@ -19,28 +15,16 @@ public Climber(LinearMechanism io) { io = _io; } - public void Position(double position) { + // public void Position(double position) { - Distance positionInches = Inches.of(position); - _io.runPosition( - ClimberConstants.CONVERTER.toAngle(positionInches), - ClimberConstants.ANGULAR_VELOCITY, - ClimberConstants.ANGULAR_ACCELERATION, - null, - PIDSlot.SLOT_0); - } - - public enum State { - IDLE(Units.MetersPerSecond.of(0.0)), - ASCENDING(Units.MetersPerSecond.of(ClimberConstants.CLIMB_SPEED)), - DESCENDING(Units.MetersPerSecond.of(-ClimberConstants.CLIMB_SPEED)); - - private final LinearVelocity velocity; - - private State(LinearVelocity velocity) { - this.velocity = velocity; - } - } + // Distance positionInches = Inches.of(position); + // _io.runPosition( + // ClimberConstants.CONVERTER.toAngle(positionInches), + // ClimberConstants.ANGULAR_VELOCITY, + // ClimberConstants.ANGULAR_ACCELERATION, + // null, + // PIDSlot.SLOT_0); + // } @Override public void periodic() {}