pub struct RigHandeyeProblem;Expand description
Multi-camera rig hand-eye calibration problem.
Calibrates a multi-camera rig mounted on a robot arm, including:
- Per-camera intrinsics and distortion
- Per-camera extrinsics (camera-to-rig transforms)
- Rig hand-eye transform (gripper-to-rig)
- Static target pose in robot base frame
§Conventions
cam_se3_rig= T_C_R (transform from rig to camera frame)- EyeInHand export:
gripper_se3_rig(T_G_R),base_se3_target(T_B_T) - EyeToHand export:
rig_se3_base(T_R_B),gripper_se3_target(T_G_T) - Reference camera has identity extrinsics (defines rig frame)
§Example
use vision_calibration_pipeline::session::CalibrationSession;
use vision_calibration_pipeline::rig_handeye::{
RigHandeyeProblem, step_intrinsics_init_all, step_intrinsics_optimize_all,
step_rig_init, step_rig_optimize, step_handeye_init, step_handeye_optimize,
};
let mut session = CalibrationSession::<RigHandeyeProblem>::new();
session.set_input(rig_dataset)?;
step_intrinsics_init_all(&mut session, None)?;
step_intrinsics_optimize_all(&mut session, None)?;
step_rig_init(&mut session)?;
step_rig_optimize(&mut session, None)?;
step_handeye_init(&mut session, None)?;
step_handeye_optimize(&mut session, None)?;
let export = session.export()?;Trait Implementations§
Source§impl Debug for RigHandeyeProblem
impl Debug for RigHandeyeProblem
Source§impl ProblemType for RigHandeyeProblem
impl ProblemType for RigHandeyeProblem
Source§type Config = RigHandeyeConfig
type Config = RigHandeyeConfig
Configuration parameters that control calibration behavior. Read more
Source§type Input = RigDataset<RobotPoseMeta>
type Input = RigDataset<RobotPoseMeta>
Input observations (embedded in session). Read more
Source§type State = RigHandeyeState
type State = RigHandeyeState
Problem-specific workspace for intermediate results. Read more
Source§type Output = HandEyeEstimate
type Output = HandEyeEstimate
Final calibration output (single result). Read more
Source§type Export = RigHandeyeExport
type Export = RigHandeyeExport
Export format for external consumption. Read more
Source§fn schema_version() -> u32
fn schema_version() -> u32
Schema version for forward compatibility. Read more
Source§fn validate_input(
input: &<RigHandeyeProblem as ProblemType>::Input,
) -> Result<(), Error>
fn validate_input( input: &<RigHandeyeProblem as ProblemType>::Input, ) -> Result<(), Error>
Validate input data after setting. Read more
Source§fn validate_config(
config: &<RigHandeyeProblem as ProblemType>::Config,
) -> Result<(), Error>
fn validate_config( config: &<RigHandeyeProblem as ProblemType>::Config, ) -> Result<(), Error>
Validate configuration. Read more
Source§fn validate_input_config(
input: &<RigHandeyeProblem as ProblemType>::Input,
config: &<RigHandeyeProblem as ProblemType>::Config,
) -> Result<(), Error>
fn validate_input_config( input: &<RigHandeyeProblem as ProblemType>::Input, config: &<RigHandeyeProblem as ProblemType>::Config, ) -> Result<(), Error>
Cross-validate input and config together. Read more
Source§fn on_input_change() -> InvalidationPolicy
fn on_input_change() -> InvalidationPolicy
Policy for what to clear when input changes. Read more
Source§fn on_config_change() -> InvalidationPolicy
fn on_config_change() -> InvalidationPolicy
Policy for what to clear when config changes. Read more
Source§fn export(
output: &<RigHandeyeProblem as ProblemType>::Output,
config: &<RigHandeyeProblem as ProblemType>::Config,
) -> Result<<RigHandeyeProblem as ProblemType>::Export, Error>
fn export( output: &<RigHandeyeProblem as ProblemType>::Output, config: &<RigHandeyeProblem as ProblemType>::Config, ) -> Result<<RigHandeyeProblem as ProblemType>::Export, Error>
Convert output to export format. Read more
Auto Trait Implementations§
impl Freeze for RigHandeyeProblem
impl RefUnwindSafe for RigHandeyeProblem
impl Send for RigHandeyeProblem
impl Sync for RigHandeyeProblem
impl Unpin for RigHandeyeProblem
impl UnsafeUnpin for RigHandeyeProblem
impl UnwindSafe for RigHandeyeProblem
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.