← Back to the knowledge system
14 Robotics Grasping Multisensor System calibration

Robot Transform Chains & System Calibration

From camera pose to
robot-executable coordinates

The visual estimate CTO is one edge in a robot system. The executable pose BTO also depends on frame directions, hand–eye extrinsics, robot kinematics, TCP, time synchronization, mount rigidity, and an error budget.

01 · Frame Contract

A pose matrix is first a directed, versioned, time-stamped frame-graph edge

Use the coordinate-system topic's column-vector convention: the superscript is the output frame and the subscript is the input frame. Multiply only when adjacent frame names cancel.

Source

Who produces this edge?

Robot FK, camera calibration, PnP, SLAM, a TCP file, or manual configuration.

→
Semantics

ATB · B → A

Specify parent/child, active/passive, and row/column conventions.

→
State

unit · timestamp · covariance

m/mm, rad/deg, clock domain, valid interval, source version.

→
Validation

range · closure · task

Numerical ranges, loop closure, held-out poses, and actual contact outcomes.

Transform contract and composition
Ap=ATB Bp,ATC=ATB BTC{}^{A}\mathbf p = {}^{A}\mathbf T_{B}\,{}^{B}\mathbf p,\qquad {}^{A}\mathbf T_{C} = {}^{A}\mathbf T_{B}\,{}^{B}\mathbf T_{C}
Matrices act from right to left; the intermediate B must connect. Names such as camera_pose, extrinsic, or world_T_cam are insufficient: explicitly define the mapping direction.
SymbolPhysical meaningSystem boundaryTemporal behaviorPrimary source
B · baseRobot baseReference frame for the controller's forward kinematics; may differ from the cell world / mapUsually staticRobot controller / cell calibration
E · flangeFlange / terminal linkThe final mechanical interface defined by the robot manufacturer, distinct from the tool tipMoves with the jointsforward kinematics
U · tool / TCPTool center pointThe point / axis that performs grasping, welding, probing, or suction tasksRigidly attached to ETCP / tool calibration
C · camera opticalCamera optical frameA 6D estimator commonly outputs ᶜTₒ; RGB and depth may each have their own CDepends on mounting topologyintrinsic + extrinsic
T · calibration targetCalibration board / fiducialProvides observations of known geometry; may be fixed to the base or mounted on the flangeDetermined by the capture setuptarget detector / PnP
O · objectTarget object frameReference for model points, symmetry, and grasp relations; endpoint of online visual estimatesScene-dependentpose estimator
G · graspCandidate grasp frameDerived from O through an object-to-grasp transform; multiple equivalent candidates may existMoves with Ograsp generator
W / MCell world / mapShared reference for multiple robots, cameras, SLAM, or measurement systemsMay be static or driftsurvey / SLAM / robot-world calibration
Repeatability ≠ accuracy. A robot can return to the same wrong position every time. Hand–eye calibration can also absorb some robot-model bias within a local cell region. System calibration must distinguish repeatability, absolute accuracy, fixed extrinsics, and nonrigid errors that vary with pose / payload.

02 · Eye-in-Hand, Eye-to-Hand & Hybrid

Draw the physical connection graph before choosing unknowns and equations

The rigid bodies carrying the camera and target determine which transforms stay constant across samples. A shared API name does not replace physical modeling.

Eye-in-hand

C is rigidly mounted on E; unknown X = ᴱT꜀

Target
T is usually fixed to the cell / base
Online chain
ᴮTₒ(t) = ᴮTₑ(q,tᵣ) · ᴱT꜀ · ᶜTₒ(t꜀)
Calibration
For multiple stationary samples, Gᵢ X Oᵢ = ᴮTₜ; eliminating the constant gives AᵢⱼX = XBᵢⱼ
Strength
Close range, multiple views, less occlusion; active observation with wrist motion
Risk
Dynamic use strongly depends on robot interpolation, exposure timing, cable / bracket rigidity, and wrist-motion excitation

Eye-to-hand

C is fixed to B / W; unknown X = ᴮT꜀

