From b236f43f4d9051497d6f8953040feca3975b9efe Mon Sep 17 00:00:00 2001 From: Alyssum-chenyiyi <13162501939@163.com> Date: Thu, 5 Mar 2026 18:57:57 +0800 Subject: [PATCH 1/2] climb auto --- src/main/java/frc/robot/Constants.java | 3 + .../subsystems/CommandSwerveDrivetrain.java | 70 ++++++++++++ .../robot/subsystems/LimelightSupplier.java | 108 ++++++++++++++++++ 3 files changed, 181 insertions(+) create mode 100644 src/main/java/frc/robot/subsystems/LimelightSupplier.java diff --git a/src/main/java/frc/robot/Constants.java b/src/main/java/frc/robot/Constants.java index 8793572..1b6c31d 100644 --- a/src/main/java/frc/robot/Constants.java +++ b/src/main/java/frc/robot/Constants.java @@ -78,6 +78,9 @@ public final class Constants { public static final String LIMELIGHT_NAME_Shooter = "limelight-shooter"; public static final String LIMELIGHT_NAME_Intaker = "limelight-intaker"; public static final Boolean UsingMetaTag2 = true; + public static final double AutoClimbAlignSpeed = 0.5;//等查资料 + public static final double AutoClimbAlignTolerance = 0.1;//? + public static final double AutoClimbmaxAngularVelocity = 0.5;//等查资料 } public class Field { diff --git a/src/main/java/frc/robot/subsystems/CommandSwerveDrivetrain.java b/src/main/java/frc/robot/subsystems/CommandSwerveDrivetrain.java index 46987f0..c7f845e 100644 --- a/src/main/java/frc/robot/subsystems/CommandSwerveDrivetrain.java +++ b/src/main/java/frc/robot/subsystems/CommandSwerveDrivetrain.java @@ -15,6 +15,7 @@ import edu.wpi.first.math.Matrix; import edu.wpi.first.math.VecBuilder; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; +import edu.wpi.first.math.geometry.Translation2d; import edu.wpi.first.math.kinematics.ChassisSpeeds; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.numbers.N3; @@ -130,6 +131,8 @@ public class CommandSwerveDrivetrain extends TunerSwerveDrivetrain implements Su ); } + + @@ -276,6 +279,73 @@ public class CommandSwerveDrivetrain extends TunerSwerveDrivetrain implements Su return true; } + + public String driveToAprilTag(){ + //Rotation2d targetHeading = getPose().getRotation(); + if(!LimelightSupplier.isTargetVisible() ){ + return "No Target"; + } + boolean ifRightTag = false; + int trueId = LimelightSupplier.getAprilTagID(); + for(int id : new int[]{16,32}){ + if(id == trueId){ + ifRightTag = true; + break; + } + } + if(!ifRightTag){ + return "No Target"; + } + double tx = LimelightSupplier.getTX() ; + double targetTz = -LimelightSupplier.getTargetTZ(); + double ry = LimelightSupplier.getTargetRotationY(); + + double multiply = Constants.Limelight.AutoClimbAlignSpeed; + if(Math.abs(tx) Date: Thu, 5 Mar 2026 19:21:24 +0800 Subject: [PATCH 2/2] climber --- src/main/java/frc/robot/RobotContainer.java | 6 ++++++ src/main/java/frc/robot/controls/DriveControls.java | 1 + 2 files changed, 7 insertions(+) diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index 1b6c243..ad56eb3 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -140,6 +140,12 @@ public class RobotContainer { controllerlower.rightTrigger() .onTrue(robotStatusManager.setStatusCommand(RobotStatus.CrossingBump)) .onFalse(robotStatusManager.setStatusCommand(RobotStatus.AllTelop)); + + controllerlower.a() + .onTrue(robotStatusManager.setStatusCommand(RobotStatus.Climbing)) + .onFalse(robotStatusManager.setStatusCommand(RobotStatus.AllTelop)); + + } private void configueShooter(){ diff --git a/src/main/java/frc/robot/controls/DriveControls.java b/src/main/java/frc/robot/controls/DriveControls.java index b273d0a..7958cbd 100644 --- a/src/main/java/frc/robot/controls/DriveControls.java +++ b/src/main/java/frc/robot/controls/DriveControls.java @@ -145,6 +145,7 @@ public class DriveControls { autoControlNetworkTable.getEntry("autoRotationRate").setDouble(Double.NaN); break; case Climbing: + drivetrain.driveToAprilTag(); break; case CrossingBump: double differenceBump = calculateDifferenceToTwoTarget(drivetrain.getState().Pose.getY(), Constants.AutoPositioning.bumpY[0], Constants.AutoPositioning.bumpY[1]);