Since 2023, FRC fields carry AprilTags — printed fiducial markers that act like QR codes for robots. They are the foundation of modern on-field localization.
What an AprilTag gives you
Each tag has a unique ID and a known, published location and orientation on the field (provided each season as the WPILib AprilTag field layout, an AprilTagFieldLayout you can load in code). When a camera detects a tag, it can compute the 3D transform from the camera to the tag. Because the tag's field position is known, the robot can work backward to compute its own field-relative pose. FRC used the 16h5 tag family in 2023, then switched to 36h11 starting in 2024 (and 2025+) because 36h11 substantially reduces false positives and is more widely compatible.
Why a coprocessor
Detecting tags and doing the pose math is computationally heavy and you do not want to bog down the roboRIO. So vision usually runs on a coprocessor — a small dedicated computer with a camera — that does the image processing and sends results to the roboRIO over the network via NetworkTables. The two dominant options:
- Limelight: an all-in-one smart camera with a polished web UI, on-board AprilTag pipelines, and (on newer models) a built-in IMU. Easiest to set up.
- PhotonVision: free, open-source vision software you run on a coprocessor like an Orange Pi or Raspberry Pi (or a supported camera). Highly flexible, with the
PhotonLibvendor library for robot code.
Camera and tuning basics
For reliable tag detection you need:
- Calibration: the camera's lens parameters must be calibrated so the 3D math is accurate. Both Limelight and PhotonVision provide calibration workflows; do this per resolution.
- Exposure and resolution: lower exposure and a fixed gain reduce motion blur and make tags crisp; higher resolution sees tags farther but costs frame rate. Tune for low latency.
- Robot-to-camera transform: you must tell your code exactly where the camera sits on the robot (position and angle), or the computed pose will be offset.
Latency matters
Vision results are always a little old by the time robot code uses them, because of capture, processing, and network time. Good vision libraries report a timestamp with each measurement so the pose estimator (next lesson) can account for the delay — never just treat a vision pose as 'now.'
Key takeaways
- AprilTags have known field positions; detecting one lets the robot compute its own field pose. FRC used 16h5 in 2023 and switched to 36h11 from 2024 onward.
- Vision runs on a coprocessor (Limelight or PhotonVision) and reports results over NetworkTables.
- Calibrate the camera, set the robot-to-camera transform, and always use the reported timestamp because vision data is delayed.
Keep going
Take the quiz · +10 XP with an accountMore in Computer Vision and Pose Estimation
Sources & corrections
This lesson is AI-assisted: drafted from primary sources, then reviewed and edited by hand. Errors still get through. When one is reported we fix it and write down what changed — publicly, in the corrections log.
Sources and further reading
- WPILib: What Are AprilTags?docs.wpilib.org
- PhotonVision Documentationdocs.photonvision.org
- Limelight Documentationdocs.limelightvision.io
Read next
Articles on this, for competition day
The lesson covers how it works. These cover what to do when it breaks.
- 20 min read
PhotonVision Setup for FRC: Install, Pipelines & AprilTag Pose
PhotonVision setup for FRC: install it on a Raspberry Pi or Orange Pi coprocessor, build an AprilTag pipeline, run multi-tag pose, and feed swerve odometry.
Read - 8 min read
AprilTags in FRC: How Robots See the Field
AprilTags in FRC are the fiducial markers robots use to see the field and know their exact position. How the tags, cameras, and pose estimation actually work.
Read - 8 min read
FRC Vision: Limelight vs PhotonVision and AprilTag Tracking
Compare Limelight and PhotonVision for FRC vision: AprilTag tracking, pose estimation with addVisionMeasurement, MegaTag2, latency, calibration, and cost.
Read
Lesson quiz
RequiredAll 3 right completes the lesson. Miss one and only that question comes back — anything you already answered correctly stays banked.
0 of 3 answered
01.Which AprilTag family has FRC used on the field since the 2024 season?
02.What is the primary role of a vision coprocessor such as PhotonVision or Limelight in an FRC robot?
03.Why do good vision libraries report a timestamp with each measurement?
Answer every question to submit.
All 51 lessons in Programming, Controls & Sensors
- Not started:Mini-Project: A Closed-Loop Elevator with Motion Magic
- Not started:Mini-Project: A Velocity-Controlled Shooter on REVLib
- Not started:Mini-Project: A Teleop Swerve Drive Subsystem
- Not started:Mini-Project: An Autonomous Routine with PathPlanner
- Not started:Mini-Project: Vision-Aligned Scoring with Limelight
- Not started:State-Space Control and Kalman Filtering
- Not started:Log Replay Architecture with AdvantageKit
- Not started:Advanced Pose Estimation: Multi-Tag Fusion and Standard Deviations
- Not started:Robot Coordination, Alerts, and Operator Feedback
- Not started:Case Study: Hardening Software Before an Event