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:
| Level | Name | What is corrected | Typical effort | Re-do trigger |
|---|---|---|---|---|
| 1 | Joint home / encoder offset | Per-axis zero position | Minutes | Each reboot, encoder reset |
| 2 | Geometric / kinematic | DH parameters (a, α, d, θ_offset) | Hours | Factory; after collision |
| 3 | Elastic / compliance | Joint + link stiffness K_j | Hours | Payload change |
| 4 | Thermal | Drift vs motor + ambient T | Continuous | On-line during operation |
| 5 | Dynamic (inertia + friction) | M(q), C(q,q̇), τ_f | Day | Major mechanical change |
| 6 | Cell / workspace frame | TCP tool frame + part fixture | Minutes | Per 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:
- Mount SMR on tool flange via a precision adapter; offset measured to 5 µm.
- Generate 30 random poses spanning the workspace using a D-optimal design (maximize det(Φᵀ Φ)).
- At each pose, robot reports commanded joint angles q_cmd; tracker reports measured TCP position p_meas (3 components).
- 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_squareswithmethod='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:
- Move robot to 20 distinct configurations covering rotation diversity (avoid pure translation — singular).
- 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.
- 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:
- Park robot at calibration pose (arm horizontal, max moment arm).
- Apply load L_k ∈ {10, 20, 50} N; measure TCP deflection δp_k.
- Compute joint torque vector τ_k = J_g(q)ᵀ F_k (J_g = geometric Jacobian; F_k = load wrench).
- Compute joint angular deflection δθ_k from end-effector deflection back-projected: δθ_k = J_g(q)^+ δp_k.
- 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
| System | Volume | Uncertainty (1σ) | Cost band (USD) | Best use |
|---|---|---|---|---|
| Leica AT960 (laser tracker) | 0.5–80 m | ±10–25 µm + 0.5 µm/m | $130–180 k | Plant kinematic cal |
| Hexagon Absolute Tracker AT500 | 0.5–60 m | ±15 µm + 6 µm/m | $90 k | Mobile lab |
| FARO Vantage (tracker) | 0–80 m | ±16 µm + 0.8 µm/m | $110 k | Field service |
| API Radian (tracker) | 0–80 m | ±10 µm + 5 µm/m | $130 k | Aerospace |
| Zeiss CONTURA CMM | 0.7 × 0.7 × 0.6 m | ±1.5 µm | $250 k | Lab reference |
| Hexagon Crysta-Plus CMM | 0.5 × 0.6 × 0.4 m | ±2 µm | $150 k | Lab reference |
| Mitutoyo CRYSTA-Apex | 0.7 × 1 × 0.6 m | ±1.7 µm | $200 k | Lab reference |
| FARO Quantum E arm CMM | 1.2–3.7 m | ±20–100 µm | $60–90 k | Portable touch |
| Hexagon Absolute Arm | 1.2–4.5 m | ±25–80 µm | $55–95 k | Portable touch |
| GOM ATOS Q (structured light) | 0.1–2 m | ±20–50 µm | $80 k | Surface scan |
| Creaform HandyPROBE / MetraSCAN | up to 16 m³ | ±25–60 µm | $70 k | Probing + scan |
| V-STARS photogrammetry | scalable | ±15 µm + 5 µm/m | $100 k | Aerospace tooling |
| Renishaw XL-80 laser interferometer | up to 80 m linear | ±0.5 ppm | $40 k | Linear-axis cal |
| Renishaw XR20-W rotary | rotational | ±1 arcsec | $20 k | Rotary-axis cal |
| Aruco / checkerboard + camera | < 1 m | ±100–500 µm | $1–5 k | Hand-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
| Tool | Vendor | Function |
|---|---|---|
| DynaCal / RoboCal | Hexagon (Dynalog) | Tracker-driven kinematic + elastic |
| SpatialAnalyzer | API / Hexagon | 3D metrology + USMN best-fit |
| PolyWorks Inspector | InnovMetric | Portable measurement + alignment |
| CAM2 Measure / AppNexus | FARO | Arm-CMM + tracker data capture |
| AbsAcc (Absolute Accuracy) | ABB | Factory + field kinematic cal |
| RoboCal | KUKA | In-cell laser-tracker recal |
| AccuPath | Fanuc | Path-accuracy cal |
| RX-Tune | Stäubli | Kinematic cal |
| RoboDK | RoboDK | Off-line programming + cal interface |
| Vicalib / Calibu | Open-source | Hand-eye for vision-guided robots |
| scipy.optimize.least_squares | SciPy | Research / custom ID pipeline |
| Pinocchio | INRIA | Analytical 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
- kinematics-dh — DH and MDH conventions used as the parameter basis for kinematic ID.
- dynamics-rigid-body — Recursive Newton-Euler and linear-in-parameters form used for dynamic ID.
- manipulator-design — Mechanical sources of parameter error (machining tolerance, gearbox flex).
- sensors-pose-motion — Pose sensors used as calibration ground truth.
- computer-vision-robotics — Hand-eye calibration (AX=XB / AX=YB).
- manipulability-workspace — Workspace coverage informs D-optimal pose-set design.
- vibration-damping-arms — Companion topic; structural modes interact with elastic compensation.
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).