Robot Calibration — Kinematic, Dynamic, Geometric

1. At a glance

Calibration converts a robot from its as-designed model (CAD nominal) to its as-built model (the physical machine). The process identifies and corrects systematic deviations in kinematic, elastic, thermal, and dynamic parameters using external measurements. Without calibration, an industrial 6-DOF arm typically achieves only ±0.5–5 mm absolute accuracy despite ±0.02–0.1 mm repeatability; calibrated, absolute accuracy drops to ±0.1–0.5 mm.

Five (or six) hierarchical levels:

LevelNameWhat is correctedTypical effortRe-do trigger
1Joint home / encoder offsetPer-axis zero positionMinutesEach reboot, encoder reset
2Geometric / kinematicDH parameters (a, α, d, θ_offset)HoursFactory; after collision
3Elastic / complianceJoint + link stiffness K_jHoursPayload change
4ThermalDrift vs motor + ambient TContinuousOn-line during operation
5Dynamic (inertia + friction)M(q), C(q,q̇), τ_fDayMajor mechanical change
6Cell / workspace frameTCP tool frame + part fixtureMinutesPer tool / per fixture

A calibrated arm enables off-line programming (CAD → robot without teach-pendant touch-up), multi-robot interchangeability, and task transfer (one cell’s program runs on a sister cell).


2. First principles

2.1 Repeatability vs accuracy (ISO 9283 / ISO 230)

  • Repeatability (RP): spread of TCP poses when commanded to the same target multiple times. Governed by encoder resolution + backlash + control loop jitter.
  • Accuracy (AP): distance between mean attained pose and commanded pose. Governed by model fidelity.
  • Calibration improves accuracy; it cannot improve repeatability.
  • ISO 9283:1998 defines AP, RP, AT (trajectory accuracy), RT (trajectory repeatability) under load, speed, and temperature conditions.

2.2 DH parameters and parallel-axis singularity

Standard Denavit-Hartenberg (1955) assigns 4 parameters per link: a_i (link length, mm), α_i (link twist, mrad), d_i (link offset, mm), θ_i (joint angle, mrad). For an n-DOF arm: 4n geometric parameters.

Problem: when two consecutive joint axes are nominally parallel, the d_i parameter becomes ill-defined — a small angular perturbation moves the common normal to infinity. The Jacobian column for that parameter vanishes; the identification problem becomes singular.

Hayati-Mirmirani modification (1985) adds a fifth parameter β_i (rotation about the y-axis of frame i) for the parallel case. Total per parallel link: 5 parameters; the system becomes well-conditioned. Modern practice: Modified DH (MDH, Khalil-Kleinfinger 1986) + Hayati β for parallel links.

2.3 Calibration as least-squares parameter ID

Linearize forward kinematics about nominal parameters p_0:

δx = Φ(q, p_0) · δp
  • δx ∈ ℝ^(6m) — stacked pose residuals from m measurements (3 position mm + 3 orientation mrad each)
  • δp ∈ ℝ^k — parameter error vector (k = 4n or 5n)
  • Φ ∈ ℝ^(6m × k) — identification Jacobian, partial derivatives of TCP pose wrt each parameter at each configuration

Solve overdetermined system (m ≥ k/6, in practice 30–50 poses):

δp̂ = (Φᵀ W Φ)⁻¹ Φᵀ W δx

W is the measurement-covariance weight matrix. Iterate (nonlinear), updating p ← p + δp̂ until ‖δp̂‖ < tol.

Condition number of Φᵀ Φ should be < 10^6 for a numerically stable solve; if higher, the pose set is uninformative — re-design the measurement trajectory.

2.4 Elastic deflection (Level 3)

Harmonic-drive and cycloidal gearboxes flex under joint torque τ_j:

δθ_elastic = τ_j / K_j

Typical K_j: 5 × 10^5 to 5 × 10^6 N·m/rad for industrial-size harmonic drives. Under a 50 N tool load at 1 m reach, joint 2 sees τ_2 ≈ 50 N·m, yielding δθ ≈ 0.05–0.5 mrad at the joint — which translates to 0.05–0.5 mm of TCP error per meter of reach. For aerospace drilling at ±0.2 mm absolute, this is dominant.

