Limelight 2020.1 - Zoom ?!

Hello Teams,

2020.1 adds one of Limelight’s coolest features yet: 2x Hardware Zoom (not digital zoom) for long-range tracking. This feature is available for all Limelight variants.


2x Hardware Zoom

  • This is not digital zoom.

  • Enable 2x Hardware zoom to achieve vastly improved tracking at long range, and stable tracking at full-court distances.

  • This feature comes with absolutely no latency or framerate cost - tracking continues to execute at 90fps with no additional overhead.

  • Zoom from the autonomous starting line (~127" away):

  • Zoom from the front of the trench run (~210" away):

  • Zoom from the front of the color wheel (~310" away):

  • Zoom from the very back of the trench run (~420" away):

  • Zoom from the sector line (nearly full-court):

Manual Crosshairs

  • Manually adjust single and dual crosshair locations with sliders in the web interface

New SolvePNP / 3D features (Still experimental)

  • We have added the “Force Convex” option to use only the outermost points of a target - this is necessary in 2020 due to the thinness of the tape used for the hexagonal target.

  • The “bind target” option has been added. This feature binds “tx” and “ty” to the 3D target. This is required to guide robots to score using 3D targets.

  • Finally, we have added the “Goal Z-Offset” option to help offset desired target locations in 3D space on the Z-axis.
    • In Infinite Recharge, the “Goal Z-Offset” would be used to track the center of the small, circular goal behind the hexagonal goal.

  • SolvePnP is still an experimental feature! We believe there are creative ways to play this game without SolvePnP, but we will continue to improve this feature this season.

Color sensing with "tc"

  • Read the new “tc” array in Network Tables to obtain Red, Green, and Blue values at the crosshair’s location. Adjust “Blue Balance” and “Red Balance” on the input tab to achieve perfect color sensing.


  • USB Camera functionality broken in 2020.0 is now fixed in 2020.1
  • SolvePnP functionality broken in 2020.0 is now fixed in 2020.1
  • SolvePnP properly uses the model center as the axis visualization center

It just … keeps getting better …


Is the changelog on the website gonna get updated soon? I was curious what changed from 2019.7 to 2020.0?


I have a couple of questions about this new feature

  • Can you switch the zoom mode during a game?
  • Does it take time to switch zoom modes?
  • Whats the FOV of the camera when its zoomed in?
  • When zoomed in at the autonomous line the target looks very big, that means that it can easily get out of frame and disable your vision alignment capability. Is there a way to start with no zoom and then zoom in to get an even more accurate alignment?

This looks great for mid to long range vision processing, good job!

Do you have a recommended range to use the Solve PNP feature?

Great feature set Brandon! Thanks again for your diligent work on Limelight and its features.

One question, I couldn’t follow this specifically from your post. Does the "Goal Z-offset"only operate in SolvePNP mode?

1 Like

I’m not a camera expert, so this is probably a stupid question, but how does this work? From my understanding there are no moving parts in the Limelight’s lens, so I don’t see how the image could be magnified without cropping and zooming on the sensor digitally. Super curious as to how you guys pulled this off!




This is exactly right. Unless the Limelight camera has some of those liquid lenses built in, digital zoom is all it’s capable of.

I love the fact that this will even be available on our now-“old” limelight 2. Backwards-compatibility for feature updates is not something that can be taken for granted in electronics nowadays, and I’m super excited to get zoom working. Thank you limelight!


I would suspect they’re referring to pixel binning at the hardware level - the camera sensor can combine 2x2 or 4x4 pixels into one. Since it is probably around a 5MP sensor, and the Limelight runs at a much lower resolution, it can “zoom” without reducing quality.


I think you are fairly close here.

From the Pi Camera page at Adafruit,

The Raspberry Pi Camera Board v2 is a high quality 8 megapixel Sony IMX219 image sensor custom designed add-on board for Raspberry Pi, featuring a fixed focus lens. It’s capable of 3280 x 2464 pixel static images, and also supports 1080p30, 720p60, and 640x480p90 video.

It is common knowledge that the Limelight 2 is running on a Pi Compute Module similar to this one..

Now we also know that if the Pi camera and the Limelight both can operate at 640x480 90fps, it is a fairly safe assumption that the camera module in the Limelight actually has a higher resolution than 640x480. Looking closely at the gif’s Brandon posted, you can see the resolution used was 320x240.
Thus it appears that your premise that it is using pixel binning is spot on!

1 Like

Not yet… Also, The change log has been updated with no user-facing changes for 2020.0.

Yes, this is only in available when SolvePnP is enabled.

That’s probably what’s going on. The Limelight doesn’t use an actual RPi Camera Module, though.

1 Like

No problem at all - we want to make sure teams get good use of their Limelights for multiple seasons!

1 Like

We have tested out this image a couple days ago on our Limelight 2 and I have a feeling that the feature of red/blue balance is not doing it’s job - there were no visible changes when we moved the sliders. However, when we swotched back to 2020.0 image, the sliders began to change the red and blue balace again. Has anyone else experienced this issue?


Is there a networktable entry for zoom? Is zooming in through programming possible without switching pipelines to one with zoom?


I’ve been wondering this same thing. How would one go about changing the zoom mode through code, is switching pipelines the only way?

@Isopod00 @le_pantman
Currently, switching pipelines is the only way to change zoom levels. You may find that you want different pipeline settings at different zoom levels which is why we made this decision. The easiest way to do this would be to download your first pipeline, upload it to a new slot, and then change the video mode on the new pipeline.

I’m not opposed to making this a network tables option. Based on your testing would you rather use one pipeline with a networktables option?

1 Like

@Brandon_Hjelstrom Okay, thanks for the quick reply! It makes sense that different zoom levels might work better with different tracking settings. I haven’t done any testing with switching between multiple pipelines in code yet, but I definitely will try that out. I don’t know which way would be better since I haven’t tested it yet, but if there are lots of other people asking for it maybe you could also make zoom a networktables option so people have a choice of which way they want to go about doing it.