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.'
the part worth keeping
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.
Programming, Controls & SensorsComputer Vision and Pose Estimationlesson 1 of 3
Keep going
Take the quiz+10 XP with an accountMore in Computer Vision and Pose Estimation
where this came from
Sources and 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, in public, in the corrections log.
sources and further reading
- docs.wpilib.orgWPILib: What Are AprilTags?
- docs.photonvision.orgPhotonVision Documentation
- docs.limelightvision.ioLimelight Documentation
clipped to this lesson
Articles that go further on this
The lesson gets you through the topic. These go wider on it, and they read in one sitting.
- 20 min readPhotonVision Setup for FRC: Install, Pipelines & AprilTag PosePhotonVision 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./blogread it
- 8 min readAprilTags in FRC: How Robots See the FieldAprilTags 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./blogread it
- 8 min readFRC Vision: Limelight vs PhotonVision and AprilTag TrackingCompare Limelight and PhotonVision for FRC vision: AprilTag tracking, pose estimation with addVisionMeasurement, MegaTag2, latency, calibration, and cost./blogread it
answer sheet
Lesson quiz
All 3 right completes the lesson. Miss one and only that question comes back, anything you already answered correctly stays banked.
0 of 3 answered
01Which AprilTag family has FRC used on the field since the 2024 season?
02What is the primary role of a vision coprocessor such as PhotonVision or Limelight in an FRC robot?
03Why do good vision libraries report a timestamp with each measurement?
Answer every question to submit.
All 51 lessons in Programming, Controls & Sensorsopenclose
01 / prerequisites
02 / foundations-tools-and-first-program
03 / robot-program-and-command-based
04 / motors-and-control
05 / autonomous-trajectories-simulation
06 / sensing-fundamentals
07 / encoders
08 / gyros-imus-orientation
09 / closed-loop-control
10 / vision-pose-estimation
11 / worked-examples-mini-projects
- Not read yet:Mini-Project: A Closed-Loop Elevator with Motion Magic
- Not read yet:Mini-Project: A Velocity-Controlled Shooter on REVLib
- Not read yet:Mini-Project: A Teleop Swerve Drive Subsystem
- Not read yet:Mini-Project: An Autonomous Routine with PathPlanner
- Not read yet:Mini-Project: Vision-Aligned Scoring with Limelight
12 / common-mistakes-troubleshooting
13 / advanced-techniques-case-studies
- Not read yet:State-Space Control and Kalman Filtering
- Not read yet:Log Replay Architecture with AdvantageKit
- Not read yet:Advanced Pose Estimation: Multi-Tag Fusion and Standard Deviations
- Not read yet:Robot Coordination, Alerts, and Operator Feedback
- Not read yet:Case Study: Hardening Software Before an Event