beginnings of shooter subsystem
This commit is contained in:
parent
b7a3e3d2f8
commit
ff66313260
26
src/main/java/frc/robot/constants/ShooterConstants.java
Normal file
26
src/main/java/frc/robot/constants/ShooterConstants.java
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
package frc.robot.constants;
|
||||||
|
|
||||||
|
public class ShooterConstants {
|
||||||
|
|
||||||
|
public static final int kTopShooterID = 11;
|
||||||
|
public static final int kBottomShooterID = 12;
|
||||||
|
public static final int kShooterPivotID = 13;
|
||||||
|
|
||||||
|
public static final double kShooterP = 0.0;
|
||||||
|
public static final double kShooterI = 0.0;
|
||||||
|
public static final double kShooterD = 0.0;
|
||||||
|
|
||||||
|
public static final double kSShooterFF = 0.0;
|
||||||
|
public static final double kVShooterFF = 0.0;
|
||||||
|
|
||||||
|
public static final double kShooterPivotP = 0.0;
|
||||||
|
public static final double kShooterPivotI = 0.0;
|
||||||
|
public static final double kShooterPivotD = 0.0;
|
||||||
|
|
||||||
|
public static final double kSShooterPivotFF = 0.0;
|
||||||
|
public static final double kGShooterPivotFF = 0.0;
|
||||||
|
public static final double kVShooterPivotFF = 0.0;
|
||||||
|
|
||||||
|
public static final double kMaxPivotSpeed = 0.0;
|
||||||
|
public static final double kMaxPivotAcceleration = 0.0;
|
||||||
|
}
|
69
src/main/java/frc/robot/subsystems/Shooter.java
Normal file
69
src/main/java/frc/robot/subsystems/Shooter.java
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
package frc.robot.subsystems;
|
||||||
|
|
||||||
|
import com.revrobotics.CANSparkMax;
|
||||||
|
import com.revrobotics.RelativeEncoder;
|
||||||
|
import com.revrobotics.CANSparkLowLevel.MotorType;
|
||||||
|
|
||||||
|
import edu.wpi.first.math.controller.ArmFeedforward;
|
||||||
|
import edu.wpi.first.math.controller.PIDController;
|
||||||
|
import edu.wpi.first.math.controller.ProfiledPIDController;
|
||||||
|
import edu.wpi.first.math.controller.SimpleMotorFeedforward;
|
||||||
|
import edu.wpi.first.math.trajectory.TrapezoidProfile;
|
||||||
|
import edu.wpi.first.wpilibj.Encoder;
|
||||||
|
import edu.wpi.first.wpilibj2.command.Command;
|
||||||
|
import edu.wpi.first.wpilibj2.command.SubsystemBase;
|
||||||
|
import frc.robot.constants.ShooterConstants;
|
||||||
|
|
||||||
|
public class Shooter extends SubsystemBase{
|
||||||
|
private CANSparkMax topShooter;
|
||||||
|
private CANSparkMax bottomShooter;
|
||||||
|
|
||||||
|
private RelativeEncoder bottomEncoder;
|
||||||
|
private RelativeEncoder topEncoder;
|
||||||
|
|
||||||
|
private CANSparkMax shooterPivot;
|
||||||
|
|
||||||
|
private Encoder pivotEncoder;
|
||||||
|
|
||||||
|
private PIDController topShooterPID;
|
||||||
|
private SimpleMotorFeedforward topShooterFF;
|
||||||
|
|
||||||
|
private PIDController bottomShooterPID;
|
||||||
|
private SimpleMotorFeedforward bottomShooterFF;
|
||||||
|
|
||||||
|
private ProfiledPIDController shooterPivotPID;
|
||||||
|
private ArmFeedforward shooterPivotFF;
|
||||||
|
|
||||||
|
public Shooter(){
|
||||||
|
topShooter = new CANSparkMax(ShooterConstants.kTopShooterID, MotorType.kBrushless);
|
||||||
|
bottomShooter = new CANSparkMax(ShooterConstants.kBottomShooterID, MotorType.kBrushless);
|
||||||
|
|
||||||
|
topEncoder = topShooter.getEncoder();
|
||||||
|
bottomEncoder = bottomShooter.getEncoder();
|
||||||
|
|
||||||
|
shooterPivot = new CANSparkMax(ShooterConstants.kShooterPivotID, MotorType.kBrushless);
|
||||||
|
|
||||||
|
pivotEncoder = new Encoder(0, 1);
|
||||||
|
|
||||||
|
topShooterPID = new PIDController(ShooterConstants.kShooterP, ShooterConstants.kShooterI, ShooterConstants.kShooterD);
|
||||||
|
bottomShooterPID = new PIDController(ShooterConstants.kShooterP, ShooterConstants.kShooterI, ShooterConstants.kShooterD);
|
||||||
|
|
||||||
|
topShooterFF = new SimpleMotorFeedforward(ShooterConstants.kSShooterFF, ShooterConstants.kVShooterFF);
|
||||||
|
topShooterFF = new SimpleMotorFeedforward(ShooterConstants.kSShooterFF, ShooterConstants.kVShooterFF);
|
||||||
|
|
||||||
|
shooterPivotPID = new ProfiledPIDController(
|
||||||
|
ShooterConstants.kShooterPivotP,
|
||||||
|
ShooterConstants.kShooterPivotI,
|
||||||
|
ShooterConstants.kShooterPivotD,
|
||||||
|
new TrapezoidProfile.Constraints(ShooterConstants.kMaxPivotSpeed, ShooterConstants.kMaxPivotAcceleration));
|
||||||
|
|
||||||
|
shooterPivotFF = new ArmFeedforward(ShooterConstants.kSShooterPivotFF,
|
||||||
|
ShooterConstants.kGShooterPivotFF, ShooterConstants.kVShooterPivotFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Command setShooterAngle(double setpointAngle){
|
||||||
|
return run(()-> {
|
||||||
|
shooterPivot.setVoltage(shooterPivotPID.calculate(pivotEncoder.getPosition(), setpointAngle) + );
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user