s6.app.sim.calib

Calibrate camera intrinsics from a StructuredDataset using ChArUco.

This CLI scans a dataset directory written by StructuredDataset, detects ChArUco corners for each available camera key (L, R, B), and runs OpenCV’s cv2.calibrateCamera (with ChArUco correspondences) to estimate intrinsics and distortion.

Assumptions

  • Each dataset record contains keys among {“L”, “R”, “B”}, each mapping to a dict with an “image” NumPy array (as produced by the simulator pipeline).

  • The ChArUco board is defined in s6.utils.calibration: DICT_4X4_50, 8x8 squares, square_length=0.015m, marker_length=0.011m.

Examples

Calibrate all available cameras in a dataset and write results to <dataset>/calibration.charuco.json:

python -m s6.app.sim.calib –dataset ./data/sim_demo

Calibrate a subset and limit frames (for speed):

python -m s6.app.sim.calib –dataset ./data/sim_demo –cameras L –cameras R –max-frames 300 –min-corners 15

s6.app.sim.calib.parse_args() Namespace
s6.app.sim.calib.collect_charuco_observations(ds: StructuredDataset, cam_key: str, charuco_detector: cv2.aruco.CharucoDetector, marker_detector: cv2.aruco.ArucoDetector, min_corners: int = 20, max_frames: int | None = None, overlay_root: str | None = None) Tuple[List[ndarray], List[ndarray], Tuple[int, int], int, int]

Accumulate ChArUco detections across frames for one camera.

Returns: (all_charuco_corners, all_charuco_ids, image_size (w,h), used, total)

s6.app.sim.calib.auto_detect_cameras(ds: StructuredDataset) List[str]
s6.app.sim.calib.main() int