Target
Observes O directly online; T may be mounted on E during calibration
Online chain
ᴮTₒ(t) = ᴮT꜀ · ᶜTₒ(t꜀)
Calibration
If T is fixed to E: X Oᵢ = Gᵢ Y, where Y = ᴱTₜ; solve base↔camera and flange↔target together
Strength
Extrinsics remain static as the robot moves; can cover a large cell and observe multiple robots
Risk
Resolution at long range, occlusion, fixed-mount drift, base/world inconsistency, and robot-world gauge

Multi-camera / hybrid

Multiple Cₖ, some fixed and some moving with E

Target
Shared targets, natural features, or overlapping object trajectories
Online chain
Choose the shortest trusted timestamped path through the frame graph; retain covariance / version on every edge
Calibration
Jointly calibrate intrinsics, camera–camera, hand–eye, robot–world, and time offsets; or calibrate blocks followed by global refinement
Strength
Complementary fields of view, recovery from occlusion, redundant closure, and online drift detection
Risk
Gauge, correlated errors, RGB-depth timing mismatch, and erroneous loop edges can contaminate the entire graph
Eye-in-hand

B ← E(q,tᵣ) ← C ← O(t꜀)

The camera edge moves with its robot-FK parent; dynamic chains require a shared physical time.

vs
Eye-to-hand

B ← C ← O(t꜀)

The camera is a static child of the base; robot E lies on a separate calibration-target or execution branch.

+
Tool chain

B ← E(q,tᵣ) ← U

TCP is independent of the camera/object chain; correct vision does not guarantee a correct tool frame.

03 · Derive AX=XB

AX=XB follows from eliminating the same static world quantity between two samples

For this eye-in-hand derivation: Gᵢ = ᴮTₑᵢ, X = ᴱT꜀, Oᵢ = ᶜTₜᵢ, and target T is fixed to the base.

Per-view physical closure
BTT=BTEi⏟GiETC⏟XCTTi⏟Oi,∀i{}^{B}\mathbf T_{T}=\underbrace{{}^{B}\mathbf T_{E_i}}_{\mathbf G_i}\underbrace{{}^{E}\mathbf T_C}_{\mathbf X}\underbrace{{}^{C}\mathbf T_{T_i}}_{\mathbf O_i},\qquad \forall i
Every sample should produce the same ᴮTₜ. Check the directions of G and O before constructing relative motions; otherwise a numerical AX=XB solution has no physical meaning.
Pairwise relative-motion equation under this convention
Gj−1Gi⏟Aij X=X OjOi−1⏟Bij\underbrace{\mathbf G_j^{-1}\mathbf G_i}_{\mathbf A_{ij}}\,\mathbf X=\mathbf X\,\underbrace{\mathbf O_j\mathbf O_i^{-1}}_{\mathbf B_{ij}}
The exact inverses in A/B depend on your G/O definitions and i,j ordering. Derive them step by step from the preceding equation instead of copying a paper or API example into different notation.
SE(3) residual used by a joint optimizer
rij(X)=Log⁡ ⁣[(AijX)−1(XBij)]∈R6\mathbf r_{ij}(\mathbf X)=\operatorname{Log}\!\left[\left(\mathbf A_{ij}\mathbf X\right)^{-1}\left(\mathbf X\mathbf B_{ij}\right)\right]\in\mathbb R^6
Rotation and translation have different dimensions. Weight them using measurement covariance, task scale, or explicit normalization. Equal weighting of radians and meters is itself a modeling choice.
Eye-to-hand with target on flange

X Oᵢ = Gᵢ Y

Both X = ᴮT꜀ and Y = ᴱTₜ are unknown. This belongs to simultaneous robot-world / hand–eye calibration; it cannot be treated as having only one unknown X.

Robot-world / hand-eye

Aᵢ X = Z Bᵢ

Papers may write AX=YB, AX=ZB, or other arrangements. Letters do not define semantics: list the frames connected by every quantity and fix the gauge.

Multi-sensor graph

loop products ≈ I

Every independent loop provides closure. Shared edges induce correlated errors, so covariance terms cannot be assumed to add independently.

Interactive Lab

Change topology, motion excitation, and dynamic conditions yourself

The three experiments ask how to compose the chain, when X can be uniquely recovered, and which error source exhausts task tolerance first. Continue adjusting parameters after selecting any preset.

