@@ -64,6 +64,7 @@ public class ScoringSubsystem extends SubsystemBase implements Tunable {
64
64
private boolean overrideShoot = false ;
65
65
private boolean overrideStageAvoidance = false ;
66
66
private boolean overrideBeamBreak = false ;
67
+ private boolean demo = false ;
67
68
68
69
private boolean hoodForced = false ;
69
70
@@ -240,31 +241,53 @@ private void spit() {
240
241
}
241
242
242
243
private void prime () {
244
+ double shooterRPM ;
245
+ double aimAngle ;
243
246
double distanceToGoal = findDistanceToGoal ();
244
- Logger .recordOutput ("scoring/aimGoal" , getAimerAngle (distanceToGoal ));
245
- shooterIo .setShooterVelocityRPM (shooterInterpolated .getValue (distanceToGoal ));
246
- aimerIo .setAimAngleRad (getAimerAngle (distanceToGoal ), false );
247
+ if (demo ) {
248
+ shooterRPM = ScoringConstants .demoShooterRPM ;
249
+ aimAngle = ScoringConstants .demoAimAngle ;
250
+ } else {
251
+ shooterRPM = shooterInterpolated .getValue (distanceToGoal );
252
+ aimAngle = getAimerAngle (distanceToGoal );
253
+ }
254
+ Logger .recordOutput ("scoring/aimGoal" , aimAngle );
255
+ shooterIo .setShooterVelocityRPM (shooterRPM );
256
+ aimerIo .setAimAngleRad (aimAngle , false );
247
257
if (!overrideBeamBreak ) {
248
258
shooterIo .setKickerVolts (hasNote () ? 0.0 : ScoringConstants .kickerIntakeVolts );
249
259
}
250
-
251
- boolean shooterReady =
252
- shooterInputs .shooterLeftVelocityRPM
253
- < (shooterInputs .shooterLeftGoalVelocityRPM
254
- + ScoringConstants .shooterUpperVelocityMarginRPM )
255
- && shooterInputs .shooterLeftVelocityRPM
256
- > (shooterInputs .shooterLeftGoalVelocityRPM
257
- - ScoringConstants .shooterLowerVelocityMarginRPM );
258
- boolean aimReady =
259
- Math .abs (aimerInputs .aimAngleRad - aimerInputs .aimGoalAngleRad )
260
- < aimerAngleTolerance .getValue (distanceToGoal )
261
- && Math .abs (aimerInputs .aimVelocityErrorRadPerSec )
262
- < ScoringConstants .aimAngleVelocityMargin ;
263
- boolean driveReady = driveAllignedSupplier .get ();
260
+ boolean shooterReady ;
261
+ boolean aimReady ;
262
+ if (demo ) {
263
+ shooterReady =
264
+ shooterInputs .shooterLeftVelocityRPM
265
+ < ScoringConstants .shooterUpperVelocityMarginRPM
266
+ && shooterInputs .shooterLeftVelocityRPM
267
+ > ScoringConstants .shooterLowerVelocityMarginRPM ;
268
+ aimReady =
269
+ Math .abs (aimerInputs .aimAngleRad - aimerInputs .aimGoalAngleRad ) < 0.1
270
+ && Math .abs (aimerInputs .aimVelocityErrorRadPerSec )
271
+ < ScoringConstants .aimAngleVelocityMargin ;
272
+ } else {
273
+ shooterReady =
274
+ shooterInputs .shooterLeftVelocityRPM
275
+ < (shooterInputs .shooterLeftGoalVelocityRPM
276
+ + ScoringConstants .shooterUpperVelocityMarginRPM )
277
+ && shooterInputs .shooterLeftVelocityRPM
278
+ > (shooterInputs .shooterLeftGoalVelocityRPM
279
+ - ScoringConstants .shooterLowerVelocityMarginRPM );
280
+ aimReady =
281
+ Math .abs (aimerInputs .aimAngleRad - aimerInputs .aimGoalAngleRad )
282
+ < aimerAngleTolerance .getValue (distanceToGoal )
283
+ && Math .abs (aimerInputs .aimVelocityErrorRadPerSec )
284
+ < ScoringConstants .aimAngleVelocityMargin ;
285
+ }
286
+ boolean driveReady = demo || driveAllignedSupplier .get ();
264
287
boolean fieldLocationReady = true ;
265
288
if (!DriverStation .getAlliance ().isPresent ()) {
266
289
fieldLocationReady = true ;
267
- } else {
290
+ } else if (! demo ) {
268
291
switch (DriverStation .getAlliance ().get ()) {
269
292
case Blue :
270
293
fieldLocationReady =
@@ -322,11 +345,16 @@ private void ampPrime() {
322
345
}
323
346
324
347
private void shoot () {
325
- double distancetoGoal = findDistanceToGoal ();
326
-
327
- double shootRPM = shooterInterpolated .getValue (distancetoGoal );
328
- shooterIo .setShooterVelocityRPM (shootRPM );
329
- double aimAngleRad = aimerInterpolated .getValue (distancetoGoal );
348
+ double shootRPM ;
349
+ double aimAngleRad ;
350
+ if (!demo ) {
351
+ double distancetoGoal = findDistanceToGoal ();
352
+ shootRPM = shooterInterpolated .getValue (distancetoGoal );
353
+ aimAngleRad = aimerInterpolated .getValue (distancetoGoal );
354
+ } else {
355
+ shootRPM = ScoringConstants .demoShooterRPM ;
356
+ aimAngleRad = ScoringConstants .demoAimAngle ;
357
+ }
330
358
aimerIo .setAimAngleRad (aimAngleRad , false );
331
359
332
360
shooterIo .setKickerVolts (10 );
@@ -423,7 +451,6 @@ public boolean hasNote() {
423
451
424
452
public boolean aimerAtIntakePosition () {
425
453
return aimerInputs .aimAngleRad > ScoringConstants .intakeAngleToleranceRadians ;
426
- // return true;\][]
427
454
}
428
455
429
456
public boolean canIntake () {
@@ -619,6 +646,10 @@ public void setOverrideBeamBrake(boolean overrideBeamBrake) {
619
646
this .overrideBeamBreak = overrideBeamBrake ;
620
647
}
621
648
649
+ public void setDemo (boolean demo ) {
650
+ this .demo = demo ;
651
+ }
652
+
622
653
public void setArmDisabled (boolean disabled ) {
623
654
aimerIo .setMotorDisabled (disabled );
624
655
}
@@ -688,15 +719,15 @@ public void setVolts(double volts, int slot) {
688
719
switch (slot ) {
689
720
// Aimer
690
721
case 0 :
691
- aimerIo .setOverrideVolts (volts );
722
+ aimerIo .setOverrideVolts (demo ? volts * 0.5 : volts );
692
723
break ;
693
724
// Hood
694
725
case 1 :
695
- hoodIo .setOverrideVolts (volts );
726
+ hoodIo .setOverrideVolts (demo ? volts * 0.5 : volts );
696
727
break ;
697
728
// Shooter
698
729
case 2 :
699
- shooterIo .setOverrideVolts (volts );
730
+ shooterIo .setOverrideVolts (demo ? volts * 0.5 : volts );
700
731
break ;
701
732
default :
702
733
throw new IllegalArgumentException ("Invalid slot" );
0 commit comments