Linear stiffness models are usually sufficient; non-linear (preload + hysteresis) becomes important only below 1 µm or for very low-payload cobots.

2.5 Thermal compensation (Level 4)

Motor and gearbox heating cause d_i and a_i to drift by roughly 10–30 µm/K per joint. On-line correction uses motor-current integration → thermal RC model → predicted ΔT → linear ΔDH offset. Vendors (KUKA, ABB) implement this in firmware; e.g., KUKA “TempCorr”.

2.6 Dynamic parameter identification (Level 5)

Manipulator dynamics in linear-in-parameters form:

τ = Y(q, q̇, q̈) · β
  • β — vector of 10 base inertial parameters per link (1 mass, 3 COM, 6 inertia tensor components) — though only a reduced minimal inertial parameter set is identifiable (rank deficiency from kinematic structure)
  • Y — observation matrix; rows for each sample along a persistent-excitation trajectory (PE)
  • τ — joint torques measured from motor current (after gear ratio correction)

PE trajectory is a Fourier-series q(t) optimized to maximize condition number reciprocal of Yᵀ Y over a 10–30 s motion. Reference: Swevers, Verdonck, De Schutter (2007).

Friction adds Coulomb + viscous + Stribeck per joint:

τ_f = F_c·sign(q̇) + F_v·q̇ + (F_s − F_c)·exp(−(q̇/v_s)²)·sign(q̇)

CAD inertia is typically ±20% wrong; identified inertia is ±2%. The improvement enables high-bandwidth feedforward control and accurate collision detection.


3. Worked examples

3.1 Example A — Kinematic ID of a 6-DOF arm with laser tracker

  • Robot: 6R industrial arm, nominal 1.8 m reach, ABB IRB 4600-class
  • Instrument: Leica AT960 laser tracker, SMR (spherically-mounted retroreflector) on flange, σ ≈ 20 µm at 5 m range
  • Procedure:
    1. Mount SMR on tool flange via a precision adapter; offset measured to 5 µm.
    2. Generate 30 random poses spanning the workspace using a D-optimal design (maximize det(Φᵀ Φ)).
    3. At each pose, robot reports commanded joint angles q_cmd; tracker reports measured TCP position p_meas (3 components).
    4. Stack residuals: δx_i = p_meas,i − f_FK(q_cmd,i; p_0), giving 90 equations.
  • Parameter vector: 24 standard DH + 4 Hayati β (for joints 2–3 nominally parallel) = 28 parameters.
  • Solve via Levenberg-Marquardt (scipy.optimize.least_squares with method='lm').
  • Condition number κ(ΦᵀΦ) ≈ 8 × 10^5; acceptable.
  • Result: RMS residual drops from 1.6 mm (uncalibrated) to 0.31 mm after fit.
  • Largest identified offset: d_3 = 1.12 mm vs nominal (link 3 length error).

3.2 Example B — Hand-eye AX = XB

  • Setup: camera rigidly mounted on flange (eye-in-hand); checkerboard target fixed in world.
  • Unknown: X = SE(3) rigid transform from camera frame to flange frame.
  • Procedure:
    1. Move robot to 20 distinct configurations covering rotation diversity (avoid pure translation — singular).
    2. At each pose i: record robot’s flange-in-base transform B_i = T_flange→base; compute camera-to-target transform A_i = T_target→cam from checkerboard PnP.
    3. Form pairs (A_i^(−1) A_j , B_j B_i^(−1)) and solve AX = XB for X.
  • Methods: Tsai-Lenz (1989) — rotation first via axis-angle, then translation; Park-Martin (1994) — Lie-algebra closed form; Daniilidis (1999) — simultaneous via dual quaternions, best numerical conditioning.
  • Result: residual 0.5 mm + 0.1° (with 5-MP camera, 8 mm lens, 200 mm target).
  • Pitfall: parallel rotation axes between consecutive poses are degenerate — diversify rotations across all three axes.

