Limelight 2024.1

Limelight OS 2024.1 (2/24/24)

HW Metrics (hw key in networktables, /status GET request)

Calibration Improvement

  • Fix crash that could occur if a calibration image contained exactly one valid detection. Several teams supplied crashing calibration image sets, and this change fixes every single one so far.
  • Improve web ui feedback.

Robot Localization Improvement With Atomic Metrics

  • All networktables botpose arrays (botpose, botpose_wpiblue, and botpose_wpired) now include Tag Count, Tag Span (meters), Average Distance (meters), and Average Area (percentage of image)

  • These metrics are computed with tags that are included in the uploaded field map. Custom and/or mobile AprilTags will not affect these metrics.

  • With device calibration and this botpose array upgrade, we do not believe JSON is necessary for the vast majority of use-cases this year.

  • The JSON dump now includes botpose_avgarea, botpose_avgdist, botpose_span, and botpose_tagcount for convenience.


New Feature: Priority ID (NT Key priorityid)

  • If your robot uses both odometry-based features and tx/ty-based features, you’ve probably encountered the following UX problem:

    • Before this update, there was no way to easily switch the preferred tag ID for tx/ty targeting.
    • While there is an ID filter in the UI, it
      • is not dynamic
      • removes tags from megaTag localization.
    • This meant teams were creating several pipelines: one for 3D localization, and one per tx/ty tag (one pipeline for blue-side shooting with tag 7, one for blue-side amping with tag 6, etc.).
  • The new priority ID feature (NT Key priorityid) allows you to tell your Limelight “After all tag detection, filtering, and sorting is complete, focus on the tag that matches the priority ID.”

  • This does not affect localization in any way, and it only slightly changes the order of tags in JSON results.

  • tx/ty/ta will return 0 unless the priority tag is visible


  • Fix “x” across the screen while using dual-target mode in a 3D apriltag pipeline
  • REST API expanded with neural network label uploads (/uploadlabels)
  • Include device nickname in /status json

LimelightLib 1.3

  • LimelightLib (Java and CPP) have been updated to make localization easier than ever.
  LimelightHelpers.PoseEstimate limelightMeasurement = LimelightHelpers.getBotPoseEstimate_wpiBlue("limelight");
    if(limelightMeasurement.tagCount >= 2)

New resources for Teams

Limelight Feedback and Issue Tracker: Issues · LimelightVision/limelight-feedback · GitHub

Examples Repo: GitHub - LimelightVision/limelight-examples

Aiming and Ranging with Swerve Example: Aiming and Ranging With Swerve | Limelight Documentation

MegaTag Localization Example: Localization with MegaTag | Limelight Documentation

Thanks to recent contributors jasondaming, Gold876, JosephTLockwood, Andrew Gasser, and virtuald


So is the code here outdated? Or is this just a simpler version of that?

Do you have a place you provide a detailed description of each of these new fields?

No recommendation on using a single tag? Distance doesn’t play into the confidence calculation?

Is there a reason to not just do:

  LimelightHelpers.PoseEstimate limelightMeasurement = LimelightHelpers.getBotPoseEstimate_wpiBlue("limelight");
    if(limelightMeasurement.tagCount >= 2)

Cool update! We were having some inconveniences with having to switch with multiple pipelines. After a bit of testing, my team has been running into a problem with setting the priorityid always giving tx, ty, ta values of 0 even when the priority tag is visible. We were wondering if that might be because we are using the priorityid networktable entry the wrong way or the limelight software update, any feedback would be helpful!


Fixed in 2024.1.1


Our team was running into problems with the priority tags! Great job to Brandon and the rest of the team at Limelight!

1 Like

Thank you for this amazing update. I ran into some issues today for it to be fix right after. THANK YOU BRANDON!!!

1 Like

What is tagSpan? is that distance between tags?

1 Like