Camera intrinsics checker: cameracalibrate --check (checkerboard reprojection)

Open
#3,106 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
48/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
python

Research direction

Start in dimos/utils/cli/cameracalibrate/cameracalibrate.py and inspect the existing dimos cameracalibrate entry point. Trace how calibration data is read for live topics and recorded folders, then define the --check flow around deployed-versus-fresh calibration. Done means both input modes produce an OK/DEGRADED verdict, reprojection evidence, intrinsic deltas, and a recalibration recommendation.

Written by the indexing model from the issue text.

Description

Problem

No way to check whether a camera's intrinsics are still good.

Why

The AprilTags on the Go2 camera gave bad poses (sf_office marker poses 20-48 deg off, with low per-detection reprojection). The suspect is the intrinsics: the Go2 uses one static front_camera_720.yaml for every unit, not per-unit. Redoing the calibration should improve marker and relocalization accuracy by some amount X. We need to measure X to know if per-unit calibration is worth it.

Solution

A --check mode on dimos cameracalibrate: checkerboard reprojection under the deployed CameraInfo, plus drift vs a fresh calibration on the same frames. A full grid has no mirror ambiguity, so reprojection RMS is a valid signal (unlike a single AprilTag). Runs on a live topic and a recorded folder. Output: OK/DEGRADED verdict + evidence (median/p90 reprojection RMS, fresh-vs-deployed intrinsic deltas) + a recalibrate recommendation.

Find X (validation)

Capture a checkerboard on the Go2, calibrate, then re-survey the markers and re-run the held-out relocalization, and measure the delta: marker orientation error (gated tag 2 was 88->22 deg, tag 6 stuck at 48), fiducial candidate fitness vs ransac (currently ~0.05-0.15 short), and whether the prior starts winning. X = what per-unit calibration buys.

Extends DIM-1308. Lives in dimos/utils/cli/cameracalibrate/cameracalibrate.py.


Synced from DIM-1309 by aaryan

Dominant language
Python
Stars
4.5k
Forks
808
Avg merge
3d 5h
Merged PRs (30d)
233

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from dimensionalOS/dimos

All issues in dimensionalOS/dimos

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.