3.3 Example C — Joint stiffness ID

  • Robot: 6-DOF arm, 50 kg payload class.
  • Instrument: Leica AT960; load fixture with 10 N, 20 N, 50 N dead weights at TCP.
  • Procedure:
    1. Park robot at calibration pose (arm horizontal, max moment arm).
    2. Apply load L_k ∈ {10, 20, 50} N; measure TCP deflection δp_k.
    3. Compute joint torque vector τ_k = J_g(q)ᵀ F_k (J_g = geometric Jacobian; F_k = load wrench).
    4. Compute joint angular deflection δθ_k from end-effector deflection back-projected: δθ_k = J_g(q)^+ δp_k.
    5. Fit: K_j = τ_k / δθ_k via least-squares.
  • Result: K_2 ≈ 1.4 × 10^6 N·m/rad (shoulder), K_3 ≈ 9 × 10^5 N·m/rad (elbow).
  • Feedforward correction: δθ_correction = τ̂(q, payload) / K_j applied before motion → residual deflection error drops from 0.4 mm to 0.08 mm at 50 N load.

4. Measurement systems

SystemVolumeUncertainty (1σ)Cost band (USD)Best use
Leica AT960 (laser tracker)0.5–80 m±10–25 µm + 0.5 µm/m$130–180 kPlant kinematic cal
Hexagon Absolute Tracker AT5000.5–60 m±15 µm + 6 µm/m$90 kMobile lab
FARO Vantage (tracker)0–80 m±16 µm + 0.8 µm/m$110 kField service
API Radian (tracker)0–80 m±10 µm + 5 µm/m$130 kAerospace
Zeiss CONTURA CMM0.7 × 0.7 × 0.6 m±1.5 µm$250 kLab reference
Hexagon Crysta-Plus CMM0.5 × 0.6 × 0.4 m±2 µm$150 kLab reference
Mitutoyo CRYSTA-Apex0.7 × 1 × 0.6 m±1.7 µm$200 kLab reference
FARO Quantum E arm CMM1.2–3.7 m±20–100 µm$60–90 kPortable touch
Hexagon Absolute Arm1.2–4.5 m±25–80 µm$55–95 kPortable touch
GOM ATOS Q (structured light)0.1–2 m±20–50 µm$80 kSurface scan
Creaform HandyPROBE / MetraSCANup to 16 m³±25–60 µm$70 kProbing + scan
V-STARS photogrammetryscalable±15 µm + 5 µm/m$100 kAerospace tooling
Renishaw XL-80 laser interferometerup to 80 m linear±0.5 ppm$40 kLinear-axis cal
Renishaw XR20-W rotaryrotational±1 arcsec$20 kRotary-axis cal
Aruco / checkerboard + camera< 1 m±100–500 µm$1–5 kHand-eye, R&D

The Leica AT960 with T-Mac (active 6-DOF probe) gives full pose (position + orientation) at 1 kHz — strongly preferred over SMR-only (position only), as orientation residuals make ID Jacobians better-conditioned.


5. Calibration types in practice

5.1 Level 1 — Joint home / encoder offset

  • Mechanical reference notches; or vendor-supplied mastering fixtures (KUKA EMD electronic mastering device; ABB axis calibration kit).
  • Single absolute encoder per axis avoids the need for re-mastering after power loss; multi-turn battery-backed encoders are standard on industrial arms.
  • Cobots (UR, Franka): factory-mastered; user re-mastering requires service.

5.2 Level 2 — Geometric / kinematic

  • Tracker- or arm-CMM-driven; 30–50 D-optimal poses.
  • Output: updated DH (or MDH + Hayati β) loaded into controller as “absolute accuracy” model.
  • Vendor options: ABB Absolute Accuracy (AbsAcc), KUKA RoboCal, Fanuc AccuPath, Stäubli RX-Tune.

5.3 Level 3 — Elastic compliance

  • Identified per arm, per major mass + payload class.
  • Compensation: feedforward δθ_load(q, F̂_payload) applied at trajectory-planning stage.
  • Required for aerospace drilling, friction-stir welding, robotic machining (cutting forces 100–500 N).

5.4 Level 4 — Thermal

  • Warm-up cycle (15–30 min run-in motion) before precision tasks; brings gearboxes to operating temperature where ΔT settles.
  • On-line model: T_motor → ΔL_link via thermal expansion coefficient (steel 12 × 10⁻⁶ /K, aluminum 23 × 10⁻⁶ /K).

