Expand description
High-level entry crate for the calibration-rs camera calibration library.
This crate provides a unified API for camera calibration workflows:
- Single-camera intrinsics calibration (Zhang’s method with distortion)
- Single-camera intrinsics calibration with Scheimpflug tilt
- Single-camera hand-eye calibration (camera on robot arm)
- Multi-camera rig extrinsics calibration
- Multi-camera rig + hand-eye calibration
§Quick Start
use vision_calibration::prelude::*;
use vision_calibration::planar_intrinsics::{step_init, step_optimize};
// Create calibration session
let mut session = CalibrationSession::<PlanarIntrinsicsProblem>::new();
session.set_input(dataset)?;
// Option 1: Step-by-step (recommended for inspection)
step_init(&mut session, None)?;
step_optimize(&mut session, None)?;
// Option 2: Pipeline function (convenience)
// run_planar_intrinsics(&mut session)?;
// Export results
let result = session.export()?;§Module Organization
§High-Level Calibration Workflows
session- Session framework (CalibrationSession,ProblemType)planar_intrinsics- Single-camera intrinsics (Zhang’s method)single_cam_handeye- Single camera + hand-eye calibrationrig_extrinsics- Multi-camera rig extrinsicsrig_handeye- Multi-camera rig + hand-eyelaserline_device- Single camera + laser plane devicescheimpflug_intrinsics- Single-camera planar intrinsics with Scheimpflug tilt
§Foundation Crates (Advanced Users)
core- Math types, camera models, RANSAC primitiveslinear- Closed-form initialization algorithmsoptim- Non-linear least-squares optimizationsynthetic- Synthetic data generation for testing
§Session API
All calibration workflows use the session::CalibrationSession state container.
Each problem type has its own set of step functions — see the table below
and the per-module documentation for details.
The common pattern is:
- Create a session for the problem type
- Set input data with
set_input - Optionally configure with
update_config - Run the problem-specific step functions (or a convenience
run_calibration) - Export results with
export
§Available Problem Types
| Problem Type | Input | Steps |
|---|---|---|
PlanarIntrinsicsProblem | PlanarDataset | step_init → step_optimize |
SingleCamHandeyeProblem | SingleCamHandeyeInput | step_intrinsics_init → step_intrinsics_optimize → step_handeye_init → step_handeye_optimize |
RigExtrinsicsProblem | RigExtrinsicsInput | step_intrinsics_init_all → step_intrinsics_optimize_all → step_rig_init → step_rig_optimize |
RigHandeyeProblem | RigHandeyeInput | step_intrinsics_init_all → step_intrinsics_optimize_all → step_rig_init → step_rig_optimize → step_handeye_init → step_handeye_optimize |
LaserlineDeviceProblem | LaserlineDeviceInput | step_init → step_optimize |
ScheimpflugIntrinsicsProblem | PlanarDataset | step_init → step_optimize |
Modules§
- core
- Core math types, camera models, and RANSAC primitives.
- laserline_
device - Single laserline device calibration (camera + laser plane).
- linear
- Closed-form initialization algorithms.
- optim
- Non-linear optimization with backend-agnostic IR.
- planar_
intrinsics - Planar intrinsics calibration (Zhang’s method with Brown-Conrady distortion).
- prelude
- Minimal re-exports for planar “hello world” calibration.
- rig_
extrinsics - Multi-camera rig extrinsics calibration.
- rig_
handeye - Multi-camera rig hand-eye calibration.
- scheimpflug_
intrinsics - Single-camera planar intrinsics with Scheimpflug/tilted sensor refinement.
- session
- Session framework for structured calibration workflows.
- single_
cam_ handeye - Single-camera hand-eye calibration (intrinsics + hand-eye transform).
- synthetic
- Deterministic synthetic data generation for testing.
Enums§
- Error
- Typed error returned by all public calibration step functions.
Errors returned by
vision-calibration-pipelinepublic APIs.