-
Notifications
You must be signed in to change notification settings - Fork 1
Handle balls 2 #24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Handle balls 2 #24
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -71,6 +71,7 @@ public static class ShooterMotor { | |||||
| public static class Funnel { | ||||||
| public static final double POWER = 0.7; | ||||||
| public static final double REVERSE_POWER = -0.7; | ||||||
| public static final int MACRO_SWITCH_PORT = 0; | ||||||
|
|
||||||
| public static class FunnelMotor { | ||||||
| public static final int MOTOR_PORT = 5; | ||||||
|
|
@@ -89,6 +90,9 @@ public static class PressureSensor { | |||||
| } | ||||||
| } | ||||||
|
|
||||||
| public static class DigitalInputMap { | ||||||
| public static final int MACRO_SWITCH = 0; | ||||||
| } | ||||||
|
|
||||||
| public static class Swerve { | ||||||
| public static final double WHEEL_CIRC = 0.0517 * 2 * Math.PI; //very accurate right now | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. no comments, your code should speak for itself!
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. no numbers, please replace with matching consts. |
||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,68 @@ | ||||||
| package edu.greenblitz.pegasus.commands.handleBalls; | ||||||
|
|
||||||
| import edu.greenblitz.pegasus.commands.funnel.ReverseRunFunnel; | ||||||
| import edu.greenblitz.pegasus.commands.funnel.RunFunnel; | ||||||
| import edu.greenblitz.pegasus.commands.intake.IntakeCommand; | ||||||
| import edu.greenblitz.pegasus.commands.intake.roller.ReverseRunRoller; | ||||||
| import edu.greenblitz.pegasus.commands.shooter.ShooterEvacuate; | ||||||
| import edu.greenblitz.pegasus.subsystems.Indexing; | ||||||
| import edu.greenblitz.pegasus.utils.DigitalInputMap; | ||||||
| import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; | ||||||
| import edu.wpi.first.wpilibj2.command.ParallelDeadlineGroup; | ||||||
| import edu.wpi.first.wpilibj2.command.WaitCommand; | ||||||
|
|
||||||
| public class HandleBalls extends IntakeCommand { | ||||||
|
|
||||||
|
|
||||||
| /** | ||||||
| * this command checks if an enemy ball is trying to enter the Funnel, | ||||||
| * and if so it is rejecting it from entering the funnel system using a | ||||||
| * color sensor to check the color | ||||||
| * | ||||||
| * @see com.revrobotics.ColorSensorV3 colorSensor. | ||||||
| * @see Indexing Subsystem | ||||||
| */ | ||||||
|
Comment on lines
+17
to
+24
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. not comments, the command name should say that instead. |
||||||
|
|
||||||
| private final Indexing index; | ||||||
| private boolean isBallInFunnel; | ||||||
|
|
||||||
| public HandleBalls() { | ||||||
| this.index = Indexing.getInstance(); | ||||||
| isBallInFunnel = false; | ||||||
| require(Indexing.getInstance()); | ||||||
| } | ||||||
|
|
||||||
| @Override | ||||||
| public void execute() { | ||||||
| SmartDashboard.putBoolean("isBallInFunnel", isBallInFunnel); | ||||||
| SmartDashboard.putBoolean("isEnemyBallUnSensor", index.isEnemyBallInSensor()); | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
change the original name too, cause uh you have atypo |
||||||
| SmartDashboard.putBoolean("isMacroSwitch", DigitalInputMap.getInstance().getValue(0)); | ||||||
|
|
||||||
| if (index.isTeamsBallInSensor()) { | ||||||
| //if our team's ball is in front of the sensor activate the boolean | ||||||
| isBallInFunnel = true; | ||||||
| } | ||||||
| if (DigitalInputMap.getInstance().getValue(0)) { | ||||||
| //if the ball got to the macroSwitch then disable the boolean | ||||||
| isBallInFunnel = false; | ||||||
|
Comment on lines
+41
to
+47
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. perhaps split into functions, so we can know what each part does without any comments. |
||||||
| } | ||||||
|
|
||||||
| if (index.isEnemyBallInSensor()) { | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. you said team's
Suggested change
|
||||||
| if (DigitalInputMap.getInstance().getValue(0) || isBallInFunnel) { | ||||||
| isBallInFunnel = false; | ||||||
| SmartDashboard.putBoolean("isEvacuatingFromShooter", false); | ||||||
| //back direction | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. remove commit, your code should speak for itself.
Suggested change
|
||||||
| new ParallelDeadlineGroup( | ||||||
| new WaitCommand(0.5), | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. what does the number represent? use a const. |
||||||
| new ReverseRunRoller(), | ||||||
| new ReverseRunFunnel().raceWith(new WaitCommand(0.2)) | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. what do these number represent? |
||||||
| ).andThen(new RunFunnel().until(() -> DigitalInputMap.getInstance().getValue(0))).schedule(false); | ||||||
| } else { | ||||||
| //shooter evacuation | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. remove comment, your code should speak for itself.
Suggested change
|
||||||
| SmartDashboard.putBoolean("isEvacuatingFromShooter", true); | ||||||
| new ShooterEvacuate().raceWith(new WaitCommand(5)).schedule(false); | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. what does the number represent? const instead please. |
||||||
|
|
||||||
| } | ||||||
| } | ||||||
| } | ||||||
| } | ||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| package edu.greenblitz.pegasus.commands.multiSystem; | ||
|
|
||
| import edu.greenblitz.pegasus.commands.intake.roller.ReverseRunRoller; | ||
| import edu.wpi.first.wpilibj2.command.ParallelRaceGroup; | ||
| import edu.wpi.first.wpilibj2.command.WaitCommand; | ||
|
|
||
| public class EjectEnemyBallFromGripper extends ParallelRaceGroup { //todo can be deadline | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No todo :D |
||
| public EjectEnemyBallFromGripper() { | ||
| addCommands( | ||
| new WaitCommand(1.5), | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. what does the number represent? Use a const. |
||
| new ReverseRunRoller() | ||
| ); | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,18 @@ | ||||||
| package edu.greenblitz.pegasus.commands.multiSystem; | ||||||
|
|
||||||
| import edu.greenblitz.pegasus.RobotMap; | ||||||
| import edu.greenblitz.pegasus.commands.funnel.ReverseRunFunnel; | ||||||
| import edu.greenblitz.pegasus.commands.intake.roller.ReverseRunRoller; | ||||||
| import edu.greenblitz.pegasus.utils.DigitalInputMap; | ||||||
| import edu.wpi.first.wpilibj2.command.ParallelRaceGroup; | ||||||
| import edu.wpi.first.wpilibj2.command.WaitUntilCommand; | ||||||
|
|
||||||
| public class EjectFromShooter extends ParallelRaceGroup {//todo delete | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Remove comments
Suggested change
|
||||||
| public EjectFromShooter() { | ||||||
| addCommands( | ||||||
| new WaitUntilCommand(() -> DigitalInputMap.getInstance().getValue(RobotMap.Pegasus.Funnel.MACRO_SWITCH_PORT)), | ||||||
| new ReverseRunFunnel(), | ||||||
| new ReverseRunRoller() | ||||||
| ); | ||||||
| } | ||||||
| } | ||||||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,46 @@ | ||||||
| package edu.greenblitz.pegasus.commands.multiSystem; | ||||||
|
|
||||||
| import edu.greenblitz.GBLib.src.main.java.edu.greenblitz.gblib.subsystems.shooter.Shooter; | ||||||
| import edu.greenblitz.pegasus.RobotMap; | ||||||
| import edu.greenblitz.pegasus.commands.funnel.RunFunnel; | ||||||
| import edu.greenblitz.pegasus.commands.intake.roller.RunRoller; | ||||||
| import edu.greenblitz.pegasus.utils.DigitalInputMap; | ||||||
| import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; | ||||||
| import edu.wpi.first.wpilibj2.command.ParallelDeadlineGroup; | ||||||
| import edu.wpi.first.wpilibj2.command.SequentialCommandGroup; | ||||||
| import edu.wpi.first.wpilibj2.command.WaitUntilCommand; | ||||||
|
|
||||||
| public class InsertIntoShooter extends SequentialCommandGroup { | ||||||
|
|
||||||
| private double startTime; | ||||||
| private boolean reported = false; | ||||||
|
|
||||||
| // AKA InsertoShooter @tal935 | ||||||
| public InsertIntoShooter() { | ||||||
| addCommands( | ||||||
| new MoveBallUntilClick(), | ||||||
|
|
||||||
| //waits until the shooter is ready | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Remove comments
Suggested change
|
||||||
| new WaitUntilCommand(() -> Shooter.getInstance().isPreparedToShoot()), | ||||||
|
|
||||||
| new ParallelDeadlineGroup(//activates both roller and funnel until ball is no longer at macro switch (was probably propelled) | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Remove comments
Suggested change
|
||||||
| new WaitUntilCommand(() -> !DigitalInputMap.getInstance().getValue(RobotMap.Pegasus.Funnel.MACRO_SWITCH_PORT)), | ||||||
| new RunFunnel(), | ||||||
| new RunRoller() | ||||||
| )); | ||||||
|
|
||||||
| } | ||||||
|
|
||||||
| @Override | ||||||
| public void initialize() { | ||||||
| super.initialize(); | ||||||
| startTime = System.currentTimeMillis() / 1000.0; | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Use constants |
||||||
| } | ||||||
|
|
||||||
|
|
||||||
| @Override | ||||||
| public void end(boolean interrupted) { | ||||||
| super.end(interrupted); | ||||||
| reported = false; | ||||||
| } | ||||||
| } | ||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| package edu.greenblitz.pegasus.commands.multiSystem; | ||
|
|
||
| import edu.greenblitz.GBLib.src.main.java.edu.greenblitz.gblib.base.GBCommand; | ||
| import edu.greenblitz.GBLib.src.main.java.edu.greenblitz.gblib.commands.DoUntilCommand; | ||
| import edu.greenblitz.pegasus.RobotMap; | ||
| import edu.greenblitz.pegasus.commands.funnel.RunFunnel; | ||
| import edu.greenblitz.pegasus.commands.intake.roller.RunRoller; | ||
| import edu.greenblitz.pegasus.utils.DigitalInputMap; | ||
| import edu.greenblitz.pegasus.utils.WaitCommand; | ||
| import edu.wpi.first.wpilibj2.command.ParallelDeadlineGroup; | ||
| import edu.wpi.first.wpilibj2.command.WaitUntilCommand; | ||
|
|
||
| public class MoveBallUntilClick extends ParallelDeadlineGroup { | ||
|
|
||
| public MoveBallUntilClick() { | ||
| super(new WaitUntilCommand(() -> DigitalInputMap.getInstance().getValue(0)), new RunRoller(),new RunFunnel()); | ||
| } | ||
|
|
||
| } |
| Original file line number | Diff line number | Diff line change | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,72 @@ | ||||||||||||||||
| package edu.greenblitz.pegasus.subsystems; | ||||||||||||||||
|
|
||||||||||||||||
| import com.revrobotics.ColorSensorV3; | ||||||||||||||||
| import edu.greenblitz.GBLib.src.main.java.edu.greenblitz.gblib.subsystems.GBSubsystem; | ||||||||||||||||
| import edu.wpi.first.wpilibj.DriverStation; | ||||||||||||||||
| import edu.wpi.first.wpilibj.I2C; | ||||||||||||||||
| import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; | ||||||||||||||||
|
|
||||||||||||||||
| import java.awt.*; | ||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
| public class Indexing extends GBSubsystem { | ||||||||||||||||
| /** | ||||||||||||||||
| * This class is in-charge of checking if an enemy ball is trying to get to the funnel (and eventually to the shooter) | ||||||||||||||||
| * by using color sensor | ||||||||||||||||
| * | ||||||||||||||||
| * @see ColorSensorV3 colorSensorV3 | ||||||||||||||||
| */ | ||||||||||||||||
|
Comment on lines
+13
to
+18
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Remove comments
Suggested change
|
||||||||||||||||
|
|
||||||||||||||||
| private static Indexing instance; | ||||||||||||||||
| private ColorSensorV3 cs; | ||||||||||||||||
| public DriverStation.Alliance alliance; | ||||||||||||||||
|
|
||||||||||||||||
| private Indexing() { | ||||||||||||||||
| cs = new ColorSensorV3(I2C.Port.kOnboard); | ||||||||||||||||
| alliance = DriverStation.getAlliance(); | ||||||||||||||||
| } | ||||||||||||||||
|
|
||||||||||||||||
| public static Indexing getInstance() { | ||||||||||||||||
| if (instance == null) { | ||||||||||||||||
| instance = new Indexing(); | ||||||||||||||||
| } | ||||||||||||||||
| return instance; | ||||||||||||||||
| } | ||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
| /** | ||||||||||||||||
| * @return the color that is in front of the sensor (as a DriverStation.Alliance enum) | ||||||||||||||||
| */ | ||||||||||||||||
|
Comment on lines
+37
to
+39
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Remove comments
Suggested change
|
||||||||||||||||
| public DriverStation.Alliance getBallColor() { | ||||||||||||||||
| float[] color = Color.RGBtoHSB(cs.getRed(), cs.getGreen(), cs.getBlue(), new float[3]); | ||||||||||||||||
| if (color[0] >= 0.05 && color[0] <= 0.2) { | ||||||||||||||||
| return DriverStation.Alliance.Red; | ||||||||||||||||
| } else if (color[0] >= 0.4 && color[0] < 0.6) { | ||||||||||||||||
|
Comment on lines
+42
to
+44
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. constants
Suggested change
|
||||||||||||||||
| return DriverStation.Alliance.Blue; | ||||||||||||||||
| } else { | ||||||||||||||||
| return DriverStation.Alliance.Invalid; | ||||||||||||||||
| } | ||||||||||||||||
| } | ||||||||||||||||
|
|
||||||||||||||||
| /** | ||||||||||||||||
| * @return true if enemy ball in front of the sensor | ||||||||||||||||
| */ | ||||||||||||||||
|
Comment on lines
+51
to
+53
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Remove comments
Suggested change
|
||||||||||||||||
| public boolean isEnemyBallInSensor() { | ||||||||||||||||
| DriverStation.Alliance a = instance.getBallColor(); | ||||||||||||||||
| SmartDashboard.putString("color", a.toString()); | ||||||||||||||||
| return a != alliance | ||||||||||||||||
| && a != DriverStation.Alliance.Invalid; | ||||||||||||||||
| } | ||||||||||||||||
|
|
||||||||||||||||
| /** | ||||||||||||||||
| * @return true is our team's ball is in front of the sensor. | ||||||||||||||||
| */ | ||||||||||||||||
|
Comment on lines
+61
to
+63
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Remove comments
Suggested change
|
||||||||||||||||
| public boolean isTeamsBallInSensor() { | ||||||||||||||||
| DriverStation.Alliance a = instance.getBallColor(); | ||||||||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Name is not informative |
||||||||||||||||
| SmartDashboard.putString("color", a.toString()); | ||||||||||||||||
| return a == alliance | ||||||||||||||||
| && a != DriverStation.Alliance.Invalid; | ||||||||||||||||
| } | ||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
| } | ||||||||||||||||
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if this code is crucial, add it and remove comment, else, remove the comment.