Skip to main content

Crate vision_calibration

Crate vision_calibration 

Source
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

§Foundation Crates (Advanced Users)

  • core - Math types, camera models, RANSAC primitives
  • linear - Closed-form initialization algorithms
  • optim - Non-linear least-squares optimization
  • synthetic - 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:

  1. Create a session for the problem type
  2. Set input data with set_input
  3. Optionally configure with update_config
  4. Run the problem-specific step functions (or a convenience run_calibration)
  5. Export results with export

§Available Problem Types

Problem TypeInputSteps
PlanarIntrinsicsProblemPlanarDatasetstep_initstep_optimize
SingleCamHandeyeProblemSingleCamHandeyeInputstep_intrinsics_initstep_intrinsics_optimizestep_handeye_initstep_handeye_optimize
RigExtrinsicsProblemRigExtrinsicsInputstep_intrinsics_init_allstep_intrinsics_optimize_allstep_rig_initstep_rig_optimize
RigHandeyeProblemRigHandeyeInputstep_intrinsics_init_allstep_intrinsics_optimize_allstep_rig_initstep_rig_optimizestep_handeye_initstep_handeye_optimize
LaserlineDeviceProblemLaserlineDeviceInputstep_initstep_optimize
ScheimpflugIntrinsicsProblemPlanarDatasetstep_initstep_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-pipeline public APIs.