Interactive · Transform Graph, AX=XB & Deployment Budget

Robot frame chains, hand–eye observability, and spatiotemporal error-budget lab

Find paths through the frame graph, solve hand–eye extrinsics with actual SE(3) constraints, and convert static, motion, and imaging errors to the TCP / target point.
ATB maps B → A frame + direction + unit + timestamp calibrate on train motions · validate on held-out poses
active composition path independent TCP branch online observation The canvas is a top view; calculations always use full 4×4 SE(3)

Active path

—

—Adjacent frame indices must cancel; derive multiplication order from the frames

Object in base

BTO translation

——

TCP in base

BTU translation

—TCP is a tool-chain branch, separate from the camera optical center and flange origin

Round trip

T · T−1 closure

—Only proves numerical inverse consistency, not correct frame semantics

Contract audit

—

——

04 · Solvers & Observability

Solver choice affects noise behavior; motion design determines solvability

Tsai, Park, Horaud, Daniilidis, and nonlinear refinement cannot create information from pure translation, a shared rotation axis, wrong directions, or a bent target.

Method familyCore ideaSuitable usesEngineering cautions
Tsai–Lenz · separableRotation first, then translation; a classical linear constructionSimple and fast; suitable for well-excited motions and low-noise initializationRotation noise propagates into translation; verify A/B, gripper↔base, and target↔camera directions in the paper and API
Park–Martin · Lie groupConstructs exact and least-squares AX=XB on SO(3) / SE(3)Clear geometric interpretation; Lie algebra can handle rotationSpecify the log branch, behavior near π, weighting, and unit scales
Horaud–Dornaika · quaternion / nonlinearCompares linear, quaternion, and simultaneous rotation–translation optimizationAn entry point to classical solver families and nonlinear refinementQuaternion signs, left/right multiplication, and rotation/translation weights are easy to mishandle
Daniilidis · dual quaternionRepresents rotation and translation together with dual quaternions and solves via SVDSolves both components together without fully separating themStill cannot fix degenerate motions, incorrect observations, or robot-kinematics bias
Andreff et al. · online / SfMKronecker / linear structure, extensible to settings without known target motionSuitable for online use and more general observation relationshipsParameter scales, noise models, and structure-recovery gauge require additional constraints
Nonlinear joint refinementDirectly minimizes target reprojection, 3D residuals, and kinematic / temporal model residuals with robust lossesCan include distortion, rolling shutter, time offsets, covariance, and outliersInitialization, gauge, and correlated-parameter trade-offs matter; lower training residuals do not imply held-out accuracy
01

Rotation-axis diversity

Include at least two nonparallel relative rotation axes, preferably covering multiple spatial directions

With only a shared rotation axis, some translation / rotation constraints along that axis are unobservable or ill-conditioned
02

Relative rotation angle

Use sufficiently large positive and negative angles while remaining safe, keeping the target visible, and ensuring stable PnP

Many tiny 1° motions are less useful than a few clear large rotations; corner / PnP noise can overwhelm the differences
03

Translation baseline and workspace

Vary camera–target distance, lateral position, wrist orientation, and lever arm

Calibrating only a small region mixes robot-kinematics bias with extrinsics and fails when extrapolated farther away
04

Observation geometry

Ensure sufficient target pixels, varied tilts, no overexposure or strong glare, and a complete corner distribution

Frontal planes, tiny distant targets, blur, or bent boards jointly bias camera/PnP and hand–eye estimation
05

Stationary sampling

After stopping, wait for mechanical vibration and auto-exposure to settle; record mid-exposure time and robot pose

Treating arrival time as exposure time during motion fits temporal bias into spatial extrinsics
06

Direction reversal and payload

Repeat forward and reverse paths at representative speeds, payloads, and cable configurations

Backlash, gravity-induced flex, thermal drift, and cable forces cannot be explained by one fixed X
07

Data splits

Hold out robot poses / workspace regions / sessions; do not validate on duplicated frames from the same stop

