Trying to fully understand the impact of recalibration on PhotonVision 2D AprilTag pipeline


At 2495 we are simply using the 2D AprilTag pipeline to auto-aim our drivetrain & auto-adjust our shooter, and object detection to assist with note picking.

We are nonetheless calibrating the global shutter camera we are using for the 2D AprilTag pipeline.

  1. Does it make sense to do this calibration step, or is it just a waste of time if we only do 2D?

  2. It seems that recalibrating the camera does have an impact on tag positions returned by the 2D pipeline. Is that indeed the case?

  3. It seems that recalibrating the camera may result in calibration results that are not very repeatable. Is that expected? What are the factors that could contribute to calibration not being repeatable? (e.g. Lighting? exposure time? flatness of calibration target?)

  4. bonus question: does PhotonVision save anything outside photonvision_config (logfiles aside)?


Hey. Just bumping those questions in hope of getting some answers. Thanks!

Not a true photon dev, but just chiming in from my limited experience.

  1. AFAIK, the only the thing that the calibration affects when using 2D is the calculated FOV of the camera, which can also be manually set on the settings tab.
  2. Yes, because the calculated FOV is used to inform yaw, pitch, etc.
  3. 30-50 images seems to be the sweet spot for calibration, and especially focusing on covering all parts of the screen with varying sizes, angles, etc. My team typically uses CalibDB for convience when we ran into some issues with photoncal but from what I’ve heard photoncal is superior.
  4. The calibrations are saved directly onto camera firmware I believe?
1 Like

Yes, if the used resolution is calibrated, the FOV and principal point (center of lens on sensor image) from calibration are used for yaw/pitch calculation. There is a pull request to additionally undistort the target point before this calculation.

1 Like