2025-03-04 09:34:50 -05:00
// 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.commands ;
import static edu.wpi.first.units.Units.* ;
2025-03-04 10:06:12 -05:00
import com.ctre.phoenix6.swerve.SwerveModule.DriveRequestType ;
2025-03-04 09:34:50 -05:00
import com.ctre.phoenix6.swerve.SwerveRequest ;
import edu.wpi.first.wpilibj2.command.Command ;
import frc.robot.TunerConstants.TunerConstants ;
2025-03-04 11:41:46 -05:00
import frc.robot.subsystems.CommandSwerveDrivetrain ;
2025-03-04 09:34:50 -05:00
/* You should consider using the more terse Command factories API instead https://docs.wpilib.org/en/stable/docs/software/commandbased/organizing-command-based.html#defining-commands */
public class AvancerAuto extends Command {
2025-03-04 11:41:46 -05:00
private CommandSwerveDrivetrain commandSwerveDrivetrain = TunerConstants . createDrivetrain ( ) ;
2025-03-04 09:34:50 -05:00
private double MaxSpeed = TunerConstants . kSpeedAt12Volts . in ( MetersPerSecond ) ; // kSpeedAt12Volts desired top speed
private double MaxAngularRate = RotationsPerSecond . of ( 0 . 75 ) . in ( RadiansPerSecond ) ; // 3/4 of
private final SwerveRequest . RobotCentric drive = new SwerveRequest . RobotCentric ( )
2025-03-04 10:06:12 -05:00
. withDeadband ( MaxSpeed * 0 . 1 ) . withRotationalDeadband ( MaxAngularRate * 0 . 1 )
. withDriveRequestType ( DriveRequestType . OpenLoopVoltage ) ;
2025-03-04 09:34:50 -05:00
/** Creates a new AvancerAuto. */
2025-03-04 11:41:46 -05:00
public AvancerAuto ( SwerveRequest . RobotCentric drive , CommandSwerveDrivetrain commandSwerveDrivetrain ) {
2025-03-04 09:34:50 -05:00
// Use addRequirements() here to declare subsystem dependencies.
}
// Called when the command is initially scheduled.
@Override
public void initialize ( ) { }
// Called every time the scheduler runs while the command is scheduled.
@Override
public void execute ( ) {
2025-03-04 11:41:46 -05:00
commandSwerveDrivetrain . applyRequest ( ( ) - >
drive . withVelocityY ( 0 . 5 * MaxSpeed )
. withVelocityX ( 0 )
. withRotationalRate ( 0 ) ) ;
2025-03-04 09:34:50 -05:00
}
// Called once the command ends or is interrupted.
@Override
public void end ( boolean interrupted ) {
2025-03-04 10:23:54 -05:00
drive . withVelocityY ( 0 ) ;
2025-03-04 09:34:50 -05:00
}
// Returns true when the command should end.
@Override
public boolean isFinished ( ) {
return false ;
}
}