What needs to be documented better for AprilTags/PhotonVision?

Over the next few weeks, I’ll be going through and updating PhotonVision’s documentation for the 2024 season. I have a few things in mind but am curious as to what people think needs to be documented better when it comes to using AprilTags with PhotonVision. Ideally, I’m looking for responses from a people who have no idea what an AprilTag is all the way to to people who would consider themselves “experts”. A few things already on my list:

  • What is important when it comes to hardware (balancing FPS, resolution, common setups)
  • A good networking diagram
  • Simulation documentation
  • 3D Coordinate Systems
  • A proper getting started guide maybe? Not sure if this is something people would want.
  • Going from basic to advanced AprilTag strategies and how vision data fits into your code (we already have something like this but we’ve learned a lot over the last year)

What else would people like to see? Any common confusions you noticed? Any input is greatly appreciated. Additionally, if anyone has the time to help write / update documentation that would also be appreciated.

9 Likes

I want this

14 Likes
  1. Default detection settings baked in for common cameras (like a default config.txt)
  2. More consistent static IP setting for coprocessors. A generic CLI setup for static IP would be appreciated.
2 Likes

I realize that it’s kind of a big ask, but some way of estimating how performant different coprocessors would be. Is two fast cores better than four slower ones? ARM vs. x86? Is there a good benchmark to use?

1 Like

On my list:

  1. what matters for hardware
  2. simulation
  3. getting started (not many people on my team are familiar enough with linux to setup a coprocessor from getting one in the mail to running Photon)
1 Like

Some (or just one) of the code links are broken on the photonvision documentation website.

I’d love to see examples how to implement detection on multiple cameras either on the same coprocessor or across coprocessors.

Additionally I have seen that a few teams have their vision disabled during auto and I would just like to know why that is.

3 Likes

Getting simulation working for people to test their vision code off-robot
Getting started guide.

1 Like

Mind pointing me at some of them? Didn’t find them at a quick glance but am probably missing them.

Apologies I remembered it being more but I can only find Using AprilTags for Pose Estimation - PhotonVision Docs clicking on (Java) gives me a 404 error on GitHub

2 Likes

As a sample point, @asid61 put this together earlier this year. Probably the best work that’s been done to date.

2 Likes

I think some documentation on using multiple cameras and how to actually effectively use this on a robot. Maybe something about filtering bad results? I don’t have any experience with this nor have I actually done any research on it, it might be pretty easy, but I remember reading in a few teams’ technical binders that they used kalman filters or something. Someone correct if I’m wrong or if it already exists. Also, not sure if it’s documented anywhere, but I wasn’t able to get it working on a robot with a RIO 1.0, and I think they have problems with networktables. Not sure though.

What problem were you having with RoboRIO 1.0? I dont remember we ran into any issues during our development last year (we ended up didn’t use vision last year due to not having enough time to integrate everything else).

We were using PhotonVision on an Beeline Mini-PC though (it was an N40xx processor will have to go dig up which one). The PI4 was too laggy for us during benchtop testing alone.

Off the top of my head right now I would say:

  • Tuning pose est for swerve! This may just be a skill issue for me but more stuff about filters, the standard deviation stuff, etc would be super super appreciated as I’m still not entirely sure I understand lol
  • More work on the examples, I personally found them a bit lacking re: pose est in particular, especially for swerve and it would have been nice to see examples for tuning estimators
  • Getting started guide would be fantastic
  • Maybe guide to using it with Advantagekit
  • haven’t done much sim but that could be cool
  • also with multiple cams/coprocs
1 Like

I think at least those two would be good, but docs for how to tune pose estimators should live in WPILib documentation (and are things I personally won’t have time/expertise to do).

1 Like

The section on installing on Debian based systems says to the install scripts. It is not something I have played with but when the time comes instructions on how to use install scripts would be nice.

Recommendations for cameras, lenses, coprocessors and a quick pro and cons lists for all of those maybe would be nice for helping teams choose their setup.

2 Likes

Not sure if these things should live in the PhotonVision documentation, but while I was setting up PhotonVision last year, these were the 2 biggest things I would’ve liked to see more resources for:

  1. Camera mounting suggestions. I’ve seen several different methods of mounting cameras (ex. 2 cameras pointing at the same tag from 2 different angles, 2 cameras pointing forward and backward, etc.) and I honestly have no clue where to start with mounting. Even just some broad suggestions would be helpful.

  2. When to reject camera results. Maybe this leans too far into tuning pose estimators, but a short guide for how to decide your pose strategy or when/how to reject a camera result would be nice. I know some teams reject results during auto or when the pose is too far away from the tag; I would just like to know the ideology behind those decisions.

Overall, the documentation you guys have now is already really helpful. I had PhotonVision fully operational on our robot by week 2, but I never knew how to tune it to the point where we could use it. Keep up the good work :heart:

From your great suggestion specifically a list of resources would be very helpful to beginners that want to understand their selection of hardware.

A small example would be this M12 mount lens chart from ArduCam showing the Field Of View (fov) for different sensors (highlighted) and different focal lengths (higher up in the table).

How to read specs is a good skill to have and a tutorial on that would be helpful. What is the size of a sensor? What’s hFoV, VFoV, and FoV? Tutorial on how to read the specs would be helpful.

1 Like

At least for point 3, using a Raspberry Pi should help with that. It’s just a matter of flashing the PhotonVision image onto a microSD card, putting it into a Pi, and turning it on.

1 Like

What do people want to see in this?