Skip to content

Commit 2e78d4d

Browse files
committed
advanced object detection
1 parent 46de678 commit 2e78d4d

2 files changed

Lines changed: 21 additions & 7 deletions

File tree

src/main/java/frc/robot/subsystems/vision/VisionIO.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,26 @@
99

1010
import edu.wpi.first.math.geometry.Pose3d;
1111
import edu.wpi.first.math.geometry.Rotation2d;
12+
import java.util.Optional;
1213
import org.littletonrobotics.junction.AutoLog;
1314

1415
public interface VisionIO {
1516
@AutoLog
1617
public static class VisionIOInputs {
1718
public boolean connected = false;
18-
public TargetObservation latestTargetObservation =
19-
new TargetObservation(Rotation2d.kZero, Rotation2d.kZero);
19+
public Optional<TargetObservation> latestTargetObservation = Optional.empty();
2020
public PoseObservation[] poseObservations = new PoseObservation[0];
2121
public int[] tagIds = new int[0];
2222
}
2323

2424
/** Represents the angle to a simple target, not used for pose estimation. */
25-
public static record TargetObservation(Rotation2d tx, Rotation2d ty) {}
25+
public static record TargetObservation(
26+
Rotation2d yaw,
27+
Rotation2d pitch,
28+
Rotation2d skew,
29+
double area,
30+
float confidince,
31+
int objectID) {}
2632

2733
/** Represents a robot pose sample used for pose estimation. */
2834
public static record PoseObservation(

src/main/java/frc/robot/subsystems/vision/VisionIOPhotonVision.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.util.HashSet;
1414
import java.util.LinkedList;
1515
import java.util.List;
16+
import java.util.Optional;
1617
import java.util.Set;
1718
import org.photonvision.PhotonCamera;
1819

@@ -39,15 +40,22 @@ public void updateInputs(VisionIOInputs inputs) {
3940
// Read new camera observations
4041
Set<Short> tagIds = new HashSet<>();
4142
List<PoseObservation> poseObservations = new LinkedList<>();
43+
4244
for (var result : camera.getAllUnreadResults()) {
4345
// Update latest target observation
4446
if (result.hasTargets()) {
47+
var bestTarget = result.getBestTarget();
4548
inputs.latestTargetObservation =
46-
new TargetObservation(
47-
Rotation2d.fromDegrees(result.getBestTarget().getYaw()),
48-
Rotation2d.fromDegrees(result.getBestTarget().getPitch()));
49+
Optional.of(
50+
new TargetObservation(
51+
Rotation2d.fromDegrees(bestTarget.getYaw()),
52+
Rotation2d.fromDegrees(bestTarget.getPitch()),
53+
Rotation2d.fromDegrees(bestTarget.getSkew()),
54+
bestTarget.getArea(),
55+
bestTarget.getDetectedObjectConfidence(),
56+
bestTarget.getDetectedObjectClassID()));
4957
} else {
50-
inputs.latestTargetObservation = new TargetObservation(Rotation2d.kZero, Rotation2d.kZero);
58+
inputs.latestTargetObservation = Optional.empty();
5159
}
5260

5361
// Add pose observation

0 commit comments

Comments
 (0)