Adjacent-frame leakage makes closure and reprojection appear unusually stable
Held-out static-target closure
Z^i=GiX^Oi,ei=Log⁡ ⁣(Z‾−1Z^i)\widehat{\mathbf Z}_i=\mathbf G_i\widehat{\mathbf X}\mathbf O_i,\qquad \mathbf e_i=\operatorname{Log}\!\left(\overline{\mathbf Z}^{-1}\widehat{\mathbf Z}_i\right)
Report translation / rotation dispersion, P90, direction, and workspace location on robot poses excluded from estimation. Training AX=XB residuals alone miss overfitting and degeneracy.
All i,j pairs are not independent samples. N absolute samples can generate O(N²) pairs, but they share the original poses and noise. The effective sample size still depends on independent stops / trajectories / sessions; pair weighting can also amplify some original frames repeatedly.

05 · Calibration Stack

Hand–eye calibration is one part of system calibration

Separate parameter blocks and give each independent observations, validation, and versions. Joint optimization can improve consistency, but still requires gauge choices, priors, and held-out acceptance tests.

Parameter blockContentsEstimation strategyIndependent validation
Camera intrinsicK, distortion, resolution, focus / zoom / temperaturePlanar calibration at varied tilts + nonlinear reprojection; save image dimensions and camera modelReprojection, image edges, held-out views, and board flatness
Target geometry / detectorPoint coordinates, tag size, board warp, subpixel corners, and PnPMeasure the physical target; freeze detector / dictionary / corner conventionsPer-point residuals, front/back sides / IDs, and varied distances and poses
Hand–eyeᴱT꜀ or an equivalent fixed rigid edgeAX=XB / joint refinement; motion excitation comes before solver selectionHeld-out static-target closure and agreement across solvers
Robot-world / base-cameraᴮT꜀ and possibly ᵂTᴮ, ᴱTₜJointly solve AX=ZB / X Oᵢ = GᵢY with an explicitly fixed gaugeLoop closure across robots/cameras and independent measured points
TCP / target mountTip translation and tool orientation in ᴱTᵤ, ᴱTₜPivot calibration for the tip; multiple planes / poses or known axes for orientationTouch fixtures, varied approach directions / payloads
Robot kinematicsjoint zero, link geometry, encoder, compliance, backlashFactory / metrology calibration; cannot all be absorbed into hand–eye Xpose accuracy vs repeatability, workspace map, ISO-style path tests
RGB–depth / multi-cameraCᵣ↔C_d, C₁↔C₂, depth scale / biasSynchronized multiview targets / 3D planes; joint or global graph refinementRGB-depth edges, 3D plane residuals, and cross-camera closure
Temporal calibrationclock offset/skew, latency, jitter, rolling shutter readoutHardware triggering / PTP; otherwise joint temporal–extrinsic estimation with sufficiently excited motionHeld-out dynamic residuals at different speeds / directions
Pivot calibration

Recover TCP translation from a fixed tip

Keep the tool tip at one point in the base frame while changing flange orientation. Each pose satisfies:

Pivot linear relation
Bppivot=RBEi Eptip+tBEi{}^{B}\mathbf p_{\mathrm{pivot}}=\mathbf R_{BE_i}\,{}^{E}\mathbf p_{\mathrm{tip}}+\mathbf t_{BE_i}
Jointly solve for the tip coordinates in E and the pivot point in B. This does not automatically determine tool orientation; axis calibration needs plane, line, or multiple-feature constraints.
Robot kinematic boundary

A fixed X cannot explain pose-dependent errors

Joint zeros, link lengths, encoders, backlash, compliance, and thermal drift make ᴮTₑ errors vary with q / load / direction. Structured workspace residual fields call for robot-kinematics or compensation models, rather than more hand–eye degrees of freedom.

static edge:      ᴱT꜀, ᴱTᵤ, ᴮT꜀
configuration:    ᴮTₑ(q; θ_kin)
dynamic nuisance: flex(q, load, T), backlash(direction)
temporal state:   q(t), exposure(t), latency / jitter

06 · Temporal Calibration & Error Propagation

Evaluate every time-varying edge in a dynamic robot chain at the same physical instant

Camera-message arrival, exposure start/midpoint/end, robot-controller sample time, and host clocks may differ. A Δt invisible at rest becomes millimeters and degrees during motion.

