davideisinger.com

My personal website
Log | Files | Refs | README

ftc-docs-firstinspires-org-thvpq0.txt (30673B)


      1   • [1]FIRST Official Team Resources
      2   • [2]Official Game Q&A
      3 
      4 [3] FIRST Tech Challenge Docs Logo
      5 0.3.0
      6 [4][                    ] 
      7   • [7]About the FIRST Tech Challenge
      8   • [8]Gracious Professionalism®
      9 
     10 Getting Started
     11 
     12   • [9]New Teams
     13   • [10]Returning Teams
     14   • [11]Coach (Administrative) Resources
     15   • [12]Technical Mentor Resources
     16 
     17 Game and Season-Specific Resources
     18 
     19   • [13]FIRST Tech Challenge Blog
     20   • [14]FIRST Tech Challenge Tech Tips
     21   • [15]AI Innovation Corner
     22   • [16]Competition Manual
     23   • [17]Game Q&A System
     24   • [18]Playing Field Resources
     25   • [19]Field Coordinate System
     26 
     27 Software Development Kit (SDK)
     28 
     29   • [20]Laptop Requirements
     30   • [21]SDK Overview
     31   • [22]Updating Components
     32 
     33 Control System Resources
     34 
     35   • [23]Control System Introduction
     36   • [24]Hardware Component Overview
     37   • [25]Hardware and Software Configuration
     38   • [26]FIRST Tech Challenge Self-Inspect
     39   • [27]Old Self-Inspect
     40   • [28]Programming Resources
     41       □ [29]Programming Tutorials
     42       □ [30]Supporting Documentation
     43       □ [31]AprilTag Programming
     44           ☆ [32]AprilTag Introduction
     45               ○ [33]Introduction
     46               ○ [34]What is AprilTag?
     47               ○ [35]AprilTag Pose
     48               ○ [36]Navigation
     49               ○ [37]Annotations
     50               ○ [38]AprilTag Axes
     51               ○ [39]Advanced Use
     52               ○ [40]Summary
     53           ☆ [41]VisionPortal Overview
     54           ☆ [42]Webcams for VisionPortal
     55           ☆ [43]Understanding AprilTag Values
     56           ☆ [44]AprilTag Localization
     57           ☆ [45]AprilTag Test Images
     58           ☆ [46]AprilTag Challenges in DECODE presented by RTX
     59       □ [47]Vision Programming
     60       □ [48]Camera Color Processing
     61       □ [49]Advanced Topics
     62       □ [50]Additional FIRST Website Resources
     63 
     64 AprilTag Resources
     65 
     66   • [51]AprilTag Introduction
     67       □ [52]Introduction
     68       □ [53]What is AprilTag?
     69       □ [54]AprilTag Pose
     70       □ [55]Navigation
     71       □ [56]Annotations
     72       □ [57]AprilTag Axes
     73       □ [58]Advanced Use
     74       □ [59]Summary
     75   • [60]VisionPortal Overview
     76   • [61]Webcams for VisionPortal
     77   • [62]Understanding AprilTag Values
     78   • [63]AprilTag Localization
     79   • [64]AprilTag Test Images
     80 
     81 CAD Resources
     82 
     83   • [65]Computer Aided Design (CAD)
     84 
     85 Electrostatic Discharge
     86 
     87   • [66]Managing ESD Effects
     88 
     89 Manufacturing
     90 
     91   • [67]Manufacturing Methods
     92 
     93 Team Resources
     94 
     95   • [68]Common Team FAQs
     96   • [69]Team Complimentary Software
     97   • [70]Team Discounts
     98   • [71]Team Resources
     99 
    100 FTC Docs
    101 
    102   • [72]Booklets
    103   • [73]Archive
    104   • [74]Site Feedback Form
    105   • [75]Contributing to FTC Docs
    106 
    107 [76]FIRST Tech Challenge Docs
    108 
    109   • [77]
    110   • [78]Programming Resources
    111   • AprilTag Introduction
    112    113   • [79] Edit on GitHub
    114 
    115 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    116 
    117 AprilTag Introduction[80]
    118 
    119 Introduction[81]
    120 
    121 A popular camera-based technology is AprilTag, a scanned image similar to a QR
    122 Code. Its effectiveness and quick set-up on custom Signal Sleeves led to wide
    123 adoption in POWERPLAY (2022-2023) by FIRST Tech Challenge teams, especially
    124 those programming in Java.
    125 
    126 [82]Dual Detection
    127 
    128 Photo Credit: Mike Silversides[83]
    129 
    130 Those POWERPLAY teams, including those using FTC Blocks, learned how to use
    131 several resources:
    132 
    133   • AprilTag: an open-source technology for evaluating formatted images
    134 
    135   • EasyOpenCV: a FIRST Tech Challenge-optimized interface with OpenCV, an
    136     image processing library
    137 
    138   • myBlocks: custom Blocks created in OnBot Java (OBJ)
    139 
    140 Now these three areas are provided, or bundled, in the FIRST Tech Challenge
    141 Software Development Kit (SDK), starting with version 8.2.
    142 
    143 Namely, key capabilities of AprilTag and EasyOpenCV are available to the Robot
    144 Controller (RC) and Driver Station (DS) apps, without special downloads. And
    145 AprilTag features are included in FTC Blocks, without needing custom myBlocks.
    146 
    147 The AprilTag features work on webcams and on Android RC phone cameras. A single
    148 OpMode can use AprilTag and Color Processing.
    149 
    150 In FIRST Tech Challenge, AprilTag is ready for the spotlight!
    151 
    152 What is AprilTag?[84]
    153 
    154 Developed at the [85]University of Michigan, AprilTag is like a 2D barcode or a
    155 simplified QR Code. It contains a numeric ID code and can be used for location
    156 and orientation.
    157 
    158 [86]AprilTag Robots
    159 
    160 AprilTags on Robots. Photo Credit: University of Michigan[87]
    161 
    162 AprilTag is a type of visual fiducial, or fiducial marker, containing
    163 information and designed for easy recognition.
    164 
    165 [88]Tag Families
    166 
    167 A sample of different AprilTag families[89]
    168 
    169 The above samples represent different formats, or families. A project typically
    170 uses a single AprilTag family.
    171 
    172 FIRST Tech Challenge uses a common family called 36h11. A PDF showing the
    173 numbers 0 through 20 from the 36h11 family can be downloaded here:
    174 
    175   • [90]AprilTag PDF 0-20
    176 
    177 Each number is the ID code of that tag.
    178 
    179 Here’s an AprilTag representing ID code 2. The SDK software recognizes and
    180 overlays the ID code onto the image (small blue rectangle ID 02).
    181 
    182 [91]Tag02 Preview
    183 
    184 Stream output showing the detected tag ID 02[92]
    185 
    186 The above image shows a camera preview image, called LiveView, from a Robot
    187 Controller device (Control Hub or RC phone).
    188 
    189 The AprilTag family 36h11 has a capacity of 587 ID codes. To see them all,
    190 follow this link:
    191 
    192   • [93]https://github.com/rgov/apriltag-pdfs/tree/main/tag36h11/us_letter/
    193     100mm
    194 
    195 The square AprilTag pattern contains smaller black and white squares, each
    196 called a pixel. A 36h11 tag contains 10 x 10 pixels, including an outer border
    197 of all white pixels and an inner border of all black pixels.
    198 
    199 Tag size is measured across the outside edge of the inner border which
    200 comprises the black pixels for 36h11.
    201 
    202 [94]Tag Size
    203 
    204 Figure demonstrating the tag size measurement[95]
    205 
    206 The above image shows a complete AprilTag with outer white border. From the
    207 36h11 family, its ID code is 42.
    208 
    209 AprilTag Pose[96]
    210 
    211 Beyond ID code, the new SDK also provides pose data, namely position and
    212 orientation (rotation) from the camera’s point of view. This requires a flat
    213 AprilTag, which was not possible with curved POWERPLAY Signal Sleeves.
    214 
    215 Let’s look again at the camera preview image, called LiveView, from a Robot
    216 Controller device (Control Hub or RC phone).
    217 
    218 [97]LiveView Image
    219 
    220 LiveView Image with additional markings for explanation purposes[98]
    221 
    222 Imagine a laser beam pointing straight outward from the center of the camera
    223 lens. Its 3-dimensional path appears (to the camera) as a single point,
    224 indicated by the green star. You can see that the center of the AprilTag (
    225 yellow star) is offset from that “laser beam”.
    226 
    227 That translation offset can break down into three traditional components (X, Y
    228 and Z distances), along axes at 90 degrees to each other:
    229 
    230   • X distance (horizontal orange line) is from the center, to the right
    231 
    232   • Y distance (not shown) is from the lens center, outwards
    233 
    234   • Z distance (vertical orange line) is from the center, upwards
    235 
    236 The SDK provides these distances in the real world, not just reporting how many
    237 pixels on the screen. Very useful!
    238 
    239 You can also see that the AprilTag’s flat face is not parallel to the plane of
    240 the camera. That rotation offset can break down into three angles about the X,
    241 Y and Z axes. This is discussed further in the section below, called AprilTag
    242 Axes.
    243 
    244 In summary, the SDK evaluates the AprilTag image and performs “pose estimation”
    245 , providing an estimated X, Y and Z distance between the tag and the camera,
    246 along with an estimated angle of rotation around those axes. A closer or larger
    247 AprilTag can yield a more accurate estimate of pose.
    248 
    249 To provide good pose estimates, each RC phone camera or webcam requires
    250 calibration data, for a specific resolution. The SDK contains such data for a
    251 limited number of webcams and resolutions. Teams can generate their own data,
    252 called lens intrinsics, using a provided procedure.
    253 
    254 Navigation[99]
    255 
    256 OpModes use AprilTag pose to achieve navigation: evaluating inputs and driving
    257 to a destination.
    258 
    259 An OpMode can use pose data to drive towards the tag, or drive to a target
    260 position and orientation relative to the tag. (The new SDK provides Java Sample
    261 OpModes RobotAutoDriveToAprilTagOmni.java and RobotAutoDriveToAprilTagTank.java
    262 .) Another navigation possibility is mentioned below under Advanced Use.
    263 
    264 Navigation is best done with continuous pose estimates, if the AprilTag remains
    265 within the camera’s field of view. Namely, an OpMode “while() loop” should
    266 regularly read the updated pose data, to guide the robot’s driving actions.
    267 
    268 The SDK supports multiple cameras, switchable or simultaneous. This can help if
    269 the robot changes direction, or you wish to navigate using another AprilTag (or
    270 Color Processing).
    271 
    272 Other sensors can also be used for navigation, such as drive motor encoders,
    273 REV Hub IMU, deadwheel encoders, color/distance sensors, ultrasonic sensors,
    274 and more.
    275 
    276 It’s also possible to evaluate non-AprilTag images from the same camera and/or
    277 a second camera. For example, the SDK can estimate the horizontal angle (or
    278 Bearing) of an object detected with Color Processing, another vision technology
    279 employed in FIRST Tech Challenge. Advanced teams might consider active camera
    280 pointing control, to keep an AprilTag or other object in view.
    281 
    282 Annotations[100]
    283 
    284 In the preview (RC phone screen or DS Camera Stream), an official recognized
    285 AprilTag will display a colored border and its numeric ID code. These
    286 annotations allow easy visual confirmation of recognition:
    287 
    288 [101]Simple Annotations
    289 
    290 Two AprilTags with different metadata being detected and annotations displayed
    291 [102]
    292 
    293 In the above [103]DS Camera Stream preview, the left-side AprilTag was
    294 recognized from a tag Library (default or customized). A Library tag has
    295 pre-loaded information (called Metadata) including its tag size, which allows
    296 pose estimation. These are annotated by default with a colored border.
    297 
    298 The right-side AprilTag was not in a tag Library. It has no Metadata, so the
    299 SDK can provide only its numeric ID code, shown here as ID 03. Such tags are
    300 not annotated by default with a colored border.
    301 
    302 Note: Camera Stream displays a snapshot of the camera’s view, on the Driver
    303 Station device. It’s available only during the INIT phase of an OpMode, and
    304 also shows any AprilTag (or Color Processing) annotations. Instructions are
    305 posted here:
    306 
    307   • [104]Camera Stream Image Preview Documentation
    308 
    309 Optional annotations include colored axes at the tag center, and a colored box
    310 projecting from the tag image:
    311 
    312 [105]Optional Annotations
    313 
    314 LiveView with additional annotations enabled[106]
    315 
    316 The above image shows a preview (called LiveView) on an Android Robot
    317 Controller (RC) phone. The REV Control Hub does generate an RC preview, which
    318 can be seen with an HDMI external monitor, or with scrcpy which can be found
    319 here:
    320 
    321   • [107]https://github.com/Genymobile/scrcpy
    322 
    323 AprilTag Axes[108]
    324 
    325 The SDK now provides the underlying pose data as follows:
    326 
    327   • Position is based on X, Y and Z distance from the camera lens to the
    328     AprilTag.
    329 
    330   • Orientation is based on rotation about those axes, using the right-hand
    331     rule.
    332 
    333 Note: the optional red-green-blue annotated axes represent the tag’s frame of
    334 reference, unrelated to SDK pose data. That annotation indicates only a
    335 successful AprilTag recognition.
    336 
    337 Here are the axis designations in the new SDK:
    338 
    339   • Y axis points straight outward from the camera lens center
    340 
    341   • X axis points to the right, perpendicular to the Y axis
    342 
    343   • Z axis points upward, perpendicular to Y and X
    344 
    345 If the camera is upright and pointing forward on the robot, these axes are
    346 consistent with the Robot Coordinate System used for [109]IMU navigation.
    347 
    348 Note: these axes are different than the official AprilTag [110]definitions,
    349 even from the camera’s frame of reference.
    350 
    351 The SDK provides AprilTag rotation data as follows:
    352 
    353   • Pitch is the measure of rotation about the X axis
    354 
    355   • Roll is the measure of rotation about the Y axis
    356 
    357   • Heading, or Yaw, is the measure of rotation about the Z axis
    358 
    359 Rotation follows the traditional right-hand rule: with the thumb pointing along
    360 the positive axis, the fingers curl in the direction of positive rotation.
    361 
    362 Further discussion is provided here:
    363 
    364 [111]Understanding AprilTag Detection Values
    365 
    366 Note: This article does not discuss the FIRST Tech Challenge [112]Field
    367 Coordinate System.
    368 
    369 Your OpModes might relate robot orientation to the overall field or [113]
    370 ‘global coordinates’ for navigation, but that’s beyond this AprilTag
    371 introduction.
    372 
    373 Advanced Use[114]
    374 
    375 Option 1
    376 
    377 If a tag’s position and orientation on the game field are specified in advance,
    378 the tag’s pose data could be used by an advanced OpMode to calculate the
    379 robot’s position on the field. This conversion math, an exercise for the
    380 reader, can allow a robot to use the tag’s pose data in real-time to navigate
    381 to the desired location on the field.
    382 
    383 Option 2
    384 
    385 Vision processing can consume significant CPU resources and USB communications
    386 bandwidth. FIRST Tech Challenge teams may balance the benefits of higher
    387 resolution and speed (frames-per-second) against the risk of overloading CPU
    388 and bandwidth resources. The SDK 8.2 or later provides numerous tools to manage
    389 this balance:
    390 
    391   • select the camera resolution
    392 
    393   • disable and enable the RC preview (called LiveView)
    394 
    395   • disable and enable the AprilTag (or Color Processing) processor
    396 
    397   • close the camera stream
    398 
    399   • select a compressed video streaming format
    400 
    401   • measure frames-per-second
    402 
    403   • set decimation (down-sampling)
    404 
    405   • select a pose solver algorithm
    406 
    407 Option 3
    408 
    409 Clearer camera images can improve AprilTag (and Color Processing) vision
    410 processing. The SDK offers powerful webcam controls (Exposure, Gain, Focus, and
    411 more), also available in FTC Blocks! These controls can be applied under
    412 various lighting conditions.
    413 
    414 Exposure and Gain are adjusted together. The SDK offers Java Sample OpMode 
    415 ConceptAprilTagOptimizeExposure.java.
    416 
    417 Option 4
    418 
    419 The frame of reference described above in AprilTag Axes is calculated and
    420 provided by default in the 8.2 SDK or later. Advanced teams may prefer to
    421 perform their own pose calculations, based on raw values from the AprilTag/
    422 EasyOpenCV pipeline.
    423 
    424 Those raw values are available to Java and Blocks programmers. The Java version
    425 is shown here:
    426 
    427 for (AprilTagDetection detection : aprilTag.getDetections())  {
    428 
    429      Orientation rot = Orientation.getOrientation(detection.rawPose.R, AxesReference.INTRINSIC, AxesOrder.XYZ, AngleUnit.DEGREES);
    430 
    431      // Original source data
    432      double poseX = detection.rawPose.x;
    433      double poseY = detection.rawPose.y;
    434      double poseZ = detection.rawPose.z;
    435 
    436      double poseAX = rot.firstAngle;
    437      double poseAY = rot.secondAngle;
    438      double poseAZ = rot.thirdAngle;
    439      }
    440 
    441 These raw values are converted by the SDK to the default interface, as follows:
    442 
    443 if (detection.rawPose != null)   {
    444      detection.ftcPose = new AprilTagPoseFtc();
    445 
    446      detection.ftcPose.x =  detection.rawPose.x;
    447      detection.ftcPose.y =  detection.rawPose.z;
    448      detection.ftcPose.z = -detection.rawPose.y;
    449 
    450      Orientation rot = Orientation.getOrientation(detection.rawPose.R, AxesReference.INTRINSIC, AxesOrder.YXZ, outputUnitsAngle);
    451      detection.ftcPose.yaw = -rot.firstAngle;
    452      detection.ftcPose.roll = rot.thirdAngle;
    453      detection.ftcPose.pitch = rot.secondAngle;
    454 
    455      detection.ftcPose.range = Math.hypot(detection.ftcPose.x, detection.ftcPose.y);
    456      detection.ftcPose.bearing = outputUnitsAngle.fromUnit(AngleUnit.RADIANS, Math.atan2(-detection.ftcPose.x, detection.ftcPose.y));
    457      detection.ftcPose.elevation = outputUnitsAngle.fromUnit(AngleUnit.RADIANS, Math.atan2(detection.ftcPose.z, detection.ftcPose.y));
    458      }
    459 
    460 Again, further discussion is provided here:
    461 
    462 [115]Understanding AprilTag Detection Values
    463 
    464 Summary[116]
    465 
    466 AprilTag is a popular camera-based technology, using a scanned image similar to
    467 a QR Code.
    468 
    469 The SDK version 8.2 or later includes key capabilities of AprilTag and
    470 EasyOpenCV, a FIRST Tech Challenge-optimized interface with OpenCV for image
    471 processing. These methods are packaged for convenient use by Java and Blocks
    472 programmers.
    473 
    474 By default, the SDK can detect the ID code for any AprilTag in the 36h11
    475 family.
    476 
    477 For AprilTags in a default or custom tag Library, the interface provides
    478 calculated pose estimates (position and rotation) from the camera’s frame of
    479 reference. The source data is also available for advanced teams.
    480 
    481 The AprilTag features work on Android RC phone cameras, and on webcams. Each
    482 camera requires calibration data, for a specific resolution, to provide good
    483 pose estimates.
    484 
    485 Multiple cameras are supported, and a single OpMode can use AprilTag and Color
    486 Processing. AprilTag detection is improved with webcam Camera Controls,
    487 available also in FTC Blocks.
    488 
    489 In FIRST Tech Challenge, AprilTag is ready to take CENTERSTAGE!
    490 
    491 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    492 
    493 Much credit to:
    494 
    495   • EasyOpenCV developer [117]@Windwoes
    496 
    497   • FTC Blocks developer [118]@lizlooney
    498 
    499   • FTC navigation expert [119]@gearsincorg
    500 
    501   • and the smart people at [120]UMich/AprilTag.
    502 
    503 Questions, comments and corrections to [121][email protected]
    504 
    505 [122] Previous [123]Next
    506 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    507 © 2025 FIRST
    508 
    509 [124]Terms of Service
    510 
    511 [125]Privacy Policy
    512 
    513 [126]Report an Incident
    514 
    515                                                   Season Presenting Sponsor RTX
    516 
    517 References:
    518 
    519 [1] https://ftc-resources.firstinspires.org/ftc/game
    520 [2] https://ftc-qa.firstinspires.org/
    521 [3] https://ftc-docs.firstinspires.org/en/latest/index.html
    522 [7] https://ftc-docs.firstinspires.org/en/latest/overview/ftcoverview.html
    523 [8] https://ftc-docs.firstinspires.org/en/latest/gracious_professionalism/gp.html
    524 [9] https://ftc-docs.firstinspires.org/en/latest/persona_pages/rookie_teams/rookie_teams.html
    525 [10] https://ftc-docs.firstinspires.org/en/latest/persona_pages/veteran_teams/veteran_teams.html
    526 [11] https://ftc-docs.firstinspires.org/en/latest/persona_pages/coach_admin/coach_admin.html
    527 [12] https://ftc-docs.firstinspires.org/en/latest/persona_pages/mentor_tech/mentor_tech.html
    528 [13] https://ftc-docs.firstinspires.org/en/latest/game_specific_resources/blog/blog.html
    529 [14] https://ftc-docs.firstinspires.org/en/latest/tech_tips/tech-tips.html
    530 [15] https://ftc-docs.firstinspires.org/en/latest/ai/innovation_corner/innovation-corner.html
    531 [16] https://ftc-docs.firstinspires.org/en/latest/manuals/game_manuals/game_manuals.html
    532 [17] https://ftc-docs.firstinspires.org/en/latest/game_specific_resources/ftcqa/ftcqa.html
    533 [18] https://ftc-docs.firstinspires.org/en/latest/game_specific_resources/playing_field_resources/playing_field_resources.html
    534 [19] https://ftc-docs.firstinspires.org/en/latest/game_specific_resources/field_coordinate_system/field-coordinate-system.html
    535 [20] https://ftc-docs.firstinspires.org/en/latest/programming_resources/laptops/laptops.html
    536 [21] https://ftc-docs.firstinspires.org/en/latest/ftc_sdk/overview/index.html
    537 [22] https://ftc-docs.firstinspires.org/en/latest/ftc_sdk/updating/index.html
    538 [23] https://ftc-docs.firstinspires.org/en/latest/programming_resources/shared/control_system_intro/The-FTC-Control-System.html
    539 [24] https://ftc-docs.firstinspires.org/en/latest/control_hard_compon/index.html
    540 [25] https://ftc-docs.firstinspires.org/en/latest/hardware_and_software_configuration/index.html
    541 [26] https://ftc-docs.firstinspires.org/en/latest/hardware_and_software_configuration/self_inspect/new-self-inspect.html
    542 [27] https://ftc-docs.firstinspires.org/en/latest/hardware_and_software_configuration/self_inspect/self-inspect.html
    543 [28] https://ftc-docs.firstinspires.org/en/latest/programming_resources/index.html
    544 [29] https://ftc-docs.firstinspires.org/en/latest/programming_resources/index.html#programming-tutorials
    545 [30] https://ftc-docs.firstinspires.org/en/latest/programming_resources/index.html#supporting-documentation
    546 [31] https://ftc-docs.firstinspires.org/en/latest/programming_resources/index.html#apriltag-programming
    547 [32] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#
    548 [33] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#introduction
    549 [34] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#what-is-apriltag
    550 [35] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#apriltag-pose
    551 [36] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#navigation
    552 [37] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#annotations
    553 [38] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#apriltag-axes
    554 [39] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#advanced-use
    555 [40] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#summary
    556 [41] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/visionportal_overview/visionportal-overview.html
    557 [42] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/visionportal_webcams/visionportal-webcams.html
    558 [43] https://ftc-docs.firstinspires.org/en/latest/apriltag/understanding_apriltag_detection_values/understanding-apriltag-detection-values.html
    559 [44] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_localization/apriltag-localization.html
    560 [45] https://ftc-docs.firstinspires.org/en/latest/apriltag/opmode_test_images/opmode-test-images.html
    561 [46] https://ftc-docs.firstinspires.org/en/latest/apriltag/apriltag_tips/decode_apriltag/decode-apriltag.html
    562 [47] https://ftc-docs.firstinspires.org/en/latest/programming_resources/index.html#vision-programming
    563 [48] https://ftc-docs.firstinspires.org/en/latest/programming_resources/index.html#camera-color-processing
    564 [49] https://ftc-docs.firstinspires.org/en/latest/programming_resources/index.html#advanced-topics
    565 [50] https://ftc-docs.firstinspires.org/en/latest/programming_resources/index.html#additional-first-website-resources
    566 [51] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#
    567 [52] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#introduction
    568 [53] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#what-is-apriltag
    569 [54] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#apriltag-pose
    570 [55] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#navigation
    571 [56] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#annotations
    572 [57] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#apriltag-axes
    573 [58] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#advanced-use
    574 [59] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#summary
    575 [60] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/visionportal_overview/visionportal-overview.html
    576 [61] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/visionportal_webcams/visionportal-webcams.html
    577 [62] https://ftc-docs.firstinspires.org/en/latest/apriltag/understanding_apriltag_detection_values/understanding-apriltag-detection-values.html
    578 [63] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_localization/apriltag-localization.html
    579 [64] https://ftc-docs.firstinspires.org/en/latest/apriltag/opmode_test_images/opmode-test-images.html
    580 [65] https://ftc-docs.firstinspires.org/en/latest/cad_resources/index.html
    581 [66] https://ftc-docs.firstinspires.org/en/latest/hardware_and_software_configuration/configuring/managing_esd/managing-esd.html
    582 [67] https://ftc-docs.firstinspires.org/en/latest/manufacturing/index.html
    583 [68] https://ftc-docs.firstinspires.org/en/latest/faq/faqs.html
    584 [69] https://ftc-docs.firstinspires.org/en/latest/sponsors/software/software.html
    585 [70] https://ftc-docs.firstinspires.org/en/latest/sponsors/discounts/discounts.html
    586 [71] https://ftc-docs.firstinspires.org/en/latest/team_resources/team_resources.html
    587 [72] https://ftc-docs.firstinspires.org/en/latest/booklets/index.html
    588 [73] https://ftc-docs.firstinspires.org/projects/ftcdocs-archive/en/latest/index.html
    589 [74] https://ftc-docs.firstinspires.org/en/latest/ftc_docs/form/form.html
    590 [75] https://ftc-docs.firstinspires.org/en/latest/contrib/index.html
    591 [76] https://ftc-docs.firstinspires.org/en/latest/index.html
    592 [77] https://ftc-docs.firstinspires.org/en/latest/index.html
    593 [78] https://ftc-docs.firstinspires.org/en/latest/programming_resources/index.html
    594 [79] https://github.com/FIRST-Tech-Challenge/ftcdocs/blob/main/docs/source/apriltag/vision_portal/apriltag_intro/apriltag-intro.rst
    595 [80] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#apriltag-introduction
    596 [81] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#introduction
    597 [82] https://ftc-docs.firstinspires.org/en/latest/_images/005-AprilTag-Worlds.png
    598 [83] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#id1
    599 [84] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#what-is-apriltag
    600 [85] https://april.eecs.umich.edu/software/apriltag
    601 [86] https://ftc-docs.firstinspires.org/en/latest/_images/010-apriltagrobots.png
    602 [87] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#id2
    603 [88] https://ftc-docs.firstinspires.org/en/latest/_images/020-Sample-Tags.png
    604 [89] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#id3
    605 [90] https://ftc-docs.firstinspires.org/en/latest/_downloads/ba0d87cc0d392ad0bad054d4b81e9077/AprilTag_0-20_family36h11.pdf
    606 [91] https://ftc-docs.firstinspires.org/en/latest/_images/080-CH-LiveView-ID-code.png
    607 [92] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#id4
    608 [93] https://github.com/rgov/apriltag-pdfs/tree/main/tag36h11/us_letter/100mm
    609 [94] https://ftc-docs.firstinspires.org/en/latest/_images/100-Tag-size-42.png
    610 [95] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#id5
    611 [96] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#apriltag-pose
    612 [97] https://ftc-docs.firstinspires.org/en/latest/_images/200-CH-LiveView-offsets-crop.png
    613 [98] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#id6
    614 [99] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#navigation
    615 [100] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#annotations
    616 [101] https://ftc-docs.firstinspires.org/en/latest/_images/280-DS-preview.png
    617 [102] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#id7
    618 [103] https://ftc-docs.firstinspires.org/en/latest/hardware_and_software_configuration/configuring/configuring_external_webcam/configuring-external-webcam.html#image-preview
    619 [104] https://ftc-docs.firstinspires.org/en/latest/hardware_and_software_configuration/configuring/configuring_external_webcam/configuring-external-webcam.html#image-preview
    620 [105] https://ftc-docs.firstinspires.org/en/latest/_images/300-RC-preview.png
    621 [106] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#id8
    622 [107] https://github.com/Genymobile/scrcpy
    623 [108] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#apriltag-axes
    624 [109] https://ftc-docs.firstinspires.org/en/latest/programming_resources/imu/imu.html#axes-definition
    625 [110] https://github.com/AprilRobotics/apriltag/wiki/AprilTag-User-Guide#coordinate-system
    626 [111] https://ftc-docs.firstinspires.org/en/latest/apriltag/understanding_apriltag_detection_values/understanding-apriltag-detection-values.html#understanding-apriltag-detection-values
    627 [112] https://ftc-docs.firstinspires.org/en/latest/game_specific_resources/field_coordinate_system/field-coordinate-system.html#scope
    628 [113] https://ftc-docs.firstinspires.org/en/latest/_downloads/7b8fbccb111a19eb3efa9eb3685a25fe/FTC-Global-Coordinates.png
    629 [114] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#advanced-use
    630 [115] https://ftc-docs.firstinspires.org/en/latest/apriltag/understanding_apriltag_detection_values/understanding-apriltag-detection-values.html#understanding-apriltag-detection-values
    631 [116] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/apriltag_intro/apriltag-intro.html#summary
    632 [117] https://github.com/Windwoes
    633 [118] https://github.com/lizlooney
    634 [119] https://github.com/gearsincorg
    635 [120] https://april.eecs.umich.edu/software/apriltag
    636 [121] mailto:westsiderobotics%40verizon.net
    637 [122] https://ftc-docs.firstinspires.org/en/latest/programming_resources/shared/managing_smartphone_rc/Managing-a-Smartphone-Robot-Controller.html
    638 [123] https://ftc-docs.firstinspires.org/en/latest/apriltag/vision_portal/visionportal_overview/visionportal-overview.html
    639 [124] https://ftc-docs.firstinspires.org/en/latest/tos/tos.html
    640 [125] https://www.firstinspires.org/privacy-policy
    641 [126] https://www.firstinspires.org/programs/youth-protection-program