climber
This commit is contained in:
@@ -81,6 +81,9 @@ public final class Constants {
|
|||||||
public static final int Pipeline = 1;
|
public static final int Pipeline = 1;
|
||||||
public static final double TXDeadHand = 0.5;
|
public static final double TXDeadHand = 0.5;
|
||||||
public static final double TZDeadHand = 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 {
|
public class Field {
|
||||||
|
|||||||
@@ -140,6 +140,10 @@ public class RobotContainer {
|
|||||||
controllerlower.rightTrigger()
|
controllerlower.rightTrigger()
|
||||||
.onTrue(robotStatusManager.setStatusCommand(RobotStatus.CrossingBump))
|
.onTrue(robotStatusManager.setStatusCommand(RobotStatus.CrossingBump))
|
||||||
.onFalse(robotStatusManager.setStatusCommand(RobotStatus.AllTelop));
|
.onFalse(robotStatusManager.setStatusCommand(RobotStatus.AllTelop));
|
||||||
|
|
||||||
|
controllerlower.a()
|
||||||
|
.onTrue(robotStatusManager.setStatusCommand(RobotStatus.Climbing))
|
||||||
|
.onFalse(robotStatusManager.setStatusCommand(RobotStatus.AllTelop));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void configueShooter(){
|
private void configueShooter(){
|
||||||
|
|||||||
@@ -145,6 +145,7 @@ public class DriveControls {
|
|||||||
autoControlNetworkTable.getEntry("autoRotationRate").setDouble(Double.NaN);
|
autoControlNetworkTable.getEntry("autoRotationRate").setDouble(Double.NaN);
|
||||||
break;
|
break;
|
||||||
case Climbing:
|
case Climbing:
|
||||||
|
drivetrain.driveToAprilTag();
|
||||||
break;
|
break;
|
||||||
case CrossingBump:
|
case CrossingBump:
|
||||||
double differenceBump = calculateDifferenceToTwoTarget(drivetrain.getState().Pose.getY(), Constants.AutoPositioning.bumpY[0], Constants.AutoPositioning.bumpY[1]);
|
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)
|
new SwerveRequest.ApplyRobotSpeeds().withSpeeds(scaled)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final double kMaxVisionJumpMeters = 1.0;
|
private static final double kMaxVisionJumpMeters = 1.0;
|
||||||
private static final double kMaxOmegaDegPerSec = 360.0;
|
private static final double kMaxOmegaDegPerSec = 360.0;
|
||||||
|
|
||||||
@@ -274,6 +274,72 @@ public class CommandSwerveDrivetrain extends TunerSwerveDrivetrain implements Su
|
|||||||
|
|
||||||
return true;
|
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
|
@Override
|
||||||
public void periodic() {
|
public void periodic() {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user