texposure

When the sensor integrates light

A global shutter can use mid-exposure time; a rolling shutter also requires row-wise readout timing.

≠
tdevice

Device timestamp

May come from the camera clock; map it to a common clock using offset/skew.

≠
tarrival

When the host receives the message

Includes transport, driver, queue, and scheduling jitter; cannot directly serve as the sampling time.

→
q(t)

robot state interpolation

Interpolate joints / SE(3) at exposure time; record the interpolation method and extrapolation gate.

First-order temporal displacement
∥δp∥≈∥v∥ ∣Δt∣,∥δθ∥≈∥ω∥ ∣Δt∣\|\delta\mathbf p\|\approx \|\mathbf v\|\,|\Delta t|,\qquad \|\delta\boldsymbol\theta\|\approx \|\boldsymbol\omega\|\,|\Delta t|
For example, 8 ms at 500 mm/s gives approximately 4 mm. Angular errors also become position errors through the lever arm from camera/target to the task point.
Rotation-to-position lever arm
∥δprot∥≈∥ℓ×δθ∥≤∥ℓ∥ ∥δθ∥\|\delta\mathbf p_{\mathrm{rot}}\|\approx \|\boldsymbol\ell\times\delta\boldsymbol\theta\|\le \|\boldsymbol\ell\|\,\|\delta\boldsymbol\theta\|
The same 0.5° extrinsic error has very different task effects at lever arms of 50 mm and 800 mm.
First-order SE(3) chain perturbation
δξ≈δξ1+Ad⁡T1δξ2,Σ≈Σ1+Ad⁡T1Σ2Ad⁡T1T\delta\boldsymbol\xi \approx \delta\boldsymbol\xi_1+\operatorname{Ad}_{\mathbf T_1}\delta\boldsymbol\xi_2,\qquad \boldsymbol\Sigma \approx \boldsymbol\Sigma_1+\operatorname{Ad}_{\mathbf T_1}\boldsymbol\Sigma_2\operatorname{Ad}_{\mathbf T_1}^{\mathsf T}
This covariance form assumes two independent terms and consistent left/right perturbation conventions. Include cross terms when joint calibration creates correlated parameters instead of adding terms mechanically.
Correlated chain covariance
Σ=JΣθJT,Σθ=[Σ11Σ12Σ21Σ22]\boldsymbol\Sigma = \mathbf J\boldsymbol\Sigma_{\boldsymbol\theta}\mathbf J^{\mathsf T},\qquad \boldsymbol\Sigma_{\boldsymbol\theta}=\begin{bmatrix}\Sigma_{11}&\Sigma_{12}\\\Sigma_{21}&\Sigma_{22}\end{bmatrix}
Intrinsics, target poses, hand–eye, and time offsets are often correlated in joint optimization. Saving only an independent 6×6 covariance for each transform loses this coupling.
Error sourceTypical signatureIsolation experimentCorrective action
Hand–eye rotationPosition errors on distant targets grow with lever arm and have strong directionalityδp ≈ [p]×δθ; plot a vector field over distance / workspaceRecapture multiaxis motion; check mount rigidity and target / PnP bias
Hand–eye translationAn approximately constant shift whose direction changes under parent-frame rotationMean static-target offset in the base frame; closure across posesRe-estimate the fixed edge; avoid misattributing TCP / base errors to X
Clock offset / latencyError follows velocity, reverses sign with motion direction, and disappears at restRegress residuals against linear / angular velocity; vary speed and directionHardware synchronization, shared clocks, exposure-time interpolation, and offset/skew estimation
Rolling shutterResiduals at the top/bottom of one frame have opposite signs or vary with readout directionPer-row residual versus row/time; high-speed rotation sequencesModel readout time, reduce motion, or use a global shutter
TCP / target mountingPersistent touch / grasp offsets even when visual overlays are entirely correctPivot / touch tests; vary approach directionCalibrate ᴱTᵤ / ᴱTₜ without changing camera extrinsics
Robot accuracy / flexCommands repeat consistently but absolute positions are biased; depends on payload / pose / temperatureIndependent tracker, forward/reverse and payload slices, workspace error mapsKinematic / compliance calibration or closed-loop compensation
Intrinsic / distortionGood results at the image center but systematic edge errors; pose changes with board position in the imagePer-point reprojection and radial plots on held-out viewsFix focus/resolution, recalibrate K/distortion, and update K for crop/resize
Target / PnP biasConsistent pose biases for different target orientations or tag IDsChange boards, point sets, and PnP methods; check physical dimensions / flatnessRigid precision targets, joint refinement, robust corners, and uncertainty
Base/world mismatchEach camera is internally consistent, but coordinates fail to close across devices / cellsFrame-graph loop residuals and known measured pointsRetain a single authoritative static edge; calibrate and version ᵂTᴮ
External driftGradual degradation or occasional jumps after deploymentFixed-fiducial heartbeat, closure CUSUM, and temperature / collision logsRecalibration gates, mechanical locating pins, online status, and safe fallback

