PhotonVision 2025 Beta Release

PhotonVision v2025.0.0-beta-1

Too many things to list; get it while it’s hot! Vendor JSON is attached to the release.

I’m eternally thankful to everyone who helped pitch in and push us across the finish line to a beta release, and especially to all of our new contributors!! I actually had to go back and delete all the @ mentions because we exceeded CD’s ping limit in a single post, which is a fantastic problem to have :slight_smile: .

Unfortunately, we still can’t fix what we don’t know about (and believe us, we tried all the witchy mind-reading spells we could); please create an issue on GitHub or reach out on Discord if anything seems funky.

Major Changes

QOL Changes

All Other Changes

New Contributors

Full Changelog: https://github.com/PhotonVision/photonvision/compare/v2024.3.1...v2025.0.0-beta-1

37 Likes

My PiCam OV9281-110 (the one for the LL global shutter upgrade) works so much better on this 2025 release than the 2024 I had been using. That camera is detected within several seconds and the output stream is rock solid for the more than 3 hours I’ve been running it. Previous 2024 version took a long time to acquire that camera and sometimes never did and the output stream often disconnected and wouldn’t reconnect.
[Note that the camera setting in config.txt has moved from /boot to /boot/firmware and the docs need updating.]

3 Likes

I worked for a long time on the raspberry pi images. The images provided from raspberry pi didn’t have very good support for ov9281 during the season. As for the /boot/firmware change I am still a little confused. If we write to that file before the first boot of the coprocessor it overwrites it with the file from /boot but then they tell you to use the /boot/firmware file later. It is a little bit of an odd behaviour.

Then the error on the location of the config.txt file is entirely my fault for not following the PV instructions which are correct.

A note to the unaware such as I was might be in order but it was I who didn’t update the config.txt on my PC after imaging the SD card.

I had to remove the card after imaging (Windows no longer sees that drive) and then I forgot to update it (reinsert and edit) so I edited it in the RPI after booting the RPi.

I apologize for making the error and I learned about RPi first boot surprises.

My editing actions weren’t bad since there is a message about where to find the file, if I looked first in the wrong place.

Frontend folks are asleep, quick! Post UX crimes while they aren’t looking

6 Likes

@thatmattguy I am looking for a better localization solution to use this year (just like everyone else I know) and have tried a lot of different solutions. I have gone from photonvision with photonlib to photonvision with a custom SLAM pipeline, to a custom version of northstar with the SLAM backend, to our northstar version with the wpilib SwerveDrivePoseEstimator. Needless to say I am not happy with any of the options I’ve tried so far.
My vision goals for this season are:

  1. Accurate vision across the entire field.
  2. Good outlier rejection
  3. Aware of pose ambiguity
  4. Be easy enough for someone that isn’t me to fix small problems at home (ie don’t need to have experience in software, deployment, and controls to understand the setup)

Currently I’m thinking about using our northstar implementation with your gtsam-playground code. It meets all my criteria other than 4. Deploying anything to a coprocessor will always be a pain and northstar is not easy to configure (We use docker compose).

My question for you is, why should I switch from northstar to photonvision?
I like the simplicity of the code behind northstar, I like being in complete control of the code,I like being able to spin up multiple completely isolated instances on the robot, I like being able to tune the expose and brightness in robot code, I like being in full control over the camera tuning and uploading the tune separately to the config. The only think I dont like about northstar is docker compose being a pain to mess with at competitions which is where photonvision comes in.

Can I run two instances of photonvision at the same time (on two coprocessors)?

Yes. Photonvision itself will not be the limiting factor to number of instances.

Good news, PhotonVision is open source, so it’s possible to make modifications as you need. 1736 ran a slightly modified version on multiple coprocessors in 2022.

These are not currently in scope for Photonvision. Discussing the use case and prototyping something in an issue or PR is probably the best way to move it forward.

2 Likes

v2025.0.0-beta-4

