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