package org.firstinspires.ftc.teamcode; import static org.firstinspires.ftc.robotcore.external.BlocksOpModeCompanion.hardwareMap; import com.qualcomm.robotcore.eventloop.opmode.OpMode; import org.firstinspires.ftc.robotcore.external.hardware.camera.WebcamName; import org.firstinspires.ftc.robotcore.external.navigation.AngleUnit; import org.firstinspires.ftc.robotcore.external.navigation.DistanceUnit; import org.firstinspires.ftc.vision.VisionPortal; import org.firstinspires.ftc.vision.apriltag.AprilTagDetection; import org.firstinspires.ftc.vision.apriltag.AprilTagProcessor; import java.util.List; public class AprilTags { private final OpMode opMode; public AprilTags (OpMode opMode){ this.opMode = opMode; } AprilTagProcessor aprilTagProcessor; public VisionPortal visionPortal; public double getBearing(int tagId){ AprilTagDetection idInfo = getIdInfo(tagId); if(idInfo != null) { return idInfo.ftcPose.bearing; } else { return 999; } } public AprilTagDetection getIdInfo(int id){ List currentDetections = aprilTagProcessor.getDetections(); for(AprilTagDetection detection : currentDetections){ if(detection.id == id){ return detection; } } return null; } public void init(){ aprilTagProcessor = new AprilTagProcessor.Builder() .setDrawAxes(true) .setDrawCubeProjection(true) .setOutputUnits(DistanceUnit.INCH, AngleUnit.DEGREES) .build(); VisionPortal.Builder builder = new VisionPortal.Builder(); visionPortal = builder.setCamera(opMode.hardwareMap.get(WebcamName.class, "Webcam 1")) .addProcessor(aprilTagProcessor) .build(); } }