5.5 Level 5 — Tool / TCP

  • 3-point or 4-point method: jog robot so TCP touches a fixed reference point from 3+ orientations; solve constrained least-squares for TCP offset in flange frame.
  • 4–5 points reduce sensitivity to operator pose choice; standard accuracy ±0.1–0.3 mm.

5.6 Level 6 — Workspace / cell coordinate frame

  • 3-point part-fixture frame (origin + X-axis-point + XY-plane-point).
  • Or master-piece scan with PolyWorks / Spatial Analyzer: best-fit CAD-to-as-built rigid transform.

5.7 Hand-eye calibration (AX = XB / AX = YB variants)

  • Eye-in-hand: solve AX = XB.
  • Eye-to-hand (stationary camera): solve AX = YB (both X = world-to-base and Y = camera-to-target unknown).
  • Open-source libraries: Calibu, Vicalib, OpenCV calibrateHandEye (Tsai, Park, Horaud, Daniilidis, Andreff implementations).

6. Dynamic identification

6.1 Persistent-excitation trajectory design

  • Parameterize each joint as truncated Fourier series q_j(t) = q_j,0 + Σ_k (a_jk sin(kω_f t) + b_jk cos(kω_f t)/(kω_f)).
  • Optimize coefficients (a, b) to minimize cond(Yᵀ Y) subject to joint position, velocity, acceleration, torque limits.
  • Period 10–30 s; sample at 100–500 Hz; collect q, q̇, q̈ (numerically differentiate q with Savitzky-Golay).

6.2 Minimal inertial parameter set

  • Khalil-Dombre (2002) gives algorithm to reduce 10n parameters to the identifiable subset (typically 36 for a 6-DOF arm + 10 for tool).
  • Non-identifiable combinations are absorbed into the identifiable ones; cannot be separated without dis-assembly.

6.3 Friction model fit

  • Slow constant-velocity sweeps (-q̇_max to +q̇_max) over each joint with others locked → record τ vs q̇ → fit Stribeck curve.
  • Stribeck velocity v_s typically 0.01–0.05 rad/s; F_s/F_c ratio 1.2–2.0.

6.4 Tools

  • MATLAB Robotics System Toolbox + System Identification Toolbox
  • Peter Corke’s Robotics Toolbox (open-source MATLAB / Python)
  • Pinocchio (INRIA, C++/Python): efficient analytical derivatives, used in TSID, Crocoddyl
  • Featherstone’s spatial-algebra library
  • Symoro+ (INRIA) — symbolic robot modeling for ID

7. Software / commercial tools

ToolVendorFunction
DynaCal / RoboCalHexagon (Dynalog)Tracker-driven kinematic + elastic
SpatialAnalyzerAPI / Hexagon3D metrology + USMN best-fit
PolyWorks InspectorInnovMetricPortable measurement + alignment
CAM2 Measure / AppNexusFAROArm-CMM + tracker data capture
AbsAcc (Absolute Accuracy)ABBFactory + field kinematic cal
RoboCalKUKAIn-cell laser-tracker recal
AccuPathFanucPath-accuracy cal
RX-TuneStäubliKinematic cal
RoboDKRoboDKOff-line programming + cal interface
Vicalib / CalibuOpen-sourceHand-eye for vision-guided robots
scipy.optimize.least_squaresSciPyResearch / custom ID pipeline
PinocchioINRIAAnalytical Jacobians for ID

