From 1030a95456280ffc62080fb3fb70c06a2dc53275 Mon Sep 17 00:00:00 2001 From: OlivierDubois Date: Mon, 15 Jan 2024 18:56:17 -0500 Subject: [PATCH 1/2] limelight --- .../java/frc/robot/commands/AprilTag.java | 45 +++++++++++++++ .../java/frc/robot/subsystems/limelight.java | 29 ++++++++++ vendordeps/photonlib.json | 57 +++++++++++++++++++ 3 files changed, 131 insertions(+) create mode 100644 src/main/java/frc/robot/commands/AprilTag.java create mode 100644 src/main/java/frc/robot/subsystems/limelight.java create mode 100644 vendordeps/photonlib.json diff --git a/src/main/java/frc/robot/commands/AprilTag.java b/src/main/java/frc/robot/commands/AprilTag.java new file mode 100644 index 0000000..72c936a --- /dev/null +++ b/src/main/java/frc/robot/commands/AprilTag.java @@ -0,0 +1,45 @@ +// 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.Lanceur; +import frc.robot.subsystems.limelight; + +public class AprilTag extends CommandBase { + private limelight limelight; + private Lanceur lanceur; + /** Creates a new Limelight. */ + public AprilTag(limelight limelight,Lanceur lanceur) { + this.lanceur = lanceur; + this.limelight = limelight; + addRequirements(limelight,lanceur); + // Use addRequirements() here to declare subsystem dependencies. + } + + // Called when the command is initially scheduled. + @Override + public void initialize() { + limelight.lumiere(); + } + + // Called every time the scheduler runs while the command is scheduled. + @Override + public void execute() { + lanceur.lancer(0.5); + } + + // Called once the command ends or is interrupted. + @Override + public void end(boolean interrupted) { + lanceur.lancer(0); + } + + // Returns true when the command should end. + @Override + public boolean isFinished() { + return false; + } +} diff --git a/src/main/java/frc/robot/subsystems/limelight.java b/src/main/java/frc/robot/subsystems/limelight.java new file mode 100644 index 0000000..7284b76 --- /dev/null +++ b/src/main/java/frc/robot/subsystems/limelight.java @@ -0,0 +1,29 @@ +// 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.subsystems; + + +import org.photonvision.PhotonCamera; +import org.photonvision.common.hardware.VisionLEDMode; + + +import edu.wpi.first.wpilibj2.command.SubsystemBase; + +public class limelight extends SubsystemBase { + + PhotonCamera limelight = new PhotonCamera("limelight"); + + /** Creates a new limelight. */ + public limelight() {} + public void lumiere(){ + limelight.setLED(VisionLEDMode.kOff); + limelight.setPipelineIndex(0); + } + + @Override + public void periodic() { + // This method will be called once per scheduler run + } +} diff --git a/vendordeps/photonlib.json b/vendordeps/photonlib.json new file mode 100644 index 0000000..7bdce28 --- /dev/null +++ b/vendordeps/photonlib.json @@ -0,0 +1,57 @@ +{ + "fileName": "photonlib.json", + "name": "photonlib", + "version": "v2024.1.4", + "uuid": "515fe07e-bfc6-11fa-b3de-0242ac130004", + "frcYear": "2024", + "mavenUrls": [ + "https://maven.photonvision.org/repository/internal", + "https://maven.photonvision.org/repository/snapshots" + ], + "jsonUrl": "https://maven.photonvision.org/repository/internal/org/photonvision/photonlib-json/1.0/photonlib-json-1.0.json", + "jniDependencies": [], + "cppDependencies": [ + { + "groupId": "org.photonvision", + "artifactId": "photonlib-cpp", + "version": "v2024.1.4", + "libName": "photonlib", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxathena", + "linuxx86-64", + "osxuniversal" + ] + }, + { + "groupId": "org.photonvision", + "artifactId": "photontargeting-cpp", + "version": "v2024.1.4", + "libName": "photontargeting", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxathena", + "linuxx86-64", + "osxuniversal" + ] + } + ], + "javaDependencies": [ + { + "groupId": "org.photonvision", + "artifactId": "photonlib-java", + "version": "v2024.1.4" + }, + { + "groupId": "org.photonvision", + "artifactId": "photontargeting-java", + "version": "v2024.1.4" + } + ] +} \ No newline at end of file From 05182be6b406e77cf3fc555805b04dba72ec611b Mon Sep 17 00:00:00 2001 From: OlivierDubois Date: Wed, 17 Jan 2024 19:40:57 -0500 Subject: [PATCH 2/2] limelight --- src/main/java/frc/robot/RobotContainer.java | 9 +++++-- .../java/frc/robot/commands/AprilTag.java | 16 +++++++++---- src/main/java/frc/robot/subsystems/Drive.java | 9 +++---- .../java/frc/robot/subsystems/limelight.java | 24 ++++++++++++------- 4 files changed, 40 insertions(+), 18 deletions(-) diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index 5876ed1..ca3dd87 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -5,6 +5,7 @@ package frc.robot; import java.util.Map; + import edu.wpi.first.cameraserver.CameraServer; import edu.wpi.first.math.MathUtil; import edu.wpi.first.networktables.GenericEntry; @@ -36,13 +37,16 @@ import frc.robot.commands.accumulateurtest; import frc.robot.subsystems.Accumulateur; import frc.robot.subsystems.Drive; import frc.robot.subsystems.Lanceur; - +import frc.robot.subsystems.limelight; +import frc.robot.commands.AprilTag; public class RobotContainer { String avancergaucheString = "droite"; String avancerautoString = "gauche"; ShuffleboardLayout layoutauto = Shuffleboard.getTab("Dashboard").getLayout("auto", BuiltInLayouts.kList); SendableChooser chooser = new SendableChooser<>(); + + limelight limelight = new limelight(); Lanceur lanceur = new Lanceur(); Accumulateur accumulateur = new Accumulateur(); Drive drive = new Drive(); @@ -78,6 +82,7 @@ String avancerautoString = "gauche"; chooser.addOption(avancergaucheString, avancergaucheString); layoutauto.add("choix hauteur", chooser); accumulateurtest accumulateurtest = new accumulateurtest(accumulateur); + AprilTag aprilTag = new AprilTag(limelight, lanceur); Force1 Force1 = new Force1(lanceur, force1); Force2 Force2 = new Force2(lanceur, force2); Force3 Force3 = new Force3(lanceur, force3); @@ -87,7 +92,7 @@ String avancerautoString = "gauche"; Force7 Force7 = new Force7(lanceur, force7); //touche - + joystick1.button(2).whileTrue(aprilTag); joystick1.button(3).whileTrue(accumulateurtest); joystick1.button(1).whileTrue(Force1); joystick1.button(7).whileTrue(Force2); diff --git a/src/main/java/frc/robot/commands/AprilTag.java b/src/main/java/frc/robot/commands/AprilTag.java index 72c936a..a6bb5bf 100644 --- a/src/main/java/frc/robot/commands/AprilTag.java +++ b/src/main/java/frc/robot/commands/AprilTag.java @@ -4,13 +4,17 @@ package frc.robot.commands; +import java.util.function.DoubleSupplier; + import edu.wpi.first.wpilibj2.command.CommandBase; +import frc.robot.subsystems.Drive; import frc.robot.subsystems.Lanceur; import frc.robot.subsystems.limelight; public class AprilTag extends CommandBase { - private limelight limelight; private Lanceur lanceur; + private limelight limelight; + /** Creates a new Limelight. */ public AprilTag(limelight limelight,Lanceur lanceur) { this.lanceur = lanceur; @@ -22,19 +26,23 @@ public class AprilTag extends CommandBase { // Called when the command is initially scheduled. @Override public void initialize() { - limelight.lumiere(); + } // Called every time the scheduler runs while the command is scheduled. @Override public void execute() { - lanceur.lancer(0.5); + //drive.drive(0, limelight.getYaw(), 0); + if(limelight.tv.getDouble(0) == 1){ + lanceur.lancer(0.5); + } + } // Called once the command ends or is interrupted. @Override public void end(boolean interrupted) { - lanceur.lancer(0); + lanceur.lancer(0); } // Returns true when the command should end. diff --git a/src/main/java/frc/robot/subsystems/Drive.java b/src/main/java/frc/robot/subsystems/Drive.java index d5b0fa9..19ef23f 100644 --- a/src/main/java/frc/robot/subsystems/Drive.java +++ b/src/main/java/frc/robot/subsystems/Drive.java @@ -7,6 +7,8 @@ package frc.robot.subsystems; import java.io.File; import java.io.IOException; +import com.kauailabs.navx.frc.AHRS; + import edu.wpi.first.math.geometry.Translation2d; import edu.wpi.first.math.kinematics.SwerveModulePosition; import edu.wpi.first.wpilibj.Filesystem; @@ -39,10 +41,9 @@ public class Drive extends SubsystemBase { final CanAndCoderSwerve arrieregaucheangle = new CanAndCoderSwerve(Constants.arrieregaucheAngle); final CanAndCoderSwerve arrieredroitangle = new CanAndCoderSwerve(Constants.arrieredroitAngle); */ public void drive(double x, double y, double zRotation){ - swerveDrive.drive(new Translation2d(x*2, y*2), zRotation, true, false); - } - - + swerveDrive.drive(new Translation2d(x*2, y*2), zRotation, true, false);} + + /** Creates a new Drive. */ public Drive() { diff --git a/src/main/java/frc/robot/subsystems/limelight.java b/src/main/java/frc/robot/subsystems/limelight.java index 7284b76..28404e3 100644 --- a/src/main/java/frc/robot/subsystems/limelight.java +++ b/src/main/java/frc/robot/subsystems/limelight.java @@ -5,22 +5,30 @@ package frc.robot.subsystems; -import org.photonvision.PhotonCamera; + import org.photonvision.common.hardware.VisionLEDMode; - +import edu.wpi.first.networktables.NetworkTableEntry; +import edu.wpi.first.networktables.NetworkTableInstance; import edu.wpi.first.wpilibj2.command.SubsystemBase; public class limelight extends SubsystemBase { - - PhotonCamera limelight = new PhotonCamera("limelight"); - - /** Creates a new limelight. */ + public NetworkTableEntry tv = NetworkTableInstance.getDefault().getTable("limelight").getEntry("tv"); + limelight limelight = new limelight(); +/** Creates a new limelight. */ public limelight() {} - public void lumiere(){ + + /*public void lumiere(){ limelight.setLED(VisionLEDMode.kOff); limelight.setPipelineIndex(0); - } + }*/ + /*public double getYaw() { + var result = limelight.getLatestResult(); + if(result.hasTargets()){ + return -result.getBestTarget().getYaw()/45; + } + return 0;}*/ + @Override public void periodic() {