@@ -31,6 +31,8 @@ public enum ClimbState{DOWN,READY,CLIMBED} //only ever set to ready or climbed
31
31
public enum Objective {SPEAKER ,AMP ,SOURCE ,TRAP }
32
32
public enum SelectedTrap {AMP ,SOURCE ,REAR }
33
33
34
+ public enum UseFedPoseIntention {YES ,NO }
35
+
34
36
public enum DuckMode {UNDUCK , DOWN }
35
37
36
38
private ArmState armState = ArmState .HOLD ;
@@ -39,6 +41,10 @@ public enum DuckMode {UNDUCK, DOWN}
39
41
Objective objective = Objective .SPEAKER ;
40
42
SelectedTrap selectedTrap = SelectedTrap .AMP ;
41
43
44
+ UseFedPoseIntention useFedPoseIntention = UseFedPoseIntention .NO ;
45
+
46
+ Pose2d intendedPose = new Pose2d ();
47
+
42
48
DuckMode duckMode = DuckMode .DOWN ;
43
49
44
50
boolean alignWhenCloseEnabled = true ;
@@ -122,10 +128,13 @@ private double angleToObjective(Objective objective){
122
128
}
123
129
124
130
125
- private double distanceToMySpeaker (){
131
+ private double distanceToMySpeaker (Pose2d robotPose ){
126
132
Translation2d speakerTranslation = AllianceFlipUtil .apply (FieldConstants .Speaker .centerSpeakerOpening .getTranslation ());
127
133
return Math .hypot (speakerTranslation .getX ()-robotPose .getX (),speakerTranslation .getY ()-robotPose .getY ());
128
134
}
135
+ private double distanceToMySpeaker (){
136
+ return distanceToMySpeaker (robotPose );
137
+ }
129
138
130
139
public double getHoldAngle (){ // this is redundant now :)
131
140
// if(duckMode == DuckMode.DUCKING)
@@ -137,12 +146,28 @@ public boolean tuningMode(){
137
146
return SmartDashboard .getBoolean ("tuningMode" ,false );
138
147
}
139
148
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
+
140
160
public double getSpeakerAngle (){ //TODO: arm angle in radians
141
161
if (tuningMode ())
142
162
return Units .degreesToRadians (SmartDashboard .getNumber ("tuningAngle" ,90 ));
143
163
164
+ // if(useFedPoseIntention == UseFedPoseIntention.YES)
165
+ double distanceToUse = distanceToMySpeaker ();
166
+
167
+ if (useFedPoseIntention == UseFedPoseIntention .YES )
168
+ distanceToUse = distanceToMySpeaker (intendedPose );
144
169
145
- Optional <Double > angle = MBUtils .interpolateOrExtrapolateFlat (ShootingTables .dist ,ShootingTables .angle , distanceToMySpeaker () );
170
+ Optional <Double > angle = MBUtils .interpolateOrExtrapolateFlat (ShootingTables .dist ,ShootingTables .angle , distanceToUse );
146
171
if (angle .isPresent ())
147
172
return Units .degreesToRadians (angle .get ());
148
173
@@ -151,9 +176,12 @@ public double getSpeakerAngle(){ //TODO: arm angle in radians
151
176
public double getSpeakerFlywheelVel (){ //TODO: flywheel velocity in radians per second
152
177
if (tuningMode ())
153
178
return SmartDashboard .getNumber ("tuningFlywheelVel" ,10 );
179
+ double distanceToUse = distanceToMySpeaker ();
154
180
181
+ if (useFedPoseIntention == UseFedPoseIntention .YES )
182
+ distanceToUse = distanceToMySpeaker (intendedPose );
155
183
156
- Optional <Double > vel = MBUtils .interpolateOrExtrapolateFlat (ShootingTables .dist ,ShootingTables .velocity , distanceToMySpeaker () );
184
+ Optional <Double > vel = MBUtils .interpolateOrExtrapolateFlat (ShootingTables .dist ,ShootingTables .velocity , distanceToUse );
157
185
if (vel .isPresent ())
158
186
return vel .get ();
159
187
@@ -404,7 +432,9 @@ public void holdPressed(){
404
432
}
405
433
public void ejectPressed (){
406
434
//armState = ArmState.HOLD;
407
- //efState = EFState.EJECT;
435
+ efState = EFState .EJECT ;
436
+ makeEFHoldTimer .reset ();
437
+ makeEFHoldTimer .start ();
408
438
}
409
439
public void readyToShootPressed (){
410
440
// armState = ArmState.HOLD;
0 commit comments