ETHZ native and OpenCV hand-eye benchmarks¶
These benchmarks execute all 13 Calibrex native hand-eye methods and the seven OpenCV 4 hand-eye variants on common, leakage-safe splits of the ETHZ ASL real robot-arm pose streams. The two equations use different estimands, so Calibrex publishes and ranks them separately.
Hand-eye AX=XB¶
ETHZ real hand-eye AX=XB native and OpenCV shared-split benchmark¶
| Method | Holdout rotation RMSE deg ↓ | Holdout translation RMSE mm ↓ | Failure rate | Runtime s |
|---|---|---|---|---|
| Calibrex Park-Martin | 0.867227 [0.759962, 0.958155] | 13.8759 [11.7678, 15.8266] | 0.0% | 0.153451 |
| Calibrex Tsai-Lenz | 0.875291 [0.77004, 0.967317] | 13.8652 [11.7326, 15.8293] | 0.0% | 0.126921 |
| Calibrex Daniilidis | 0.868969 [0.761845, 0.960775] | 13.8212 [11.9121, 15.6887] | 0.0% | 0.322403 |
| Calibrex Andreff | 0.867199 [0.759958, 0.958223] | 13.879 [11.7674, 15.8309] | 0.0% | 0.334728 |
| Calibrex Shiu-Ahmad | 1.6191 [0.787831, 3.10277] | 31.9219 [12.7334, 52.761] | 0.0% | 14.1537 |
| Calibrex Chou-Kamel | 0.867205 [0.759953, 0.958241] | 13.8795 [11.7684, 15.8315] | 0.0% | 0.129661 |
| Calibrex Horaud-Dornaika | 0.890804 [0.782116, 0.996268] | 14.1434 [11.8641, 16.1088] | 0.0% | 0.139859 |
| Calibrex H-D nonlinear | 0.885789 [0.777979, 0.991045] | 14.0634 [11.8408, 16.0027] | 0.0% | 19.4512 |
| OpenCV Tsai | 0.871872 [0.769051, 0.961725] | 13.8681 [11.8255, 15.6992] | 0.0% | 0.0368567 |
| OpenCV Park | 0.867225 [0.759969, 0.958144] | 13.8754 [11.7667, 15.8261] | 0.0% | 0.0280751 |
| OpenCV Horaud | 0.867203 [0.759961, 0.958229] | 13.879 [11.7674, 15.831] | 0.0% | 0.0248639 |
| OpenCV Andreff | 0.868623 [0.763653, 0.959819] | 15.4855 [13.6068, 17.338] | 0.0% | 0.0327896 |
| OpenCV Daniilidis | 0.871005 [0.764385, 0.963618] | 13.9265 [11.9635, 15.6961] | 0.0% | 0.0284915 |
Shared protocol: ethz-real-hand-eye/ax-xb/absolute-pose-split/v0.1; 5 split(s); 5000 paired bootstrap samples.
Limitations:
- The dataset has no accepted ground-truth extrinsic; closure is consistency, not absolute accuracy.
- Pairwise relative motions share absolute poses and therefore are not independent samples.
- Runtime is single-process wall time on the recorded host; Python peak memory excludes native allocator visibility.
Robot-world hand-eye AX=YB¶
ETHZ real robot-world hand-eye AX=YB native and OpenCV benchmark¶
| Method | Holdout rotation RMSE deg ↓ | Holdout translation RMSE mm ↓ | Failure rate | Runtime s |
|---|---|---|---|---|
| Calibrex Shah | 0.624739 [0.559308, 0.688861] | 10.7793 [9.53397, 11.9952] | 0.0% | 0.0206115 |
| Calibrex Li-Wang-Wu | 0.627131 [0.561467, 0.692796] | 19.651 [15.2668, 23.3423] | 0.0% | 0.0321106 |
| Calibrex Dornaika-Horaud | 0.624742 [0.559311, 0.688865] | 10.7793 [9.53399, 11.9952] | 0.0% | 0.0286939 |
| Calibrex Zhuang-Roth-Sudhakar | 0.651861 [0.569557, 0.733996] | 10.961 [9.65144, 12.1956] | 0.0% | 0.0213057 |
| Calibrex D-H nonlinear | 0.6265 [0.560987, 0.692012] | 10.7752 [9.52577, 12.0161] | 0.0% | 0.217955 |
| OpenCV Shah | 0.624739 [0.559308, 0.688861] | 10.7793 [9.53397, 11.9952] | 0.0% | 0.00343018 |
| OpenCV Li | 0.627131 [0.561467, 0.692796] | 19.651 [15.2668, 23.3423] | 0.0% | 0.00570322 |
Shared protocol: ethz-real-hand-eye/ax-yb/absolute-pose-split/v0.1; 5 split(s); 5000 paired bootstrap samples.
Limitations:
- The dataset has no accepted ground-truth extrinsic; closure is consistency, not absolute accuracy.
- AX=YB results are ranked separately from the AX=XB equation family.
- Runtime is single-process wall time on the recorded host; Python peak memory excludes native allocator visibility.
Protocol¶
- Dataset: ETHZ ASL
robot_arm_w_color_camera_real.zip, DOI10.3929/ethz-c-000788527 - Source archive SHA-256:
2454578f731e656a940ddf51017b56e8d535c58d16a50629b85326005dedd6c3 - Repetitions: seeds 0 through 4
- Per split: 32 fit and 16 holdout absolute poses
- Leakage control: absolute poses are split before relative motions are built
AX=XBnative input: the exact pairwise relative-motion convention used by OpenCV 4 (inv(A_j) A_i,inv(B_j) B_i)- Tuning: fixed defaults; outer holdout data is evaluation-only
- Failure policy: every method-by-split failure remains in the denominator
- OpenCV boundary: optional
opencv-python-headless>=4.8,<5, Apache-2.0; version4.13.0.92in the committed run
The five split means are accompanied by deterministic 95% bootstrap intervals. The pairwise relative motions share source poses, so they are not statistically independent observations; the split, rather than each pair, is the resampling unit.
Interpretation¶
On AX=XB, Calibrex Andreff has the lowest mean rotation closure RMSE and
Calibrex Daniilidis has the lowest mean translation closure RMSE. The native
Horaud-Dornaika nonlinear refinement does not win either metric and is much
slower; this negative result is retained.
On AX=YB, OpenCV Shah and native Shah are numerically equivalent on rotation.
The native nonlinear refinement has the lowest mean translation closure RMSE,
but its intervals overlap the Shah and Dornaika-Horaud results. No accepted
ground-truth extrinsic is supplied for this run, so closure measures equation
consistency rather than absolute calibration accuracy.
Reproduce¶
python3 tools/download_public_dataset.py ethz_hand_eye_robot_arm_real
python3 tools/generate_ethz_hand_eye_benchmarks.py \
data/public/ethz_hand_eye_robot_arm_real/robot_arm_w_color_camera_real.zip \
--output-dir docs/assets \
--seeds 0,1,2,3,4 \
--fit-count 32 \
--holdout-count 16
Each equation family has a raw benchmark definition, an aggregated
slac.benchmark/v0.1 artifact, and generated Markdown in docs/assets. Every
trial records the input/config/output digests, runtime, peak Python memory,
method identity, paper DOI, tool version, license, and source archive digest.