8. Edge cases and gotchas

  • Pose-set sensitivity is uneven: D-optimal design is essential; random poses leave Φ ill-conditioned and over-fit local regions.
  • Sensor uncertainty propagates non-linearly: camera intrinsic σ multiplies with tracker σ in hand-eye; budget total error before promising accuracy.
  • Backlash dead-band is not captured by elastic K_j; mitigate with directional approach (always approach target from same side) or pre-load.
  • Gearbox flex is non-linear with load and direction (hysteresis); single linear K_j is a first-order fit; for >50 kg payload arms consider piecewise.
  • Drift over time + temperature: re-verify monthly with TCP touch on a fixed reference.
  • Recalibration triggers: any collision (even minor — encoder slip possible), tool change > 5 kg, ambient ΔT > 10 K from last cal, age (annual minimum).
  • Multi-robot cell calibration: each robot calibrated independently, then a cell-level alignment ties all bases into a common frame via tracker; residual ≈ 0.2–0.5 mm.
  • Calibrate in operation pose vs at home: vendors sometimes cal at home pose only; verify accuracy at task pose because elastic + thermal differ.
  • Coordinate frame conventions: standard DH (Craig 2005) vs Modified DH (Khalil-Kleinfinger 1986) vs URDF / SDF (ROS, free-form). Mismatch is a common bug source — confirm convention before loading parameters into a controller.
  • Joint encoder slip: mechanical detachment between motor and encoder shaft after collision — looks like an offset error but recurs and grows. Replace coupling.
  • Manufacturer absolute-accuracy spec sheets: Universal Robots UR5e ±0.05 mm repeatability but absolute can drift to ±5 mm un-calibrated; ABB IRB 6700 ±0.05 mm rep / ±0.5–2 mm abs uncal / ±0.5 mm cal with AbsAcc.

9. Case studies

9.1 ABB Absolute Accuracy (AbsAcc) factory option

  • Each arm individually measured on a Leica AT960 station at ABB factory; 50–100 pose set; identified DH + elastic + gear-ratio errors loaded as serial-number-specific parameter file.
  • Spec: ±0.5 mm absolute accuracy across workspace at rated payload + temperature.
  • Used in: laser cutting, spot welding (where path is generated from CAD without teach), composite layup.

9.2 KUKA RoboCal — in-cell recovery after collision

  • Cell-installed laser tracker (Leica AT500) on a dolly.
  • Operator runs RoboCal wizard; 30-pose automated sweep takes 15 minutes.
  • Identified DH parameters auto-loaded into KUKA controller; cell returns to production at certified accuracy.
  • Used in: BMW, Mercedes body-in-white plants where collisions during model changeover are routine.

9.3 Aerospace cell — Boeing 777X composite drilling

  • Robot: 7-axis KUKA Titan + Electroimpact custom end-effector.
  • Required absolute accuracy: ±0.2 mm over 4 m fuselage skin.
  • Cal regime: full kinematic + elastic monthly with laser tracker; TCP probe verification daily; thermal warm-up cycle every shift; cell base alignment to part fixture before each panel.
  • Achieved: ±0.15 mm absolute, sustained.

10. Cross-references


11. Citations

  • Mooring B.W., Roth Z.S., Driels M.R. — Fundamentals of Manipulator Calibration, Wiley, 1991. Canonical reference for geometric calibration.
  • Hayati S., Mirmirani M. — “Improving the absolute positioning accuracy of robot manipulators,” Journal of Robotic Systems 2(4), 1985. Parallel-axis modification.
  • Khalil W., Kleinfinger J. — “A new geometric notation for open and closed-loop robots,” IEEE ICRA, 1986. Modified DH.
  • Tsai R.Y., Lenz R.K. — “A new technique for fully autonomous and efficient 3D robotics hand/eye calibration,” IEEE Trans. Robotics & Automation 5(3), 1989.
  • Park F.C., Martin B.J. — “Robot sensor calibration: solving AX=XB on the Euclidean group,” IEEE Trans. Robotics & Automation 10(5), 1994.
  • Daniilidis K. — “Hand-eye calibration using dual quaternions,” International Journal of Robotics Research 18(3), 1999.
  • Wang H., Liu Y., Tang K. — Review of kinematic calibration techniques. International Journal of Advanced Manufacturing Technology, 2003.
  • Khalil W., Dombre E. — Modeling, Identification and Control of Robots, Hermes Penton / Butterworth-Heinemann, 2002. Canonical robot modeling + identifiable-parameter set.
  • Swevers J., Verdonck W., De Schutter J. — “Dynamic model identification for industrial robots,” IEEE Control Systems Magazine 27(5), 2007. PE trajectory design.
  • Featherstone R. — Rigid Body Dynamics Algorithms, Springer, 2008. Spatial-algebra basis for analytical Jacobians.
  • ISO 9283:1998 — Manipulating industrial robots — Performance criteria and related test methods.
  • ISO 230 series — Test code for machine tools (accuracy, thermal, geometric).