This commit is contained in:
OnDYCLaptop
2026-03-05 19:34:24 +08:00
parent f7eb1d7d26
commit 0da9ee5f36
4 changed files with 75 additions and 1 deletions
+3
View File
@@ -81,6 +81,9 @@ public final class Constants {
public static final int Pipeline = 1;
public static final double TXDeadHand = 0.5;
public static final double TZDeadHand = 0.5;
public static final double AutoClimbAlignSpeed = 0.1;
public static final double AutoClimbAlignTolerance = 0.1;
public static final double AutoClimbmaxAngularVelocity = 0.1;
}
public class Field {
@@ -140,6 +140,10 @@ 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(){
@@ -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]);
@@ -130,7 +130,7 @@ public class CommandSwerveDrivetrain extends TunerSwerveDrivetrain implements Su
new SwerveRequest.ApplyRobotSpeeds().withSpeeds(scaled)
);
}
private static final double kMaxVisionJumpMeters = 1.0;
private static final double kMaxOmegaDegPerSec = 360.0;
@@ -274,6 +274,72 @@ 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)<Constants.Limelight.AutoClimbAlignTolerance){
tx = 0;
}
else{
tx *= multiply ;
}
if(Math.abs(targetTz)<Constants.Limelight.AutoClimbAlignTolerance){
targetTz = 0;
}
else{
targetTz*= multiply ;
targetTz*= 5;
}
if(Math.abs(ry)<Constants.Limelight.AutoClimbAlignTolerance){
ry = 0;
}
else{
ry/=10;
ry = Math.min(ry, Constants.Limelight.AutoClimbmaxAngularVelocity);
ry = Math.max(ry, -Constants.Limelight.AutoClimbmaxAngularVelocity);
}
positioningNetworkTable.getEntry("interestPointsClimb tx").setDouble(tx);
positioningNetworkTable.getEntry("interestPointsClimb targetTz").setDouble(targetTz);
positioningNetworkTable.getEntry("interestPointsClimb ry").setDouble(ry);
ChassisSpeeds scaled = new ChassisSpeeds(
tx, // X 不变
targetTz, // Y 不变
ry
);
driveRobotRelative(scaled);
// drive(
// new Translation2d(tx, targetTz),
// ry,
// false,
// false
// );
return "Driving to AprilTag";
}
@Override
public void periodic() {