Data Types Quick Reference

Core Math Types

All based on nalgebra with f64 precision:

TypeDefinitionDescription
Realf64Scalar type
Pt2Point2<f64>2D point
Pt3Point3<f64>3D point
Vec2Vector2<f64>2D vector
Vec3Vector3<f64>3D vector
Mat3Matrix3<f64>3×3 matrix
Mat4Matrix4<f64>4×4 matrix
Iso3Isometry3<f64>SE(3) rigid transform

Camera Model Types

TypeParametersDescription
FxFyCxCy<S>fx, fy, cx, cyIntrinsics matrix
BrownConrady5<S>k1, k2, k3, p1, p2, itersDistortion model
Pinhole(none)Projection model
IdentitySensor(none)No sensor tilt
ScheimpflugParamstilt_x, tilt_yScheimpflug tilt
Camera<S,P,D,Sm,K>proj, dist, sensor, kComposable camera
CameraParamsprojection, distortion, sensor, intrinsicsSerializable camera description (see Serialization)

Selectors and Modes

TypeVariantsUsed by
DistortionKindNone, BrownConrady5, Rational8, ThinPrism9, Division1camera.model.distortion in every config that calibrates a camera (per camera through camera_overrides in a rig)
SensorKindIdentity, Scheimpflugcamera.model.sensor in the same configs
CameraModelSpec{ projection, distortion, sensor }camera.model in the planar, single-camera hand-eye, laserline-device, rig extrinsics and rig hand-eye configs
CameraFix{ intrinsics, projection, distortion, sensor }, each Option<Vec<String>> of parameter namescamera.fix in the same configs, and joint_optimize.fix (one per camera) of the joint rig laser solve; None keeps the model's default
CameraOverride{ camera, model, fix }camera_overrides in RigExtrinsicsConfig and RigHandeyeConfig: replaces one camera's model and fix lists (see Scheimpflug and Laser Rigs)
RobustLossNone, Huber { scale }, Cauchy { scale }, Arctan { scale }solver.robust_loss and the laser calib_loss / laser_loss
HandeyeModeEyeInHand, EyeToHandhandeye_init.handeye_mode

Observation Types

TypeFieldsDescription
CorrespondenceViewpoints_3d, points_2d, optional cov_px2D-3D correspondences (build with CorrespondenceView::new(..)?, or new_with_covariances(..)? with a PointCovariance per point)
View<Meta>obs, metaObservation + metadata
PlanarDatasetviews: Vec<View<NoMeta>>Planar calibration input
RigViewObscameras: Vec<Option<CorrespondenceView>>Per-camera observations of one rig frame
RigView<Meta>obs: RigViewObs, metaMulti-camera view
RigDataset<Meta>num_cameras, viewsMulti-camera input
ReprojectionStatsmean, rms, max, countError statistics

Shared Config Groups

Every problem's *Config embeds the same small structs by stage:

TypeFieldsPurpose
IntrinsicsInitConfigiterations, fix_k3Per-camera linear initialization; fits only the distortion terms the camera's solves estimate
SolverConfigmax_iters, verbosity, robust_lossNon-linear solve
RobotPoseConfigrefine, rot_sigma, trans_sigma, estimate_sigmaRobot-pose refinement in hand-eye bundle adjustment
HandeyeInitConfighandeye_mode, min_motion_angle_degHand-eye linear initialization
RigConfigreference_camera_idx, refine_intrinsics, refine_sensorRig frame options

Session Types

TypeDescription
CalibrationSession<P>Generic session container
SessionMetadataProblem name, version, timestamps (read via session.metadata())
LogEntryAudit log entry (timestamp, operation, success, notes; read via session.log())
ExportRecord<E>Timestamped export
InvalidationPolicyWhat to clear on input/config change

Optimization Backend Types

vision-calibration-optim keeps the IR (ProblemIR, ParamBlock, ResidualBlock, FactorKind, ManifoldKind, ...), the backend dispatch and the optimize_* entry points internal; see Backend-Agnostic IR Architecture. Each estimate carries a SolveReport (final_cost, num_iters); a config's SolverConfig (backend, max_iters, verbosity, robust_loss) sets how each stage solves.

Hand-Eye Types

TypeDescription
HandeyeModeEyeInHand or EyeToHand
RobotPoseMetabase_se3_gripper: Iso3, a view's robot pose (every hand-eye workflow)