dimensionalOS / dimensionalOS/dimos

Go2 per-unit camera calibration + refreshable robot-level yaml

Open
#3,102 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Investigate whether the Go2 camera intrinsic is causing high fiducial marker-pose variance.

Found while adding the fiducial relocalization prior. sf_office marker survey: tag translation RMS ~0.6 m, orientation spread up to 88 deg (tags 2, 6, 7). The judge rejects candidates that far off, so the marker prior loses to lidar. Poses are wrong at the source.

The blueprint uses one static intrinsic for every Go2: dimos/robot/unitree/go2/front_camera_720.yaml (fisheye, equidistant, fx~797). No per-unit calibration.

Asks:

  • Calibrate the actual unit with dimos cameracalibrate and compare to the static yaml.
  • Store per-unit calibration as a robot-level yaml, refreshable.
  • A latest-calibration store keyed by robot, loaded via the camera_info_file override.

Also contributing: the mirror-ambiguity gate is dormant live because corners_px are dropped from the Detection3DArray wire.

From the fiducial relocalization work (DIM-1281).


Also needed: a tool to detect DEGRADED / wrong camera intrinsics (does not exist yet). cameracalibrate produces a calibration and apriltag prints a board, but nothing measures calibration HEALTH on a live camera. Important: per-detection reprojection error alone is NOT enough — under wrong intrinsics the IPPE mirror-flip pose still reprojects <1.2 px (this is why our sf_office marker poses were 20-48 deg off with low reproj). The tool must also check POSE CONSISTENCY: a static tag's world pose should be constant, so run-to-run variance or bimodal flips flag bad intrinsics. Use it to know WHEN to recalibrate a unit.


Synced from DIM-1308 by aaryan

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.

Research direction

Start with dimos/robot/unitree/go2/front_camera_720.yaml, the dimos cameracalibrate entry point, and the camera_info_file override path. Define how a per-unit robot-level calibration is refreshed and loaded, then verify the calibration-health tool detects pose variance or mirror flips on a live static tag, not only reprojection error.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
computer-vision, robotics
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.