Skip to content

Commit fc15596

Browse files
Add auto double tag targeting and fix bugs
- Weston J
1 parent 8f70017 commit fc15596

File tree

3 files changed

+42
-5
lines changed

3 files changed

+42
-5
lines changed

src/main/java/frc/robot/Robot.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public void robotInit() {
8080
}
8181

8282
kVisionSubsystem = new Vision(table.get());
83-
kVisionAutoCommand = new VisionAutoCommand(kVisionSubsystem, kDrivetrain, 10, Units.Milliseconds.of(20.0));
83+
kVisionAutoCommand = new VisionAutoCommand(kVisionSubsystem, kDrivetrain, 10, 7, Units.Milliseconds.of(20.0));
8484
mVisionTeleopCommand = new VisionTeleopCommand(kVisionSubsystem, kDrivetrain, -1, Units.Milliseconds.of(20.0));
8585

8686
kDriveTeleopCommand = new DriveTeleopCommand(kDrivetrain, kDriveController, Units.Milliseconds.of(20.0));

src/main/java/frc/robot/commands/visionDriveCommand/VisionAutoCommand.java

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import edu.wpi.first.math.MathUtil;
88
import edu.wpi.first.units.Units;
99
import edu.wpi.first.units.measure.*;
10+
import edu.wpi.first.wpilibj.Timer;
1011
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
1112
import edu.wpi.first.wpilibj2.command.Command;
1213
import frc.robot.subsystems.drive.*;
@@ -22,12 +23,18 @@ public class VisionAutoCommand extends Command {
2223
private final Drivetrain kDrivetrain;
2324
private final Time kRobotPeriod;
2425

26+
private final Timer kTimer = new Timer();
27+
2528
private boolean mIsDoneStafing = false;
2629
private boolean mIsDoneMoving = false;
30+
2731
private boolean mDoneAutoInit = false;
2832

2933
private int mTargetDriveAprilTagId;
3034

35+
private final int kTargetTag1;
36+
private final int kTargetTag2;
37+
3138
private AngularVelocity mAngularVelocity = Units.RadiansPerSecond.zero();
3239
private LinearVelocity mStafeVelocity = Units.MetersPerSecond.zero();
3340
private LinearVelocity mForwardVelocity = Units.MetersPerSecond.zero();
@@ -45,6 +52,9 @@ public VisionAutoCommand(
4552
kDrivetrain = drivetrain;
4653
kRobotPeriod = period;
4754

55+
kTargetTag1 = targetTagId1;
56+
kTargetTag2 = targetTagId2;
57+
4858
mConfig = kVisionSubsystem.getConfigCopy();
4959

5060
addRequirements(kDrivetrain, kVisionSubsystem);
@@ -60,12 +70,33 @@ public void initialize() {
6070
mIsDoneMoving = false;
6171
mIsDoneStafing = false;
6272

73+
mDoneAutoInit = false;
74+
75+
// reset the timer
76+
kTimer.reset();
77+
kTimer.start();
78+
6379
}
6480

6581
@Override
6682
public void execute() {
83+
84+
if (!mDoneAutoInit) {
85+
86+
if ((int) kVisionSubsystem.mLimelightTable.getEntry("priorityid").getInteger(-1) == -1
87+
&& kVisionSubsystem.getTagId() != -1 && (kVisionSubsystem.getTagId() == kTargetTag1 || kVisionSubsystem.getTagId() == kTargetTag2)) {
88+
89+
mDoneAutoInit = true;
6790

68-
if (mTargetDriveAprilTagId == -1)
91+
kVisionSubsystem.setFilter(kVisionSubsystem.getTagId());
92+
93+
mTargetDriveAprilTagId = kVisionSubsystem.getTagId();
94+
95+
System.out.println("Going to: " + kVisionSubsystem.getTagId());
96+
}
97+
}
98+
99+
if (mTargetDriveAprilTagId <= 0 || !mDoneAutoInit)
69100
return;
70101

71102
Vision.VisionTagData data = kVisionSubsystem.robotDriveToAprilTag(mTargetDriveAprilTagId, mOffset);
@@ -180,15 +211,21 @@ public void execute() {
180211

181212
@Override
182213
public boolean isFinished() {
214+
boolean limelightInitFailed = (kTimer.get() >= mConfig.LIMELIGHT_INIT_FAILED_TIME && !mDoneAutoInit);
215+
183216
// if (mIsDoneMoving && !mIsDoneStafing) {
184217
// System.out.println("stafing is holding us up");
185218
// } else if (mIsDoneStafing && !mIsDoneMoving) {
186219
// System.out.println("moving is holding us up");
187220
// }
188221

189-
if ((mIsDoneStafing && mIsDoneMoving)) {
222+
if (limelightInitFailed) {
223+
System.out.println("Limelight init failed");
224+
return true;
225+
226+
} else if ((mIsDoneStafing && mIsDoneMoving)) {
190227

191-
System.out.println("Done");
228+
System.out.println("Done: " + kTimer.get());
192229

193230
return true;
194231
}

src/main/java/frc/robot/commands/visionDriveCommand/VisionTeleopCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public void execute() {
8787
}
8888
}
8989

90-
if (mTargetDriveAprilTagId == -1 || !mDoneInitTeleop)
90+
if (mTargetDriveAprilTagId <= 0 || !mDoneInitTeleop)
9191
return;
9292

9393
Vision.VisionTagData data = kVisionSubsystem.robotDriveToAprilTag(mTargetDriveAprilTagId, mOffset);

0 commit comments

Comments
 (0)