feat(calibration): IMX219 intrinsic + extrinsic calibration workflow #106 #113

Merged
sl-jetson merged 1 commits from sl-perception/issue-106-calibration into main 2026-03-02 08:41:21 -05:00
Collaborator

Implements Issue #106: complete camera calibration pipeline for 4x IMX219 160° fisheye cameras.

Packages

  • saltybot_calibration: calibration scripts + utilities

Scripts

  • capture_calibration_images.py — checkerboard capture (ROS2 or direct VideoCapture)
  • calibrate_camera.py — OpenCV fisheye calibration → camera_info_manager YAML
  • calibrate_extrinsics.py — mechanical or stereo extrinsic calibration
  • preview_undistorted.py — live undistorted preview with side-by-side comparison
  • generate_static_transforms.py — generate static_transforms.launch.py from extrinsics

Output format

  • distortion_model: equidistant (cv2.fisheye 4-param Kannala-Brandt)
  • jetson/calibration/{front,right,rear,left}/camera_info.yaml
  • jetson/calibration/extrinsics.yaml
  • Template YAMLs with placeholder IMX219 values (229px focal @ 640x480)

Extrinsics (mechanical, computed)

  • front: t=[0.05, 0.0, 0.30] q=[0.5, -0.5, 0.5, -0.5]
  • right: t=[0.0, 0.05, 0.30] q=[-0.707107, 0.0, 0.0, 0.707107]
  • rear: t=[-0.05, 0.0, 0.30] q=[-0.5, -0.5, 0.5, 0.5]
  • left: t=[0.0, -0.05, 0.30] q=[0.0, -0.707107, 0.707107, 0.0]

Workflow

See jetson/calibration/README.md for step-by-step instructions.

Implements Issue #106: complete camera calibration pipeline for 4x IMX219 160° fisheye cameras. ## Packages - `saltybot_calibration`: calibration scripts + utilities ## Scripts - `capture_calibration_images.py` — checkerboard capture (ROS2 or direct VideoCapture) - `calibrate_camera.py` — OpenCV fisheye calibration → camera_info_manager YAML - `calibrate_extrinsics.py` — mechanical or stereo extrinsic calibration - `preview_undistorted.py` — live undistorted preview with side-by-side comparison - `generate_static_transforms.py` — generate static_transforms.launch.py from extrinsics ## Output format - `distortion_model: equidistant` (cv2.fisheye 4-param Kannala-Brandt) - `jetson/calibration/{front,right,rear,left}/camera_info.yaml` - `jetson/calibration/extrinsics.yaml` - Template YAMLs with placeholder IMX219 values (229px focal @ 640x480) ## Extrinsics (mechanical, computed) - front: t=[0.05, 0.0, 0.30] q=[0.5, -0.5, 0.5, -0.5] - right: t=[0.0, 0.05, 0.30] q=[-0.707107, 0.0, 0.0, 0.707107] - rear: t=[-0.05, 0.0, 0.30] q=[-0.5, -0.5, 0.5, 0.5] - left: t=[0.0, -0.05, 0.30] q=[0.0, -0.707107, 0.707107, 0.0] ## Workflow See `jetson/calibration/README.md` for step-by-step instructions.
sl-perception added 1 commit 2026-03-02 08:38:49 -05:00
sl-jetson merged commit 25f2bab24a into main 2026-03-02 08:41:20 -05:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: seb/saltylab-firmware#113
No description provided.