Probably the final release built against WPILib 2025 beta 1; includes critical JNI loading fixes (shoutout to @gold856 for shoving that through!)

Fixes

Other Changes

New Contributors

Full Changelog: Comparing v2025.0.0-beta-1...v2025.0.0-beta-4 · PhotonVision/photonvision · GitHub

5 Likes

v2025.0.0-beta-5

Primarily exists to be our first build against WPILib’s 2025 Beta 2 release!

What’s Changed

New Contributors

Full Changelog: Comparing v2025.0.0-beta-4...v2025.0.0-beta-5 · PhotonVision/photonvision · GitHub

1 Like

I just installed beta 5 for Windows to do some camera calibration. When I tried to run the .jar with the JRE from JDK 11, I got an error that the class file is version 61 and the JRE will only run class files up to version 55. I rechecked the 2025 beta docs and they still show that JDK 11 is the only supported version. I installed JDK 17 and successfully ran the .jar. Everything seems to be working correctly in the GUI.

I’m assuming that the docs have not been updated to show the 2025 beta dependency on JDK 17. However, if I’m supposed to be able to run the .jar using JDK 11, maybe someone could help me with what I’m missing.

Hi! Yep those docs are wrong. They should read “ONLY the JDK provided by the WPILib 2025 beta 2 installer will work.” (This is because of the std mutex ABI break shenanigans). Any chance you could update the wording quickly?

This offseason we switched from Limelight to Orange PI 5’s running PhotonVision and until now all tests have shown very promising results. Yesterday, however, we ran into a strange issue. We saw an error in the Driver Station console that PhotonVision wasn’t connected to the time sync server and that the latest result was around 9e12 seconds ago. What was strange was that all the detected poses were still correctly sent to the RoboRio and were being processed correctly. In the timesync tab of the networktables I saw that the ping counter of photonvision kept increasing, but all other values, including pong count were at zero. Also each time at robot startup the following text appeared in the Driver Station console: TimeSyncServer: use after free?. Both our PhotonVision vendordep and OrangePI 5 firmware version were at beta-2, and upgrading them to beta-5 seems to have solved the issue, but I don’t know if it could occur again. We also probably have to switch back to beta-4, since we are currently running wpilib beta-1. Could the issue have been fixed after beta-2 or is there something else wrong?

Driver Station warning about time server
Warning at org.photonvision.PhotonCamera.checkTimeSyncOrWarn(PhotonCamera.java:224): PhotonVision coprocessor at path /photonvision/camera2 is not connected to the TimeSyncServer? It's been 9223372036854.78s since the coprocessor last heard a pong. 
3 Likes

Hello, thanks for the feedback and also for some beta testing! I suspect you were hitting these bugs addressed in beta 4, which meant that the roborio’s time sync sever just never started up.

Hopefully you found my time sync spec docs - they’re more dev focused than help focused - but is there anything else we can do to make troubleshooting this easier/more clear?

This is also a class of bug that should have been caught by automated testing on a roborio+coprocessor test bench if we had that set up. I think that’s probably the biggest bang for buck HIL smoketesting we can do as we start shipping more complex vendordeps.

4 Likes

I actually wasn’t able to find much information about the time sync server at all :sweat_smile:. Maybe my search queries were incorrect or I didn’t look well enough, but I did not get any results from PhotonVision, WPILib or any other FRC source.

Now that I think about it, we did test the setup once and it seemed to run correctly, but then a week later we started noticing the time sync errors. Also power cycling did not solve the issue, so maybe the error can occur after some time and then persist. That would also explain why the test setup did not catch the bug. Or we could have missed the errors the first time we tested, that is also a reasonable explanation.

2 Likes

Yeah sorry all that’s still a little buried right now! Best I can do is this plus the linked PRs

2 Likes

Please CD web nerds I’m begging you don’t make me ship this ugly UI (its both nauseating and also is a UX nightmare)

3 Likes

Looks good, ship it

3 Likes