After months of hard work and beta testing, the PhotonVision team is excited to announce the 2022 release of PhotonVision! These have been contributed by people from all over the FRC community, and support for all of PhotonVision is provided continuously by volunteers on our Discord server and here on Chief Delphi. If you need any help please ask on either of those platforms!
We’ve focused on adding a ton of new features, including ones designed to help in the 2022 game:
Colored Shape pipelines
The new “colored shape” pipeline type allows users to detect objects based on their shape. You can choose between circle, triangle, and polygon detection. Just click on the new Pipeline Type drop-down next to your pipeline name and select “Shape”. In 2022 we expect this feature will mostly be useful for ball detection. The colored shaped pipeline type is documented on this page and this page.
Multi-target grouping
Because the 2022 targets include many separate pieces of tape, PhotonVision now supports grouping an arbitrary number of targets. PhotonVision has always supported grouping two targets (this makes it work with 2019-style targets).
PhotonLib improvements
PhotonLib will now send the corners (in pixels) of the target minimum area rectangle’s corners, which can enable more advanced processing of detected retro-reflective tape segments.
Documentation Improvements
The documentation has progressively improved over the past year, both to document new features and changes, and to better describe the best hardware selection, more troubleshooting information, networking information, and LED control. The documentation has also received some visual and organizational overhauls that should make it easier to find content.
Pre-made PhotonVision images for Raspberry Pi, Gloworm, LimeLight, and SnakeEyes
There are now pre-made images that you can flash directly onto an SD card or vision module that will work on a stock Raspberry Pi, a Gloworm or Limelight, or a Raspberry Pi with SnakeEyes.
PhotonVision on Romi
Since a little after last year’s release it’s been possible to run PhotonVision on a Romi. You can read the PhotonVision on Romi installation guide here.
PhotonVision on Limelight
It’s also now possible to install PhotonVision on the Limelight, which is useful if you want to take advantage of PhotonVision’s full multi-camera support or its faster processing at higher resolutions. The installation process is now documented here. A processing speed comparison table is reproduced below:
Resolution | PhotonVision on Limelight, Gloworm, or Pi 3/Zero 2W✝ with Pi Camera V1 | Limelight |
---|---|---|
320 x 240 | 90 FPS | 90 FPS |
640 x 480 | 85 FPS | Unsupported |
960 x 720 | 45 FPS | 22 FPS |
1920 x 1080 | 15 FPS | Unsupported |
Note: on the Pi Camera v2 PhotonVision can reach up to 120 FPS at 320x240.
On the Pi Zero 2W, expect approximately 20-30% lower performance due to the lower-clocked CPU (1GHz down from 1.4GHz).
Networked device discovery
You can now view the IPs of your co-processor and potential RoboRIOs on your network from the PhotonVision web interface. The UI will now also display NetworkTables connection info, useful for making sure your co-processor can talk to your RoboRIO.
Offline update
We’ve made it easy to update PhotonVision without having to re-image your device. Just go to the “Settings” tab and click the “Offline Update” button and upload the latest JAR file from the GitHub releases page.
Feature matrix
There are a lot of features to keep track of, so below is a feature matrix that also serves as a comparison with the Limelight software, as of their initial 2022 release. We hope this will be useful to people who haven’t been closely following PhotonVision development!
PhotonVision | Limelight | |
---|---|---|
Retro-reflective tape tracking | ![]() |
![]() |
Colored shape tracking | ![]() |
* |
Full multi-target tracking | ![]() |
|
Multi-target grouping | ![]() |
![]() |
Multi-target outlier rejection | ![]() |
|
Target offset point | ![]() |
![]() |
NetworkTables interface | ![]() |
![]() |
WPILib “vendor dependency” interface | ![]() |
|
Vendor dependency with helpers for common calculations | ![]() |
|
Programmatic LED control (select hardware) | ![]() |
![]() |
“3D” (PnP) target tracking | ![]() |
![]() |
Built-in camera calibrator | ![]() |
|
GPU acceleration (select hardware) | ![]() |
|
Secondary driver camera | ![]() |
![]() |
Arbitrary pipelines on multiple cameras | ![]() |
|
Python scripting support | ![]() |
|
GRIP support | ![]() |
* The Limelight can theoretically track colored shapes, but as of this posting, it does not have the capability to detect specific shapes like circles, triangles, and polygons.
Conclusion
We’re really excited that teams will have access to these features, and we have even more new things on the way. If you just want to follow the project more closely (or contribute) then we’d love for you to join our Discord!
We’d also love to hear requests for new features in this thread!