07 · Validation Ladder

Progress from algebraic consistency to independent metrology and real tasks

Validation using the same sensor, board, and trajectory may share systematic biases. Later validation levels are better able to break this shared-source self-consistency.

01

Solver residual

Whether AX=XB / reprojection fits the training motions

Necessary but insufficient; degenerate data can also yield low residuals
02

Static target closure

Compute Zᵢ = Gᵢ X Oᵢ for each held-out pose and inspect SE(3) dispersion

Directly validates the complete static eye-in-hand chain
03

Cross-solver / resampling

Whether X is stable across Tsai/Park/Daniilidis/nonlinear solvers and bootstrap subsets

Reveals ill-conditioning, outliers, and implementation-convention errors
04

Independent touch / tracker

Touch known points with the TCP, or use a laser tracker / external metrology system

Avoids self-consistency caused by errors shared by the same camera/target
05

Dynamic reversal test

Compare residuals along the same path at different speeds and in opposite directions

Separates spatial extrinsics, timing bias, backlash, and flex
06

Workspace / load / thermal map

Slice by deployed volume, payload, cable configuration, and thermal steady state

Establishes the validity domain and worst regions for a fixed X
07

Task A/B

Open loop versus visual servoing, nominal versus perturbed conditions, and real grasp/insertion trials

Maps millimeter / degree errors to task success and safety
08

Online heartbeat

Fixed targets / loop closure, timestamp health, mounting shocks, and uncertainty

Detects deployment drift and triggers abstention / recalibration

Suggested held-out calibration report

calibration_id / solver / source_commit / frame_convention
camera serial + K/distortion/resolution/focus + target asset hash
robot serial + controller/kinematic version + tool/load + temperature
motion excitation: axis spread / relative-angle distribution / workspace hull
train: reprojection + AX=XB residual + outlier list
held-out: target closure translation_xyz / rotation vector / P50/P90/max
dynamic: clock model / speed bins / direction bins / rolling-shutter config
independent: touch/tracker/task trials + failures + safety margin
valid_from / valid_until / mount event / online heartbeat threshold

08 · Open Loop, Visual Servo & Closed-Loop Operation

Closed loops correct some errors; frame and timing models still need validation

Open-loop execution relies on a single ᴮTₒ estimate; visual servoing feeds visual error into the control loop. Both must handle visibility, latency, control rate, speed limits, uncertainty, and safety interlocks.

PBVS · position-based

Generate a camera / tool twist from 6D pose error

Intuitive trajectories and compatibility with 3D targets; depends on pose and hand–eye / robot models

Pose-mode jumps, calibration bias, depth/scale errors, and large initial errors can produce incorrect Cartesian motion
IBVS · image-based

Control directly from image-feature errors and an interaction matrix

Robust to some calibration errors and better at retaining targets in view

Depth estimation, local stability regions, degenerate features, and camera retreat remain concerns
Hybrid / 2.5D

Combine image features with partial 3D pose / rotation

Balances field-of-view retention against Cartesian trajectories

Control laws, coordinate conventions, and switching conditions must agree
Closed-loop re-estimation

Repeatedly perceive–plan–execute during approach, then apply close-range corrections

Can correct some static bias and target motion

