Skip to content

Commit b0c72f6

Browse files
committed
make eject button do something, state arm control for planned pose
1 parent 0e4e715 commit b0c72f6

File tree

1 file changed

+34
-4
lines changed

1 file changed

+34
-4
lines changed

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

+34-4
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ public enum ClimbState{DOWN,READY,CLIMBED} //only ever set to ready or climbed
3131
public enum Objective{SPEAKER,AMP,SOURCE,TRAP}
3232
public enum SelectedTrap{AMP,SOURCE,REAR}
3333

34+
public enum UseFedPoseIntention{YES,NO}
35+
3436
public enum DuckMode {UNDUCK, DOWN}
3537

3638
private ArmState armState = ArmState.HOLD;
@@ -39,6 +41,10 @@ public enum DuckMode {UNDUCK, DOWN}
3941
Objective objective = Objective.SPEAKER;
4042
SelectedTrap selectedTrap = SelectedTrap.AMP;
4143

44+
UseFedPoseIntention useFedPoseIntention = UseFedPoseIntention.NO;
45+
46+
Pose2d intendedPose = new Pose2d();
47+
4248
DuckMode duckMode = DuckMode.DOWN;
4349

4450
boolean alignWhenCloseEnabled = true;
@@ -122,10 +128,13 @@ private double angleToObjective(Objective objective){
122128
}
123129

124130

125-
private double distanceToMySpeaker(){
131+
private double distanceToMySpeaker(Pose2d robotPose){
126132
Translation2d speakerTranslation = AllianceFlipUtil.apply(FieldConstants.Speaker.centerSpeakerOpening.getTranslation());
127133
return Math.hypot(speakerTranslation.getX()-robotPose.getX(),speakerTranslation.getY()-robotPose.getY());
128134
}
135+
private double distanceToMySpeaker(){
136+
return distanceToMySpeaker(robotPose);
137+
}
129138

130139
public double getHoldAngle(){ // this is redundant now :)
131140
// if(duckMode == DuckMode.DUCKING)
@@ -137,12 +146,28 @@ public boolean tuningMode(){
137146
return SmartDashboard.getBoolean("tuningMode",false);
138147
}
139148

149+
public void setUseFedPoseIntention(UseFedPoseIntention useFedPoseIntention){
150+
this.useFedPoseIntention = useFedPoseIntention;
151+
}
152+
public UseFedPoseIntention getUseFedPoseIntention(){
153+
return useFedPoseIntention;
154+
}
155+
public void feedIntendedPose(Pose2d pose){
156+
intendedPose = pose;
157+
}
158+
159+
140160
public double getSpeakerAngle(){ //TODO: arm angle in radians
141161
if(tuningMode())
142162
return Units.degreesToRadians(SmartDashboard.getNumber("tuningAngle",90));
143163

164+
// if(useFedPoseIntention == UseFedPoseIntention.YES)
165+
double distanceToUse = distanceToMySpeaker();
166+
167+
if(useFedPoseIntention == UseFedPoseIntention.YES)
168+
distanceToUse = distanceToMySpeaker(intendedPose);
144169

145-
Optional<Double> angle = MBUtils.interpolateOrExtrapolateFlat(ShootingTables.dist,ShootingTables.angle, distanceToMySpeaker());
170+
Optional<Double> angle = MBUtils.interpolateOrExtrapolateFlat(ShootingTables.dist,ShootingTables.angle, distanceToUse);
146171
if(angle.isPresent())
147172
return Units.degreesToRadians(angle.get());
148173

@@ -151,9 +176,12 @@ public double getSpeakerAngle(){ //TODO: arm angle in radians
151176
public double getSpeakerFlywheelVel(){ //TODO: flywheel velocity in radians per second
152177
if(tuningMode())
153178
return SmartDashboard.getNumber("tuningFlywheelVel",10);
179+
double distanceToUse = distanceToMySpeaker();
154180

181+
if(useFedPoseIntention == UseFedPoseIntention.YES)
182+
distanceToUse = distanceToMySpeaker(intendedPose);
155183

156-
Optional<Double> vel = MBUtils.interpolateOrExtrapolateFlat(ShootingTables.dist,ShootingTables.velocity, distanceToMySpeaker());
184+
Optional<Double> vel = MBUtils.interpolateOrExtrapolateFlat(ShootingTables.dist,ShootingTables.velocity, distanceToUse);
157185
if(vel.isPresent())
158186
return vel.get();
159187

@@ -404,7 +432,9 @@ public void holdPressed(){
404432
}
405433
public void ejectPressed(){
406434
//armState = ArmState.HOLD;
407-
//efState = EFState.EJECT;
435+
efState= EFState.EJECT;
436+
makeEFHoldTimer.reset();
437+
makeEFHoldTimer.start();
408438
}
409439
public void readyToShootPressed(){
410440
// armState = ArmState.HOLD;

0 commit comments

Comments
 (0)