diff --git a/src/main/java/frc/robot/Constants.java b/src/main/java/frc/robot/Constants.java index 13b0abe..692915c 100644 --- a/src/main/java/frc/robot/Constants.java +++ b/src/main/java/frc/robot/Constants.java @@ -11,8 +11,8 @@ public class Constants { //moteur - public static int GratteD = 7; - public static int GratteG = 8; + public static int GratteD = 8; + public static int GratteG = 7; // pneumatique diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index 60a6be2..8398495 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -3,6 +3,7 @@ // the WPILib BSD license file in the root directory of this project. package frc.robot; + import java.util.Map; @@ -40,72 +41,64 @@ import frc.robot.commands.Gyro; import frc.robot.commands.Reculer; import frc.robot.commands.Tape; import frc.robot.commands.bras.BrasManuel; +import frc.robot.commands.bras.DescendrePivotBras; import frc.robot.commands.bras.FermePince; +import frc.robot.commands.bras.MonterPivotBras; import frc.robot.commands.bras.OuvrePince; -import frc.robot.commands.bras.PivotBrasRentre; -import frc.robot.commands.bras.PivotChercheBas; -import frc.robot.commands.bras.PivotChercheHaut; import frc.robot.commands.bras.PivotManuel; -import frc.robot.commands.bras.PivoteBrasBas; -import frc.robot.commands.bras.PivoteBrasHaut; -import frc.robot.commands.bras.PivoteBrasMilieux; - - +import frc.robot.commands.ActiverLimeLight; public class RobotContainer { - -CommandXboxController manette1 = new CommandXboxController(0); -CommandXboxController manette2 = new CommandXboxController(1); -SendableChooser chooser = new SendableChooser<>(); -String enhaut = "en haut"; -String aumilieux = "au milieux"; -String enbas = "en bas"; -String nulpart = "nul part"; -ShuffleboardLayout layoutauto = Shuffleboard.getTab("teb").getLayout("auto",BuiltInLayouts.kList) -.withSize(2, 2).withProperties(Map.of("Label position","LEFT")); -GenericEntry autobalance = layoutauto.add("choix balance",true).withWidget(BuiltInWidgets.kToggleSwitch).getEntry(); -GenericEntry autosortir = layoutauto.add("choix sortir",false).withWidget(BuiltInWidgets.kToggleSwitch).getEntry(); -GenericEntry reculerdistances = layoutauto.addPersistent("reculerdistancesortir",-66).getEntry(); -GenericEntry reculerdistanceb = layoutauto.addPersistent("reculerdistancebalance", -31).getEntry(); -GenericEntry avancerdistance = layoutauto.addPersistent("avancer",-35).getEntry(); -// subsystems -BasePilotable basePilotable = new BasePilotable(); -Gratte gratte = new Gratte(); -BrasTelescopique brasTelescopique = new BrasTelescopique(); -Pince pince = new Pince(); -Pivot pivot = new Pivot(); -Limelight limelight = new Limelight(); -//commands -BrakeFerme brakeFerme = new BrakeFerme(basePilotable); -BrakeOuvre brakeOuvre = new BrakeOuvre(basePilotable); -GratteBaisser gratteBaisser = new GratteBaisser(gratte); -GratteMonte gratteMonte = new GratteMonte(gratte); -Gyro gyro = new Gyro(basePilotable); -FermePince fermePince = new FermePince(pince); -OuvrePince ouvrePince = new OuvrePince(pince); -PivotBrasRentre pivotBrasRentre = new PivotBrasRentre(brasTelescopique, pivot); -PivoteBrasBas pivoteBrasBas = new PivoteBrasBas(brasTelescopique, pivot); -PivoteBrasMilieux pivoteBrasMilieux = new PivoteBrasMilieux(brasTelescopique, pivot); -PivoteBrasHaut pivoteBrasHaut = new PivoteBrasHaut(brasTelescopique, pivot); -Cone cone = new Cone(limelight, basePilotable, ()->-manette1.getLeftY()); -Reculer reculers = new Reculer(basePilotable, ()->reculerdistances.getDouble(0)); -Reculer reculerb = new Reculer(basePilotable, ()->reculerdistanceb.getDouble(0)); -Avancer avancer = new Avancer(basePilotable, ()->avancerdistance.getDouble(0)); -PivotChercheBas pivotChercheBas = new PivotChercheBas(brasTelescopique, pivot); -PivotChercheHaut pivotChercheHaut = new PivotChercheHaut(brasTelescopique, pivot); -Cube cube = new Cube(limelight, basePilotable, ()-> manette1.getLeftY()); -Apriltag aprilTag = new Apriltag(limelight, basePilotable,()-> manette1.getLeftY()); -Tape tape = new Tape(limelight, basePilotable, ()-> manette1.getLeftY()); -PivotManuel pivotManuel = new PivotManuel(pivot,manette2::getLeftX); -BrasManuel brasManuel = new BrasManuel(brasTelescopique,manette2::getLeftY); + CommandXboxController manette1 = new CommandXboxController(0); + CommandXboxController manette2 = new CommandXboxController(1); + // dashboard + SendableChooser chooser = new SendableChooser<>(); + String enhaut = "en haut"; + String aumilieux = "au milieux"; + String enbas = "en bas"; + String nulpart = "nul part"; + ShuffleboardLayout layoutauto = Shuffleboard.getTab("teb").getLayout("auto", BuiltInLayouts.kList) + .withSize(2, 2).withProperties(Map.of("Label position", "LEFT")); + GenericEntry autobalance = layoutauto.add("choix balance", true).withWidget(BuiltInWidgets.kToggleSwitch).getEntry(); + GenericEntry autosortir = layoutauto.add("choix sortir", false).withWidget(BuiltInWidgets.kToggleSwitch).getEntry(); + GenericEntry reculerdistances = layoutauto.addPersistent("reculerdistancesortir", 0).getEntry(); + GenericEntry reculerdistanceb = layoutauto.addPersistent("reculerdistancebalance", 0).getEntry(); + GenericEntry avancerdistance = layoutauto.addPersistent("avancer", 0).getEntry(); -public RobotContainer() { - chooser.setDefaultOption(enhaut, enhaut); + // subsystems + BasePilotable basePilotable = new BasePilotable(); + Gratte gratte = new Gratte(); + BrasTelescopique brasTelescopique = new BrasTelescopique(); + Pince pince = new Pince(); + Pivot pivot = new Pivot(); + Limelight limelight = new Limelight(); + + // commands + BrakeFerme brakeFerme = new BrakeFerme(basePilotable); + BrakeOuvre brakeOuvre = new BrakeOuvre(basePilotable); + GratteBaisser gratteBaisser = new GratteBaisser(gratte); + GratteMonte gratteMonte = new GratteMonte(gratte); + Gyro gyro = new Gyro(basePilotable); + FermePince fermePince = new FermePince(pince); + OuvrePince ouvrePince = new OuvrePince(pince); + Cone cone = new Cone(limelight, basePilotable, () -> -manette1.getLeftY()); + Reculer reculers = new Reculer(basePilotable, () -> reculerdistances.getDouble(0)); + Reculer reculerb = new Reculer(basePilotable, () -> reculerdistanceb.getDouble(0)); + Avancer avancer = new Avancer(basePilotable, () -> avancerdistance.getDouble(0)); + Cube cube = new Cube(limelight, basePilotable, () -> manette1.getLeftY()); + Apriltag aprilTag = new Apriltag(limelight, basePilotable, () -> manette1.getLeftY()); + Tape tape = new Tape(limelight, basePilotable, () -> manette1.getLeftY()); + PivotManuel pivotManuel = new PivotManuel(pivot, manette1::getRightY); + BrasManuel brasManuel = new BrasManuel(brasTelescopique, manette1::getRightX); + ActiverLimeLight activerLimeLight = new ActiverLimeLight(limelight); + + public RobotContainer() { + chooser.addOption(enhaut, enhaut); chooser.addOption(enbas, enbas); chooser.addOption(aumilieux, aumilieux); chooser.addOption(nulpart, nulpart); - layoutauto.add("choix hauteur",chooser); + layoutauto.add("choix hauteur", chooser); configureBindings(); CameraServer.startAutomaticCapture(); basePilotable.setDefaultCommand(new RunCommand(() -> { @@ -114,50 +107,58 @@ public RobotContainer() { brasTelescopique.setDefaultCommand(brasManuel); pivot.setDefaultCommand(pivotManuel); } + private void configureBindings() { // manette 1 manette1.a().toggleOnTrue(Commands.startEnd(pince::ouvrir, pince::fermer,pince)); - manette1.x().onTrue(brakeOuvre); - manette1.b().onTrue(brakeFerme); + manette2.a().onTrue(brakeOuvre); + manette2.b().onTrue(brakeFerme); manette1.leftBumper().whileTrue(aprilTag); manette1.rightBumper().whileTrue(tape); - manette1.povUp().whileTrue(pivoteBrasHaut); - manette1.povDown().whileTrue(pivoteBrasBas); - manette1.povRight().whileTrue(pivoteBrasMilieux); - manette1.povLeft().whileTrue(pivotBrasRentre); + manette1.povUp().whileTrue(creerCommandBras(51, -40)); + manette1.povDown().whileTrue(creerCommandBras(9, -14)); + manette1.povRight().whileTrue(creerCommandBras(44, -17)); + manette1.povLeft().whileTrue(creerCommandBras(0, 0)); + manette1.y().whileTrue(activerLimeLight); //manette 2 - manette2.povDown().onTrue(pivotChercheBas); - manette2.povUp().onTrue(pivotChercheHaut); + manette2.povDown().whileTrue(creerCommandBras(9, -18)); + manette2.povUp().whileTrue(creerCommandBras(44, 0)); manette2.rightBumper().whileTrue(cube); manette2.leftBumper().whileTrue(cone); manette2.y().whileTrue(gyro); manette2.start().onTrue(new InstantCommand(basePilotable::resetGyro)); - manette2.a().whileTrue(gratteMonte); - manette2.b().whileTrue(gratteBaisser); - manette2.back().onTrue(new InstantCommand(basePilotable::Reset)); + manette1.b().whileTrue(gratteMonte); + manette1.x().whileTrue(gratteBaisser); } + private Command creerCommandBras(double distancePivot, double distanceBras) { + return Commands.either( + new MonterPivotBras(brasTelescopique, pivot, distanceBras, distancePivot), + new DescendrePivotBras(brasTelescopique, pivot, distanceBras, distancePivot), + () -> pivot.distance() < distancePivot); + } + public Command getAutonomousCommand() { chooser.getSelected(); autobalance.getBoolean(true); - return Commands.waitSeconds(14).deadlineWith( new SequentialCommandGroup( - Commands.select(Map.ofEntries( - Map.entry(enhaut,pivoteBrasHaut), - Map.entry(aumilieux,pivoteBrasMilieux), - Map.entry(enbas,pivoteBrasBas), - Map.entry(nulpart,pivotBrasRentre) - ), chooser::getSelected), - ouvrePince.unless(()->chooser.getSelected().equals(nulpart)), - Commands.waitSeconds(1), - fermePince.unless(()->chooser.getSelected().equals(nulpart)), - new PivotBrasRentre(brasTelescopique , pivot).unless(()->chooser.getSelected().equals(nulpart)), - Commands.waitSeconds(1), - Commands.either(reculers, reculerb,()-> autosortir.getBoolean(true)), - avancer.unless(()->!autosortir.getBoolean(true)|| autobalance.getBoolean(false)), - Commands.either(gyro, Commands.none(),()-> autobalance.getBoolean(true)) - )).andThen(new InstantCommand(basePilotable::BrakeOuvre,basePilotable)); - + return Commands.deadline( + Commands.waitSeconds(14.6), + new SequentialCommandGroup( + Commands.select(Map.ofEntries( + Map.entry(enhaut, creerCommandBras(51, -40)), + Map.entry(aumilieux, creerCommandBras(9, -14)), + Map.entry(enbas, creerCommandBras(44, -17)), + Map.entry(nulpart, creerCommandBras(0, 0))), chooser::getSelected), + new OuvrePince(pince).unless(() -> chooser.getSelected().equals(nulpart)), + Commands.waitSeconds(1), + new FermePince(pince).unless(() -> chooser.getSelected().equals(nulpart)), + creerCommandBras(0, 0).unless(() -> chooser.getSelected().equals(nulpart)), + Commands.waitSeconds(1), + Commands.either(reculers, reculerb, () -> autosortir.getBoolean(true)), + new Avancer(basePilotable, () -> avancerdistance.getDouble(0)).unless(() -> !autosortir.getBoolean(true) || !autobalance.getBoolean(false)), + Commands.either(gyro, Commands.none(), () -> autobalance.getBoolean(true)))) + .andThen(brakeOuvre); } } diff --git a/src/main/java/frc/robot/commands/ActiverLimeLight.java b/src/main/java/frc/robot/commands/ActiverLimeLight.java new file mode 100644 index 0000000..3458798 --- /dev/null +++ b/src/main/java/frc/robot/commands/ActiverLimeLight.java @@ -0,0 +1,40 @@ +// Copyright (c) FIRST and other WPILib contributors. +// Open Source Software; you can modify and/or share it under the terms of +// the WPILib BSD license file in the root directory of this project. + +package frc.robot.commands; + +import edu.wpi.first.wpilibj2.command.CommandBase; +import frc.robot.subsystems.Limelight; + +public class ActiverLimeLight extends CommandBase { + private Limelight limelight; + /** Creates a new ActiverLimeLight. */ + public ActiverLimeLight(Limelight limelight) { + this.limelight = limelight; + // Use addRequirements() here to declare subsystem dependencies. + addRequirements(limelight); + } + + // Called when the command is initially scheduled. + @Override + public void initialize() {} + + // Called every time the scheduler runs while the command is scheduled. + @Override + public void execute() { + limelight.joueurhumain(); + } + + // Called once the command ends or is interrupted. + @Override + public void end(boolean interrupted) { + limelight.joueurhumain1(); + } + + // Returns true when the command should end. + @Override + public boolean isFinished() { + return false; + } +} diff --git a/src/main/java/frc/robot/commands/Apriltag.java b/src/main/java/frc/robot/commands/Apriltag.java index 9ef54b3..3e83057 100644 --- a/src/main/java/frc/robot/commands/Apriltag.java +++ b/src/main/java/frc/robot/commands/Apriltag.java @@ -32,7 +32,7 @@ public class Apriltag extends CommandBase { // Called every time the scheduler runs while the command is scheduled. @Override public void execute() { - basePilotable.drive(doubleSupplier.getAsDouble(), limelight.getYaw()); + basePilotable.drive(doubleSupplier.getAsDouble(), limelight.getYaw(),false); } // Called once the command ends or is interrupted. diff --git a/src/main/java/frc/robot/commands/Avancer.java b/src/main/java/frc/robot/commands/Avancer.java index 0b94017..f7d37a1 100644 --- a/src/main/java/frc/robot/commands/Avancer.java +++ b/src/main/java/frc/robot/commands/Avancer.java @@ -7,9 +7,6 @@ package frc.robot.commands; import java.util.function.DoubleSupplier; -import edu.wpi.first.wpilibj.shuffleboard.Shuffleboard; -import edu.wpi.first.wpilibj.shuffleboard.ShuffleboardLayout; -import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; import edu.wpi.first.wpilibj2.command.CommandBase; import frc.robot.subsystems.BasePilotable; @@ -33,12 +30,14 @@ public class Avancer extends CommandBase { // Called every time the scheduler runs while the command is scheduled. @Override public void execute() { - basePilotable.drive(0.3,0); + basePilotable.drive(0.4,0); } // Called once the command ends or is interrupted. @Override - public void end(boolean interrupted) {} + public void end(boolean interrupted) { + basePilotable.drive(0,0); + } // Returns true when the command should end. @Override diff --git a/src/main/java/frc/robot/commands/GratteBaisser.java b/src/main/java/frc/robot/commands/GratteBaisser.java index 9beb149..b1fc1cd 100644 --- a/src/main/java/frc/robot/commands/GratteBaisser.java +++ b/src/main/java/frc/robot/commands/GratteBaisser.java @@ -3,6 +3,7 @@ // the WPILib BSD license file in the root directory of this project. package frc.robot.commands; + import edu.wpi.first.wpilibj2.command.CommandBase; import frc.robot.subsystems.Gratte; @@ -19,23 +20,23 @@ public class GratteBaisser extends CommandBase { // Called when the command is initially scheduled. @Override public void initialize() { - gratte.setenHaut(false); + } // Called every time the scheduler runs while the command is scheduled. @Override public void execute() { if(gratte.basd()){ - gratte.baiserd(0); + gratte.bougerd(0); } else{ - gratte.baiserd(0.5); + gratte.bougerd(0.3); } if(gratte.basg()){ - gratte.baiserg(0); + gratte.bougerg(0); } else{ - gratte.baiserg(0.5); + gratte.bougerg(0.3); } @@ -44,8 +45,8 @@ public class GratteBaisser extends CommandBase { // Called once the command ends or is interrupted. @Override public void end(boolean interrupted) { - gratte.baiserd(0); - gratte.baiserg(0); + gratte.bougerd(0); + gratte.bougerg(0); } // Returns true when the command should end. diff --git a/src/main/java/frc/robot/commands/GratteMonte.java b/src/main/java/frc/robot/commands/GratteMonte.java index 2e6dd22..d72480b 100644 --- a/src/main/java/frc/robot/commands/GratteMonte.java +++ b/src/main/java/frc/robot/commands/GratteMonte.java @@ -21,31 +21,30 @@ public class GratteMonte extends CommandBase { // Called when the command is initially scheduled. @Override public void initialize() { - gratte.setenHaut(true); } // Called every time the scheduler runs while the command is scheduled. @Override public void execute() { if(gratte.hautd()){ - gratte.Leverd(0); + gratte.bougerd(0); } else{ - gratte.Leverd(0.5); + gratte.bougerd(-0.3); } if(gratte.hautg()) { - gratte.Leverg(0); + gratte.bougerg(0); } else{ - gratte.Leverg(0.5); + gratte.bougerg(-0.3); } } // Called once the command ends or is interrupted. @Override public void end(boolean interrupted) { - gratte.Leverd(0); - gratte.Leverg(0); + gratte.bougerd(0); + gratte.bougerg(0); } // Returns true when the command should end. diff --git a/src/main/java/frc/robot/commands/Gyro.java b/src/main/java/frc/robot/commands/Gyro.java index 7874235..37b676f 100644 --- a/src/main/java/frc/robot/commands/Gyro.java +++ b/src/main/java/frc/robot/commands/Gyro.java @@ -26,11 +26,11 @@ public class Gyro extends CommandBase { public void execute() { if(basePilotable.getpitch()>6) { - basePilotable.drive(0.3*basePilotable.getpitch()/12, 0); + basePilotable.drive(0.4*basePilotable.getpitch()/12, 0); } else if(basePilotable.getpitch()<-6) { - basePilotable.drive(0.3*basePilotable.getpitch()/12, 0); + basePilotable.drive(0.4*basePilotable.getpitch()/12, 0); } else { diff --git a/src/main/java/frc/robot/commands/Reculer.java b/src/main/java/frc/robot/commands/Reculer.java index ecc904f..903b216 100644 --- a/src/main/java/frc/robot/commands/Reculer.java +++ b/src/main/java/frc/robot/commands/Reculer.java @@ -35,7 +35,9 @@ public class Reculer extends CommandBase { // Called once the command ends or is interrupted. @Override - public void end(boolean interrupted) {} + public void end(boolean interrupted) { + basePilotable.drive(0,0); + } // Returns true when the command should end. @Override diff --git a/src/main/java/frc/robot/commands/Tape.java b/src/main/java/frc/robot/commands/Tape.java index e1346f0..02a9a81 100644 --- a/src/main/java/frc/robot/commands/Tape.java +++ b/src/main/java/frc/robot/commands/Tape.java @@ -32,7 +32,7 @@ public class Tape extends CommandBase { // Called every time the scheduler runs while the command is scheduled. @Override public void execute() { - basePilotable.drive(doubleSupplier.getAsDouble(), limelight.getYaw()); + basePilotable.drive(doubleSupplier.getAsDouble(), limelight.getYaw(),false); } // Called once the command ends or is interrupted. diff --git a/src/main/java/frc/robot/commands/bras/PivotChercheHaut.java b/src/main/java/frc/robot/commands/bras/Bougerbras.java similarity index 58% rename from src/main/java/frc/robot/commands/bras/PivotChercheHaut.java rename to src/main/java/frc/robot/commands/bras/Bougerbras.java index 19bfcac..6390c94 100644 --- a/src/main/java/frc/robot/commands/bras/PivotChercheHaut.java +++ b/src/main/java/frc/robot/commands/bras/Bougerbras.java @@ -6,45 +6,36 @@ package frc.robot.commands.bras; import edu.wpi.first.wpilibj2.command.CommandBase; import frc.robot.subsystems.bras.BrasTelescopique; -import frc.robot.subsystems.bras.Pivot; -public class PivotChercheHaut extends CommandBase { - private BrasTelescopique brasTelescopique; - private Pivot pivot; - /** Creates a new PivotChercheHaut. */ - public PivotChercheHaut(BrasTelescopique brasTelescopique, Pivot pivot) { +public class Bougerbras extends CommandBase { + /** Creates a new bougerbras. */ + double distance; + BrasTelescopique brasTelescopique; + public Bougerbras(BrasTelescopique brasTelescopique,double distance) { this.brasTelescopique = brasTelescopique; - this.pivot = pivot; - // Use addRequirements() here to declare subsystem dependencies. + this.distance = distance; addRequirements(brasTelescopique); - addRequirements(pivot); + // Use addRequirements() here to declare subsystem dependencies. } // Called when the command is initially scheduled. @Override public void initialize() { - brasTelescopique.fermer(); + } // Called every time the scheduler runs while the command is scheduled. @Override public void execute() { - if(brasTelescopique.photocell()){ - brasTelescopique.ouvrir(); - brasTelescopique.Reset(); - brasTelescopique.AvanceRecule(0); - } - else{ + if(brasTelescopique.distance()>distance+0.5 ) { + brasTelescopique.AvanceRecule(-0.3); + + } + else if(brasTelescopique.distance()44.5) { - pivot.monteDescendre(-0.5); - } - else{ - pivot.monteDescendre(0); + else { + brasTelescopique.AvanceRecule(0); } } @@ -52,13 +43,13 @@ public class PivotChercheHaut extends CommandBase { @Override public void end(boolean interrupted) { brasTelescopique.AvanceRecule(0); - pivot.monteDescendre(0); - brasTelescopique.ouvrir(); } // Returns true when the command should end. @Override public boolean isFinished() { - return false; + return brasTelescopique.distance()>distance-0.5 && brasTelescopique.distance()distance+0.5 ) { pivot.monteDescendre(-0.5); } + else if(pivot.distance()distance-0.5 && pivot.distance()0.2 && doubleSupplier.getAsDouble()<-0.2){ - brasTelescopique.AvanceRecule(doubleSupplier.getAsDouble()); + if(doubleSupplier.getAsDouble()>0.2 || doubleSupplier.getAsDouble()<-0.2){ + brasTelescopique.AvanceRecule(doubleSupplier.getAsDouble()*0.5); } - + else{ + brasTelescopique.AvanceRecule(0); + } } // Called once the command ends or is interrupted. diff --git a/src/main/java/frc/robot/commands/bras/DescendrePivotBras.java b/src/main/java/frc/robot/commands/bras/DescendrePivotBras.java new file mode 100644 index 0000000..8b4a615 --- /dev/null +++ b/src/main/java/frc/robot/commands/bras/DescendrePivotBras.java @@ -0,0 +1,27 @@ +// Copyright (c) FIRST and other WPILib contributors. +// Open Source Software; you can modify and/or share it under the terms of +// the WPILib BSD license file in the root directory of this project. + +package frc.robot.commands.bras; + + +import edu.wpi.first.wpilibj2.command.SequentialCommandGroup; +import frc.robot.subsystems.bras.BrasTelescopique; +import frc.robot.subsystems.bras.Pivot; + +// NOTE: Consider using this command inline, rather than writing a subclass. For more +// information, see: +// https://docs.wpilib.org/en/stable/docs/software/commandbased/convenience-features.html +public class DescendrePivotBras extends SequentialCommandGroup { + /** Creates a new DescendrePivotBras. */ + public DescendrePivotBras(BrasTelescopique brasTelescopique, Pivot pivot, double distanceBras, double distancePivot) { + // Add your commands in the addCommands() call, e.g. + // addCommands(new FooCommand(), new BarCommand()); + addCommands( + + new Bougerbras(brasTelescopique, distanceBras), + new Bougerpivot(pivot, distancePivot) + + ); + } +} diff --git a/src/main/java/frc/robot/commands/bras/MonterPivotBras.java b/src/main/java/frc/robot/commands/bras/MonterPivotBras.java new file mode 100644 index 0000000..b0e6441 --- /dev/null +++ b/src/main/java/frc/robot/commands/bras/MonterPivotBras.java @@ -0,0 +1,30 @@ +// Copyright (c) FIRST and other WPILib contributors. +// Open Source Software; you can modify and/or share it under the terms of +// the WPILib BSD license file in the root directory of this project. + +package frc.robot.commands.bras; + + +import edu.wpi.first.wpilibj2.command.ParallelCommandGroup; +import edu.wpi.first.wpilibj2.command.SequentialCommandGroup; +import frc.robot.subsystems.bras.BrasTelescopique; +import frc.robot.subsystems.bras.Pivot; + +// NOTE: Consider using this command inline, rather than writing a subclass. For more +// information, see: +// https://docs.wpilib.org/en/stable/docs/software/commandbased/convenience-features.html +public class MonterPivotBras extends SequentialCommandGroup { + /** Creates a new Sequancepivotbras. */ + public MonterPivotBras(BrasTelescopique brasTelescopique, Pivot pivot, double distanceBras, double distancePivot) { + + // Add your commands in the addCommands() call, e.g. + // addCommands(new FooCommand(), new BarCommand()); + addCommands( + new Bougerpivot(pivot, 10).unless(()->pivot.distance()>10), + new ParallelCommandGroup(new Bougerpivot(pivot, distancePivot)), + new ParallelCommandGroup(new Bougerbras(brasTelescopique, distanceBras)) + + + ); + } +} diff --git a/src/main/java/frc/robot/commands/bras/PivotChercheBas.java b/src/main/java/frc/robot/commands/bras/PivotChercheBas.java deleted file mode 100644 index d52b893..0000000 --- a/src/main/java/frc/robot/commands/bras/PivotChercheBas.java +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) FIRST and other WPILib contributors. -// Open Source Software; you can modify and/or share it under the terms of -// the WPILib BSD license file in the root directory of this project. - -package frc.robot.commands.bras; - -import edu.wpi.first.wpilibj2.command.CommandBase; -import frc.robot.subsystems.bras.BrasTelescopique; -import frc.robot.subsystems.bras.Pivot; - -public class PivotChercheBas extends CommandBase { - private BrasTelescopique brasTelescopique; - private Pivot pivot; - /** Creates a new PivotChercheBas. */ - public PivotChercheBas(BrasTelescopique brasTelescopique, Pivot pivot) { - this.brasTelescopique = brasTelescopique; - this.pivot = pivot; - // Use addRequirements() here to declare subsystem dependencies. - addRequirements(brasTelescopique); - addRequirements(pivot); - } - - // Called when the command is initially scheduled. - @Override - public void initialize() { - brasTelescopique.fermer(); - } - - // Called every time the scheduler runs while the command is scheduled. - @Override - public void execute() { - if(brasTelescopique.distance()>-17.5){ - brasTelescopique.AvanceRecule(-0.2); - brasTelescopique.fermer(); - } - else if(brasTelescopique.distance()<-19.5) { - brasTelescopique.AvanceRecule(0.2); - } - else { - brasTelescopique.AvanceRecule(0); - brasTelescopique.ouvrir(); - } - if (pivot.distance()<8.5){ - pivot.monteDescendre(0.3); - } - else if(pivot.distance()>10.5) { - pivot.monteDescendre(-0.3); - } - else{ - pivot.monteDescendre(0); - } - } - - // Called once the command ends or is interrupted. - @Override - public void end(boolean interrupted) { - brasTelescopique.AvanceRecule(0); - pivot.monteDescendre(0); - brasTelescopique.fermer(); - } - - // Returns true when the command should end. - @Override - public boolean isFinished() { - return false; - } -} \ No newline at end of file diff --git a/src/main/java/frc/robot/commands/bras/PivotManuel.java b/src/main/java/frc/robot/commands/bras/PivotManuel.java index 375ce9c..a802781 100644 --- a/src/main/java/frc/robot/commands/bras/PivotManuel.java +++ b/src/main/java/frc/robot/commands/bras/PivotManuel.java @@ -27,10 +27,14 @@ public class PivotManuel extends CommandBase { // Called every time the scheduler runs while the command is scheduled. @Override public void execute() { - if(doubleSupplier.getAsDouble()>0.2 && doubleSupplier.getAsDouble()<-0.2){ - pivot.monteDescendre(doubleSupplier.getAsDouble());} + if(doubleSupplier.getAsDouble()>0.2 || doubleSupplier.getAsDouble()<-0.2){ + pivot.monteDescendre(-doubleSupplier.getAsDouble()*0.5) + ;} + else{ + pivot.monteDescendre(0); + } } - + // Called once the command ends or is interrupted. @Override public void end(boolean interrupted) {} diff --git a/src/main/java/frc/robot/commands/bras/PivoteBrasBas.java b/src/main/java/frc/robot/commands/bras/PivoteBrasBas.java index a6015d7..8f029b3 100644 --- a/src/main/java/frc/robot/commands/bras/PivoteBrasBas.java +++ b/src/main/java/frc/robot/commands/bras/PivoteBrasBas.java @@ -31,21 +31,21 @@ public class PivoteBrasBas extends CommandBase { // Called every time the scheduler runs while the command is scheduled. @Override public void execute() { - if(brasTelescopique.distance()>-13.5){ + if(brasTelescopique.distance()>-8.5){ brasTelescopique.AvanceRecule(-0.2); brasTelescopique.fermer(); } - else if(brasTelescopique.distance()<-15.5) { + else if(brasTelescopique.distance()<-9.5) { brasTelescopique.AvanceRecule(0.2); } else { brasTelescopique.AvanceRecule(0); brasTelescopique.ouvrir(); } - if (pivot.distance()<8.5){ + if (pivot.distance()<12.5){ pivot.monteDescendre(0.4); } - else if(pivot.distance()>10.5) { + else if(pivot.distance()>13.5) { pivot.monteDescendre(-0.4); } else{ diff --git a/src/main/java/frc/robot/commands/bras/PivoteBrasHaut.java b/src/main/java/frc/robot/commands/bras/PivoteBrasHaut.java index c670121..831991a 100644 --- a/src/main/java/frc/robot/commands/bras/PivoteBrasHaut.java +++ b/src/main/java/frc/robot/commands/bras/PivoteBrasHaut.java @@ -29,21 +29,21 @@ public class PivoteBrasHaut extends CommandBase { // Called every time the scheduler runs while the command is scheduled. @Override public void execute() { - if(brasTelescopique.distance()>-39.5){ + if(brasTelescopique.distance()>-36.5){ brasTelescopique.AvanceRecule(-0.15); brasTelescopique.fermer(); } - else if(brasTelescopique.distance()<-41.5) { + else if(brasTelescopique.distance()<-37.5) { brasTelescopique.AvanceRecule(-0.15); } else { brasTelescopique.AvanceRecule(0); brasTelescopique.ouvrir(); } - if (pivot.distance()<50.5){ + if (pivot.distance()<52.5){ pivot.monteDescendre(0.5); } - else if(pivot.distance()>52.5) { + else if(pivot.distance()>53.5) { pivot.monteDescendre(-0.5); } else{ diff --git a/src/main/java/frc/robot/commands/bras/PivoteBrasMilieux.java b/src/main/java/frc/robot/commands/bras/PivoteBrasMilieux.java index 764050b..8d10a66 100644 --- a/src/main/java/frc/robot/commands/bras/PivoteBrasMilieux.java +++ b/src/main/java/frc/robot/commands/bras/PivoteBrasMilieux.java @@ -29,11 +29,11 @@ public class PivoteBrasMilieux extends CommandBase { // Called every time the scheduler runs while the command is scheduled. @Override public void execute() { - if(brasTelescopique.distance()>-16.5){ + if(brasTelescopique.distance()>-11){ brasTelescopique.AvanceRecule(-0.15); brasTelescopique.fermer(); } - else if(brasTelescopique.distance()<-17.5) { + else if(brasTelescopique.distance()<-13) { brasTelescopique.AvanceRecule(0.15); } else { diff --git a/src/main/java/frc/robot/subsystems/BasePilotable.java b/src/main/java/frc/robot/subsystems/BasePilotable.java index 8d0a0f1..a1e4c68 100644 --- a/src/main/java/frc/robot/subsystems/BasePilotable.java +++ b/src/main/java/frc/robot/subsystems/BasePilotable.java @@ -17,6 +17,7 @@ import edu.wpi.first.wpilibj.shuffleboard.Shuffleboard; import edu.wpi.first.wpilibj.shuffleboard.ShuffleboardTab; import edu.wpi.first.wpilibj2.command.SubsystemBase; import frc.robot.Constants; +import frc.robot.commands.bras.Bougerbras; public class BasePilotable extends SubsystemBase { final CANSparkMax avantdroit = new CANSparkMax(Constants.avantdroit, MotorType.kBrushless); @@ -42,6 +43,9 @@ public class BasePilotable extends SubsystemBase { public void drive(double xSpeed, double zRotation){ drive.arcadeDrive(xSpeed, zRotation); } + public void drive(double xSpeed, double zRotation, boolean square){ + drive.arcadeDrive(xSpeed, zRotation, square); + } public double distance(){ return (-avantdroit.getEncoder().getPosition() +avantgauche.getEncoder().getPosition() diff --git a/src/main/java/frc/robot/subsystems/Gratte.java b/src/main/java/frc/robot/subsystems/Gratte.java index d5920cf..b78edad 100644 --- a/src/main/java/frc/robot/subsystems/Gratte.java +++ b/src/main/java/frc/robot/subsystems/Gratte.java @@ -24,15 +24,6 @@ ShuffleboardLayout limitswitchgratte = Shuffleboard.getTab("teb") private DigitalInput limithg = new DigitalInput(Constants.limithg); private DigitalInput limitbd = new DigitalInput(Constants.limitbd); private DigitalInput limitbg = new DigitalInput(Constants.limitbg); - public boolean baiser; - boolean enHaut = true; - public void setenHaut(boolean enHaut){ - this.enHaut = enHaut; - } - public boolean getenHaut(){ - return enHaut; - - } public boolean hautd(){ return limithd.get(); @@ -55,17 +46,11 @@ ShuffleboardLayout limitswitchgratte = Shuffleboard.getTab("teb") limitswitchgratte.addBoolean ("limithd", this::hautd); limitswitchgratte.addBoolean ("limitbg", this::basg); } - public void Leverd(double vitesse){ - Gratted.set(-vitesse); + public void bougerd(double vitesse){ + Gratted.set(vitesse); } - public void Leverg(double vitesse){ - Gratteg.set(-vitesse); - } - public void baiserd(double vitesse){ - Gratted.set(vitesse); - } - public void baiserg(double vitesse){ + public void bougerg(double vitesse){ Gratteg.set(vitesse); } diff --git a/src/main/java/frc/robot/subsystems/Limelight.java b/src/main/java/frc/robot/subsystems/Limelight.java index f6ff621..eae8e0f 100644 --- a/src/main/java/frc/robot/subsystems/Limelight.java +++ b/src/main/java/frc/robot/subsystems/Limelight.java @@ -4,7 +4,6 @@ package frc.robot.subsystems; -import edu.wpi.first.cameraserver.CameraServer; import org.photonvision.PhotonCamera; @@ -20,7 +19,7 @@ public class Limelight extends SubsystemBase { PhotonCamera limelight = new PhotonCamera("limelight"); /** Creates a new Limelight. */ public Limelight() { - CameraServer.startAutomaticCapture(); + PortForwarder.add(5800, "photonvision.local", 5800); } @@ -42,12 +41,13 @@ public class Limelight extends SubsystemBase { public void tape() { limelight.setLED(VisionLEDMode.kOn); limelight.setPipelineIndex(1); + } public double getYaw() { var result = limelight.getLatestResult(); if(result.hasTargets()){ - return -result.getBestTarget().getYaw()/60; + return -result.getBestTarget().getYaw()/45; } return 0; @@ -56,6 +56,12 @@ public class Limelight extends SubsystemBase { limelight.setLED(VisionLEDMode.kOff); limelight.setDriverMode(true); } + public void joueurhumain(){ + limelight.setLED(VisionLEDMode.kOn); + } + public void joueurhumain1(){ + limelight.setLED(VisionLEDMode.kOff); + } @Override public void periodic() { } diff --git a/src/main/java/frc/robot/subsystems/bras/BrasTelescopique.java b/src/main/java/frc/robot/subsystems/bras/BrasTelescopique.java index 12b82b9..dc2d69b 100644 --- a/src/main/java/frc/robot/subsystems/bras/BrasTelescopique.java +++ b/src/main/java/frc/robot/subsystems/bras/BrasTelescopique.java @@ -51,6 +51,6 @@ public class BrasTelescopique extends SubsystemBase { } @Override public void periodic() { - + if(photocell())Reset(); } } \ No newline at end of file diff --git a/src/main/java/frc/robot/subsystems/bras/Pivot.java b/src/main/java/frc/robot/subsystems/bras/Pivot.java index 6fc13b9..744020a 100644 --- a/src/main/java/frc/robot/subsystems/bras/Pivot.java +++ b/src/main/java/frc/robot/subsystems/bras/Pivot.java @@ -42,6 +42,7 @@ public class Pivot extends SubsystemBase { } @Override public void periodic() { + if(limitpivot())Reset(); }