Skip to content

Commit e58fd23

Browse files
committed
brake enable toggle, different gain outside of braking range
1 parent db26839 commit e58fd23

File tree

5 files changed

+55
-22
lines changed

5 files changed

+55
-22
lines changed

src/main/java/frc/robot/Constants.java

+16-2
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,24 @@ public static class EFCConstants{
7272

7373
public static class ArmConstants{
7474

75-
public static final double armkP = 0.8;
75+
public static final double armMaxPower = 0.6;
76+
77+
public static final double armkP = 0.6;
7678
public static final double armkI = 0.1;
7779
public static final double armkD = 0.0;
78-
public static final double armIZone = 0.15;
80+
81+
82+
public static final double armkPBrakeless = 0.3;
83+
public static final double armkIBrakeless = 0.1;
84+
public static final double armkDBrakeless = 0.0;
85+
86+
public static final double brakeMinAngle = Units.degreesToRadians(-5);
87+
public static final double brakeMaxAngle = Units.degreesToRadians(50);
88+
89+
90+
public static final double armIZone = Units.degreesToRadians(10);
91+
92+
public static final double brakeEngageError = Units.degreesToRadians(5);
7993

8094

8195
public static final double armGearRatio = (40.0/14) * 80.0;

src/main/java/frc/robot/RobotContainer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ private void configureBindings() {
8888
operator.povUp().onTrue(new InstantCommand(stateController::sourcePressed));
8989
operator.povRight().onTrue(new InstantCommand(stateController::ampPressed));
9090
operator.povDown().onTrue(new InstantCommand(stateController::speakerPressed));
91-
operator.povLeft().onTrue(new InstantCommand(stateController::trapPressed));
91+
//operator.povLeft().onTrue(new InstantCommand(stateController::trapPressed));
9292

9393
// operator.leftTrigger(0.5).onTrue(new InstantCommand(stateController::shootPressed));
9494
driver.leftTrigger(0.5).onTrue(new InstantCommand(stateController::shootPressed));

src/main/java/frc/robot/StateControllerSub.java

+1
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@ public boolean alignWhenClose() {
310310
if(armState == ArmState.INTAKE){
311311
return noteAlignAngleDiff;
312312
}
313+
313314
return MBUtils.angleDiffRad(angleToObjective(objective),robotPose.getRotation().getRadians());
314315
}
315316
double noteAlignAngleDiff = 0;

src/main/java/frc/robot/subsystems/ArmSubsystem.java

+32-16
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public ArmSubsystem(StateControllerSub stateControllerSub, PneumaticControlSub p
3434
// armDutyCycle.setDistancePerRotation(Math.PI);
3535

3636
pidController.setIZone(armIZone);
37-
pidController.setIntegratorRange(0,0.1);
37+
pidController.setIntegratorRange(-0.15,0.15);
3838

3939

4040
this.stateControllerSub = stateControllerSub;
@@ -111,9 +111,7 @@ public ArmSubsystem(StateControllerSub stateControllerSub, PneumaticControlSub p
111111

112112
}
113113

114-
double lastP = armkP;
115-
double lastI = armkI;
116-
double lastD = armkD;
114+
117115

118116
double lastZeroingTimestamp = 0;
119117

@@ -167,25 +165,39 @@ public void periodic() {
167165
SmartDashboard.putNumber("armError",getArmError());
168166

169167

170-
double currentP = SmartDashboard.getNumber("armTuningP",0);
171-
double currentI = SmartDashboard.getNumber("armTuningI",0);
172-
double currentD = SmartDashboard.getNumber("armTuningD",0);
173-
if((currentP!=lastP || currentI!=lastI || currentD !=lastD)){ // && stateControllerSub.tuningMode()
174-
lastP = currentP;
175-
lastI = currentI;
176-
lastD = currentD;
177168

178-
armMaster.getPIDController().setP(currentP);
179-
armMaster.getPIDController().setI(currentI);
180-
armMaster.getPIDController().setD(currentD);
169+
if((stateControllerSub.tuningMode())){ //
170+
171+
double currentP = SmartDashboard.getNumber("armTuningP",0);
172+
double currentI = SmartDashboard.getNumber("armTuningI",0);
173+
double currentD = SmartDashboard.getNumber("armTuningD",0);
174+
175+
// armMaster.getPIDController().setP(currentP);
176+
// armMaster.getPIDController().setI(currentI);
177+
// armMaster.getPIDController().setD(currentD);
181178

182179
pidController.setP(currentP);
183180
pidController.setI(currentI);
184181
pidController.setD(currentD);
185182

183+
}else{
184+
185+
if(inRangeOfBrake()){
186+
pidController.setP(armkP);
187+
pidController.setI(armkI);
188+
pidController.setD(armkD);
189+
190+
}else{
191+
pidController.setP(armkPBrakeless);
192+
pidController.setI(armkIBrakeless);
193+
pidController.setD(armkDBrakeless);
194+
195+
}
196+
197+
186198
}
187199

188-
double pidOut = MBUtils.clamp(pidController.calculate(getRIODutyCycleRad()),0.5);
200+
double pidOut = MBUtils.clamp(pidController.calculate(getRIODutyCycleRad()),armMaxPower);
189201

190202
if(armDutyCycle.isConnected())
191203
armMaster.set(pidOut);
@@ -199,7 +211,11 @@ public void periodic() {
199211
// SmartDashboard.putNumber("armRIO-PWM rad",getRIODutyCycleRad());
200212
// SmartDashboard.putNumber("armRIO-PWM raw",armDutyCycle.getAbsolutePosition());
201213

202-
pneumaticControlSub.setBrakeSolenoid(Math.abs(getArmError())<0.05 && getArmAngle() > 0&& getArmAngle() < Units.degreesToRadians(50) );
214+
pneumaticControlSub.setBrakeSolenoid(Math.abs(getArmError())<brakeEngageError && inRangeOfBrake());
215+
}
216+
217+
public boolean inRangeOfBrake(){
218+
return getArmAngle() > brakeMinAngle&& getArmAngle() < brakeMaxAngle;
203219
}
204220

205221
public double getArmError(){

src/main/java/frc/robot/subsystems/PneumaticControlSub.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ public PneumaticControlSub(){
1717
SmartDashboard.putBoolean("enableCompressor",false);
1818

1919
climbSolenoid = pcm.makeSolenoid(6);
20-
brakeSolenoid = pcm.makeSolenoid(7);
20+
brakeSolenoid = pcm.makeSolenoid(5);
2121

22-
SmartDashboard.putBoolean("setBrakeSolenoid",false);
22+
SmartDashboard.putBoolean("enableBrakes",true);
2323

2424

2525
}
@@ -49,7 +49,9 @@ public void setClimbSolenoid(boolean state){
4949
}
5050

5151
public void setBrakeSolenoid(boolean state){
52-
SmartDashboard.putBoolean("brakeSolenoid",state);
52+
SmartDashboard.putBoolean("brakeSolenoidClosed",state);
53+
if(!SmartDashboard.getBoolean("enableBrakes",true))
54+
state = false;
5355
brakeSolenoid.set(state);
5456
}
5557

0 commit comments

Comments
 (0)