Skip to content

Commit d26090a

Browse files
committed
Added vision to get distance instead of manually putting it in.
1 parent 20f53d9 commit d26090a

5 files changed

Lines changed: 27 additions & 25 deletions

File tree

src/main/java/frc/robot/Constants.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@
1414
*/
1515
public final class Constants {
1616
static public final boolean tuningMode = true;
17-
}
17+
static public final String camName = "somename"; // TODO: Change
18+
}

src/main/java/frc/robot/Orchestrator.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
import edu.wpi.first.units.DistanceUnit;
44
import edu.wpi.first.units.Measure;
5+
import edu.wpi.first.units.Units;
56
import edu.wpi.first.wpilibj2.command.Command;
67
import edu.wpi.first.wpilibj2.command.Commands;
78
import frc.robot.subsystems.indexer.Indexer;
89
import frc.robot.subsystems.shooter.Shooter;
910
import frc.robot.subsystems.shooter.ShooterConstants;
11+
import frc.robot.subsystems.vision.Vision;
1012
import org.littletonrobotics.junction.AutoLogOutput;
1113
import org.littletonrobotics.junction.Logger;
1214

@@ -19,10 +21,12 @@ public class Orchestrator {
1921
@AutoLogOutput
2022
private double Distance = 300.0;
2123
@AutoLogOutput private final double shootingPower = 0.0;
24+
private final Vision vision;
2225

23-
public Orchestrator(Indexer indexer, Shooter shooter) {
26+
public Orchestrator(Indexer indexer, Shooter shooter, Vision vision) {
2427
this.indexer = indexer;
2528
this.shooter = shooter;
29+
this.vision = vision;
2630
}
2731
public Command spinUpDistance(Double distance) {
2832
Distance = distance;
@@ -94,7 +98,7 @@ public Command shootCyclePID(double setpointRPM) {
9498

9599
public Command shootDistance(Measure<DistanceUnit> distance) {
96100
return Commands.parallel(
97-
shooter.toSetpoint(distance),
101+
shooter.toSetpoint(Units.Meters.of(vision.distanceFromTarget())),
98102
Commands.sequence(
99103
intakeIfNeeded(),
100104
Commands.waitUntil(shooter::atSetpoint),

src/main/java/frc/robot/RobotContainer.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515
import frc.robot.subsystems.indexer.IndexerIOSparkMax;
1616
import frc.robot.subsystems.shooter.Shooter;
1717
import frc.robot.subsystems.shooter.ShooterIOSparkMax;
18+
import frc.robot.subsystems.vision.Vision;
19+
import frc.robot.subsystems.vision.VisionIOPhotonVision;
20+
21+
import static frc.robot.Constants.camName;
1822

1923

2024
/**
@@ -29,7 +33,8 @@ public class RobotContainer {
2933
// The robot's subsystems and commands are defined here...
3034
private final Indexer indexer = new Indexer(new IndexerIOSparkMax());
3135
private final Shooter shooter = new Shooter(new ShooterIOSparkMax());
32-
private final Orchestrator orchestrator = new Orchestrator(indexer, shooter);
36+
private final Vision vision = new Vision(new VisionIOPhotonVision(camName));
37+
private final Orchestrator orchestrator = new Orchestrator(indexer, shooter, vision);
3338
private final CommandXboxController driverController = new CommandXboxController(0);
3439
private boolean fastMode = false;
3540
private final Trigger fastModeTrigger = new Trigger(() -> fastMode);
Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,34 @@
11
package frc.robot.subsystems.vision;
22

3-
import edu.wpi.first.math.geometry.Pose3d;
43
import edu.wpi.first.math.geometry.Rotation2d;
5-
import edu.wpi.first.math.geometry.Translation3d;
4+
import edu.wpi.first.math.geometry.Translation2d;
65
import org.littletonrobotics.junction.AutoLog;
76

87
public interface VisionIO {
98
@AutoLog
10-
public static class VisionIOInputs {
9+
class VisionIOInputs {
1110
public boolean connected = false;
1211
public PoseObservation latestTargetObservation =
13-
new PoseObservation(0, new Translation3d(), 0);
12+
new PoseObservation(0, new Translation2d(), 0);
1413
public int lastestTagID = 0 ;
1514
public double distanceFromTarget = 0;
1615
public double yaw = 0;
1716
}
1817

1918

2019
/** Represents the angle to a simple target, not used for pose estimation. */
21-
public static record TargetObservation(Rotation2d tx, Rotation2d ty) {}
20+
record TargetObservation(Rotation2d tx, Rotation2d ty) {}
2221

2322
/** Represents a robot pose sample used for pose estimation. */
24-
public static record PoseObservation (
23+
record PoseObservation (
2524
int tagID,
26-
Translation3d translation3d,
25+
Translation2d translation2d,
2726
double yaw
2827
){}
2928

30-
public static enum PoseObservationType {
29+
enum PoseObservationType {
3130
PHOTONVISION
3231
}
3332

3433
default void updateInputs(VisionIOInputs inputs) {}
35-
}
34+
}
Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
package frc.robot.subsystems.vision;
2-
import edu.wpi.first.math.geometry.*;
3-
4-
import java.util.HashSet;
5-
import java.util.LinkedList;
6-
import java.util.List;
7-
import java.util.Set;
82

3+
import edu.wpi.first.math.geometry.Translation2d;
94
import org.photonvision.PhotonCamera;
105
public class VisionIOPhotonVision implements VisionIO{
116
protected final PhotonCamera camera;
@@ -20,16 +15,14 @@ public void updateInputs (VisionIOInputs inputs) {
2015
inputs.connected = camera.isConnected();
2116
var result = camera.getLatestResult();
2217
if (result.hasTargets()) {
23-
inputs.latestTargetObservation = new PoseObservation(result.getBestTarget().fiducialId,result.getBestTarget().bestCameraToTarget.getTranslation(), result.getBestTarget().getYaw());
18+
inputs.latestTargetObservation =
19+
new PoseObservation(result.getBestTarget().fiducialId,result.getBestTarget().bestCameraToTarget.getTranslation().toTranslation2d(), result.getBestTarget().getYaw());
2420
}else{
25-
inputs.latestTargetObservation = new PoseObservation(0,new Translation3d(),0);
21+
inputs.latestTargetObservation = new PoseObservation(0, new Translation2d(), 0);
2622
}
2723
inputs.lastestTagID = inputs.latestTargetObservation.tagID();
28-
inputs.distanceFromTarget = inputs.latestTargetObservation.translation3d().getNorm();
24+
inputs.distanceFromTarget = inputs.latestTargetObservation.translation2d().getNorm();
2925
inputs.yaw = inputs.latestTargetObservation.yaw();
30-
31-
32-
3326
}
3427

3528
}

0 commit comments

Comments
 (0)