Cannot automatically fix timing mismatch, wrong frames, occlusion failure, or unsafe actions; speed / confidence gates are required
Generic visual-servo control law
vc=−λ L^+(s−s⋆)\mathbf v_c=-\lambda\,\widehat{\mathbf L}^{+}\left(\mathbf s-\mathbf s^\star\right)
s may represent image features or pose-derived features. Interaction matrix L, depth, camera–tool twist mapping, sampling delay, and saturation all affect stability.
Observe

RGB/RGB-D + timestamp

Check target visibility, sensor health, pose modes, and the confidence contract.

→
Transform

frame graph @ exposure time

Interpolate q(t) and propagate pose / calibration uncertainty into the task frame.

→
Gate

reachability · collision · risk

Acquire / slow / abstain when outside the calibration domain, error budget, or field of view.

→
Control

bounded twist / replan

Execute small steps while monitoring residual decrease, latency, and contact state.

09 · Failure Taxonomy & Release Gate

Run falsifiable isolation experiments before choosing what to recalibrate

End-effector offsets have many causes beyond 6D pose. Use stationary/moving, forward/reverse, near/far, center/edge, and light/heavy-payload comparisons to identify error sources quickly.

Accurate at rest, biased in motion

Check timing / rolling shutter first

Sweep speed and direction. If residuals follow the signs of v and ω, spatial recalibration usually treats the symptom rather than the cause.

Accurate nearby, biased farther away

Check rotation / K / lever arm first

Divide position residuals by distance and slice by image radius.

Correct visual overlays, biased touch points

Check TCP / robot accuracy first

Use an independent touch fixture and vary approach direction; leave camera extrinsics unchanged.

Accurate training poses, biased held-out workspace

Check excitation / robot model / flex

Plot workspace vector fields; inspect extrapolation beyond the calibration hull and dependence on payload / pose.

Each camera is consistent, but cameras do not close together

Check the base/world graph and shared gauge

List the unique authoritative edges and remove duplicate static-transform publishers.

Sudden change after restart / update

Check versions, serial numbers, units, and transform directions

Hash calibration files, K, tools, controllers, and mount events; add startup assertions.

Release gate · Before a robot may use a visual pose

  1. Does every transform specify parent / child, mapping direction, column/row vectors, handedness, m/mm, and rad/deg?
  2. Does the frame graph have one authoritative static path, with all loops closing within tolerance?
  3. Are the Eye-in-hand / Eye-to-hand camera and target physically fixed to the assumed rigid bodies?
  4. Are Gᵢ, Oᵢ, Aᵢⱼ, and Bᵢⱼ derived from physical closure, with API input directions verified by axis-wise projection?
  5. Do motions include at least two nonparallel rotation axes, sufficient angles and baselines, and deployment-workspace coverage?
  6. Are target size, flatness, corner / tag conventions, PnP, K/distortion, and resolution frozen?
  7. Are hand–eye, robot-world, TCP, robot kinematics, and time offset managed as distinct parameter blocks?
  8. Do timestamps represent exposure, are camera / robot clocks mapped, and is robot pose interpolated rather than taken from the nearest packet?
  9. Do held-out robot poses report static-target closure components, P90/max, and workspace distribution?
  10. Do independent touch / tracker / fixture checks break self-consistency from the same camera + target?
  11. Has dynamic validation covered representative speeds, directions, payloads, cables, temperatures, and working distances?
  12. Does the error budget map rotation×lever, vΔt, ωΔt, TCP, imaging, and correlated covariance to task tolerance?
  13. Does visual servoing have visibility, uncertainty, latency, speed, workspace, collision, and emergency gates?
  14. Is calibration bound to device serials, software/controller versions, tool/payload, hashes, validity intervals, and mount events?
  15. Are fixed-target / loop heartbeats, drift thresholds, abstain / recalibrate behavior, and rollback versions available in deployment?
  16. Has the system passed real grasp / insertion / placement trials, recording failure stages alongside mean millimeter error?
Original sources for hand–eye and spatiotemporal calibration, robot conventions, and visual servoingExpand for Tsai–Lenz, Park–Martin, Horaud, Daniilidis, Shah, Furgale, Zhang, OpenCV, REP-103, visual servoing, and ISO 9283