Skip to content

Render the head camera with the real K1 intrinsics - #17

Merged
vincenttumminello merged 3 commits into
mainfrom
tumminello/k1-camera-intrinsics
Oct 17, 2026
Merged

vincenttumminello merged 3 commits into
mainfrom
tumminello/k1-camera-intrinsics

Conversation

@vincenttumminello

Copy link
Copy Markdown
Collaborator

The real K1 head camera ("Left Camera") is 544x448, rectilinear, with a normalised focal length of 0.3725: 106.6 deg horizontal, 95.7 deg vertical and 120.2 deg diagonal field of view. NUSim rendered 640x480 at fovy 70 (about 86 deg horizontal), so the robot saw a narrower, differently framed image than on hardware, which biases anything validated through the vision chain (ball detection range, how long a ball stays in view). Set the MJCF camera's fovy to 95.7 and the render size to 544x448; the camera now reports focal_length_norm 0.3727 and a 120.2 deg diagonal.

I measured all of the above on the real K1, and it happened to match pretty much exactly the intrinsics Booster shipped it with.

The real K1 head camera ("Left Camera") is 544x448, rectilinear, with a
normalised focal length of 0.3725: 106.6 deg horizontal, 95.7 deg vertical and
120.2 deg diagonal field of view. NUSim rendered 640x480 at fovy 70 (about
86 deg horizontal), so the robot saw a narrower, differently framed image than
on hardware, which biases anything validated through the vision chain (ball
detection range, how long a ball stays in view). Set the MJCF camera's fovy to
95.7 and the render size to 544x448; the camera now reports focal_length_norm
0.3727 and a 120.2 deg diagonal.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DyRrq9GsES4TwVCpGM4rLF
@jpptm

jpptm commented Oct 16, 2026

Copy link
Copy Markdown
Collaborator

The resolution is worth correcting, although it is worth noting that the intrinsics is gonna be slightly different across the k1s. Most of the variance would most likely live in how good of an estimate we have of the distortion and optical centre offsets of the camera due to manufacturing imperfections so it will still be different from robot to robot.

jpptm
jpptm previously approved these changes Oct 16, 2026

@jpptm jpptm left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@jpptm

jpptm commented Oct 16, 2026

Copy link
Copy Markdown
Collaborator

didnt notice the conflict, apologies lol Ill reapprove after then

Conflicts:
- docs/K1_MUJOCO_SETUP.md: the camera "Config:" paragraph. Main reworded it
  to say rendering is offscreen via EGL on Linux or CGL on macOS (native
  macOS support). This branch changed the logged resolution from 640 x 480
  to 544 x 448. Kept main's new wording and applied the 544 x 448 resolution
  to it.

K1_22dof.xml (main: dark limb colours; branch: head camera fovy 95.7) and
README.md auto-merged cleanly with both changes present.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VEGnPqynL7mkSCLuvyBvuh
@vincenttumminello
vincenttumminello merged commit 03b5517 into main Oct 17, 2026
4 checks passed
@vincenttumminello
vincenttumminello deleted the tumminello/k1-camera-intrinsics branch October 17, 2026 01:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants