import edu.wpi.first.math.geometry.Pose3d;
import edu.wpi.first.wpilibj.DriverStation;
-import edu.wpi.first.wpilibj.PS5Controller;
import edu.wpi.first.wpilibj.RobotController;
import edu.wpi.first.wpilibj.livewindow.LiveWindow;
import edu.wpi.first.wpilibj.smartdashboard.SendableChooser;
private EMABreaker breaker = null;
- // TODO: move to correct robot and put the correct port?
- private PS5Controller ps5 = new PS5Controller(0);
-
// auto Command selection
private final SendableChooser<Command> autoChooser = new SendableChooser<>();
package frc.robot.commands.gpm;
import edu.wpi.first.wpilibj2.command.Command;
-import frc.robot.subsystems.Intake.Intake;
import frc.robot.subsystems.PowerControl.Battery;
import frc.robot.subsystems.PowerControl.EMABreaker;
-import frc.robot.subsystems.drivetrain.Drivetrain;
-import frc.robot.subsystems.hood.Hood;
-import frc.robot.subsystems.shooter.Shooter;
-import frc.robot.subsystems.spindexer.Spindexer;
-import frc.robot.subsystems.turret.Turret;
+
public class PowerControl extends Command {
// my beautiful power control subsystems
private EMABreaker breaker;
private Battery battery;
// the real subsystems
- private Drivetrain drivetrain;
- private Shooter shooter;
- private Turret turret;
- private Hood hood;
- private Intake intake;
- private Spindexer spindexer;
+ // TODO: implement current limit logic for these subsystems
+ // private Drivetrain drivetrain;
+ // private Shooter shooter;
+ // private Turret turret;
+ // private Hood hood;
+ // private Intake intake;
+ // private Spindexer spindexer;
public SeverityLevel severityLevel;
public PowerControl(
EMABreaker breaker, // pc
- Battery battery, // pc
- Drivetrain drivetrain, // main draw
- Shooter shooter, // aiming (vital)
- Turret turret, // aiming
- Hood hood, // aiming
- Intake intake, // bps
- Spindexer spindexer // bps
+ Battery battery // pc
+ // TODO: add subsystems back when implementing logic:
+ // Drivetrain drivetrain, // main draw
+ // Shooter shooter, // aiming (vital)
+ // Turret turret, // aiming
+ // Hood hood, // aiming
+ // Intake intake, // bps
+ // Spindexer spindexer // bps
) {
this.breaker = breaker;
this.battery = battery;
- this.drivetrain = drivetrain;
- this.shooter = shooter;
- this.turret = turret;
- this.hood = hood;
- this.intake = intake;
- this.spindexer = spindexer;
+ // TODO: add these back when implementing logic:
+ // this.drivetrain = drivetrain;
+ // this.shooter = shooter;
+ // this.turret = turret;
+ // this.hood = hood;
+ // this.intake = intake;
+ // this.spindexer = spindexer;
addRequirements(breaker, battery); // not sure if I'll need requirement access for setting new current limits
}
import frc.robot.commands.gpm.RunSpindexer;
import frc.robot.commands.gpm.Superstructure;
import frc.robot.constants.Constants;
-import frc.robot.constants.swerve.DriveConstants;
import frc.robot.subsystems.Intake.Intake;
import frc.robot.subsystems.drivetrain.Drivetrain;
import frc.robot.subsystems.hood.Hood;
import frc.robot.subsystems.shooter.Shooter;
import frc.robot.subsystems.spindexer.Spindexer;
-import frc.robot.subsystems.spindexer.SpindexerConstants;
import frc.robot.subsystems.turret.Turret;
import lib.controllers.PS5Controller;
import lib.controllers.PS5Controller.DPad;
import lib.controllers.PS5Controller.PS5Axis;
import lib.controllers.PS5Controller.PS5Button;
-import org.littletonrobotics.junction.Logger;
/**
* Driver controls for the PS5 controller
private Hood hood;
private Intake intake;
private Spindexer spindexer;
- private double originalSpindexerCurrentLimit;
public PS5ControllerDriverConfig(
Drivetrain drive,
import com.ctre.phoenix6.sim.TalonFXSimState;
import edu.wpi.first.math.MathUtil;
-import edu.wpi.first.math.filter.Debouncer;
-import edu.wpi.first.math.filter.Debouncer.DebounceType;
import edu.wpi.first.math.filter.LinearFilter;
import edu.wpi.first.math.geometry.Rotation2d;
import edu.wpi.first.math.util.Units;
import edu.wpi.first.wpilibj2.command.InstantCommand;
import edu.wpi.first.wpilibj2.command.SubsystemBase;
import frc.robot.constants.IdConstants;
-import frc.robot.util.ModifiedCRT;
public class Turret extends SubsystemBase implements TurretIO{
// Super low magnitude filter for the position to make it less jittery
public boolean locked = false;
private boolean calibrating;
- private Debouncer calibrationDebouncer = new Debouncer(0.5, DebounceType.kRising);
/* ---------------- Hardware ---------------- */