Skip to page content
SAVRN
Search Plan a project

Dataset · Robotics

KinHEC

by Alexander Ezharjan ezharjan/KinHEC

is a large-scale, fully synthetic, ground-truth-complete benchmark for the two classical sensor-calibration problems of robotics, hand-eye calibration, A X = X B, and simultaneous robot-world / hand-eye calibration, A X = Y B, together with their…

Rows—
Configurations—
Size20.1 GB
Licensemit
AccessPublicly accessible
Monthly Downloads—

Dataset Card

By Alexander Ezharjan, published under mit, revision cce243b0b7a9.

KinHEC: Kinematic Trajectory Benchmark for Hand-Eye and Robot-World Calibration

Toolkit on GitHub | pip install kinhec | MIT license

KinHEC is a large-scale, fully synthetic, ground-truth-complete benchmark for the two classical sensor-calibration problems of robotics,

  • hand-eye calibration, A X = X B, and
  • simultaneous robot-world / hand-eye calibration, A X = Y B,

together with their spatio-temporal extension (unknown clock offset between the robot and the camera). Instead of images, every sequence consists of two time-stamped pose streams, the robot flange trajectory (from forward kinematics of real manipulator models) and the pose of the observed reference in the camera, both as exact ground truth and as measurements corrupted by physically motivated noise models. This isolates the numerical calibration problem from image processing so that solvers can be compared under precisely controlled conditions: sensor noise, motion degeneracy, temporal misalignment, outliers, unknown monocular scale, systematic robot model errors and image-formation (PnP) realism.

this copy
tier full
sequences 77,628
robot-stream frames 171,175,655
camera-stream frames 40,399,527
size on disk 50.1 GB
manipulators 13 kinematic models + a free-floating 6-DoF generator
produced by kinhec 1.0.1, global seed 20260909

The smoke/small tiers are meant for testing; the full tier (77,628 sequences, more than 500 factor levels across eight tracks) is the benchmark proper. All tiers come from the same deterministic generator, so any copy can be regenerated or extended with the commands in Regenerating and extending.

Quick start

pip install kinhec huggingface_hub
hf download Ezharjan/KinHEC --repo-type dataset --local-dir kinhec_data
from kinhec import load_manifest, load_sequence, solvers, se3

man = load_manifest("kinhec_data")                       # one row per sequence, every factor as a column
seq = load_sequence("kinhec_data", "noise-000000", man)  # both streams and the ground truth
A, B = seq.axxb_motions()                                # relative motions between keyframes
X = solvers.park_martin(A, B)                            # solve A X = X B
print(se3.pose_error(X, seq.X))                          # rotation error [deg], translation error [mm]

--include restricts the download to what a study needs, which matters because the whole copy is 50.1 GB:

hf download Ezharjan/KinHEC --repo-type dataset --local-dir kinhec_data --include "sequences.parquet" "robot/noise-*.parquet" "camera/noise-*.parquet" "robots.json" "cameras_targets.json" "generation_info.json"

Why another calibration dataset?

Hand-eye calibration papers usually report results on a few hundred simulated pose pairs with isotropic Gaussian noise plus one or two in-house recordings. Real recordings (e.g. the ETH ASL hand-eye datasets of Furrer et al. 2017, or the image sets of Koide and Menegatti 2019) are valuable but small, tied to one robot/camera pair and without ground truth for the calibration itself. The consequences are well documented (Ali et al. 2019; Enebuse et al. 2021): rankings of the classical solvers change from paper to paper, robustness claims are hard to verify, and learning-based solvers lack training data. KinHEC addresses this with

  1. ground truth for everything: the hand-eye transform X, the robot-world transform Y, the true clock offset, the monocular scale, per-frame outlier and visibility labels, the true (perturbed) DH parameters of "uncalibrated" robots, and the exact robot pose at every camera instant;
  2. kinematic realism: 13 published manipulator models (Universal Robots CB3/e-Series, Franka Emika Panda, KUKA LBR iiwa 7/14, ABB IRB 120, PUMA 560) with joint limits and speed caps, smooth joint-space excitation, move-and-dwell station captures, and IK-feasible "look-at" poses that keep the target in the field of view of a pinhole camera;
  3. systematic factor sweeps (eight tracks) that give robustness curves instead of single numbers, including a controllable degeneracy dial (cone half-angle of the rotation axes) and systematic robot-model errors that no i.i.d. noise model reproduces;
  4. both configurations (eye-in-hand and eye-to-hand) and both formulations (AX=XB on relative motions, AX=YB on absolute poses) from the same files;
  5. a reference toolkit with eleven baseline solvers (Tsai-Lenz, Park-Martin, Horaud-Dornaika, Daniilidis, Andreff, Shah, Li, non-linear and RANSAC variants, time-offset estimation), a fixed evaluation protocol and a validation tool, so that numbers are comparable across papers.

Tracks

track sequences factor levels camera frames what is varied
noise 5,120 20 1,587,200 Sensor-noise robustness: grid of robot (flange twist) noise x camera (anisotropic pose) noise levels on continuous joint-space trajectories and on look-at station captures (target visible at every station).
motion 3,580 215 522,800 Motion design and degeneracy: controlled rotation-axis diversity (cone half-angle), rotation magnitude and number of poses (Cartesian families); joint-subset excitation on real arms (parallel axes, wrist only, single joint); number-of-stations sweep.
temporal 2,592 144 821,003 Spatio-temporal calibration: asynchronous streams at native controller rates with clock offsets, time-stamp jitter and frame drops.
outliers 1,760 44 52,800 Robustness to gross errors: outlier fraction x outlier model (random pose, planar-ambiguity flip, gross Gaussian) x heavy-tailed (Student-t) noise.
monocular 640 16 384,000 Structure-from-motion / visual-odometry input: camera translations known up to an unknown scale (with optional scale drift) and random-walk (drift) noise.
robot_error 1,536 24 46,080 Systematic robot errors: joint-encoder noise and uncalibrated DH parameters (link length and angle errors) reported through the nominal kinematic model.
pnp 2,400 100 60,000 Image-formation realism: pixel noise on projected target points followed by PnP refinement, for several camera resolutions and target sizes, on look-at trajectories with guaranteed target visibility.
mixed 60,000 sampled 36,925,644 Random configurations sampled from the whole factor space (robots, families, noise models, outliers, timing, scale) for training and stress tests.

Sequences per robot in this copy:

robot sequences
free6d 6,399
iiwa14 6,686
iiwa7 5,472
irb120 6,598
panda 6,631
puma560 5,861
ur10 4,265
ur10e 5,943
ur16e 4,341
ur20 4,453
ur3 4,380
ur3e 4,401
ur5 5,908
ur5e 6,290

Configurations: eye_in_hand: 47,778, eye_to_hand: 29,850. Trajectory families: cartesian_cone: 3,728, joint_sinusoid: 28,802, joint_waypoints: 19,640, lookat: 24,516, proposal_sine: 942. Camera noise models: pnp: 7,827, se3_gaussian: 54,729, vo_drift: 15,072.

Named noise levels

The level string of a sequence names the factors its track sweeps: noise names the two noise levels (robot=r2|camera=c3), while the other systematic tracks hold the noise fixed and name their own factors instead (cone=10|rot=8-15|n=20, offset=0.05|rate=30|jitter=0.002|drop=0.1, pixel_std=0.5|camera=hd|target=...). Whatever the level string says, the numeric values are in the per-sequence columns robot_rot_std_rad, robot_trans_std_m, joint_std_rad, dh_len_std_m, dh_ang_std_rad, camera_rot_std_rad, camera_trans_std_m, camera_trans_std_z_m and pixel_std, each of which is 0 or NaN where the corresponding model is not active (the robot_error track, for instance, uses joint_gaussian and dh_error, so its robot_rot_std_rad and robot_trans_std_m are 0).

Robot levels (flange-frame twist noise, standard deviations):

level rotation [deg] translation [mm]
r0 0.000 0.00
r1 0.011 0.10
r2 0.029 0.30
r3 0.115 1.00
r4 0.286 3.00

Camera levels (target orientation noise; translation noise in the camera frame, lateral x/y and along the optical axis z):

level rotation [deg] lateral [mm] depth [mm]
c0 0.000 0.00 0.00
c1 0.029 0.30 1.00
c2 0.115 1.00 3.00
c3 0.286 3.00 10.00
c4 0.573 6.00 20.00
c5 1.146 12.00 40.00

(Values taken from configs/full.yaml, the tier definition that produced this copy. A tier names every level it might use; the levels that a given track actually sweeps are the ones that appear in its level strings, so the noise-free r0 and c0 are defined here but unused in the systematic tracks.)

Coordinate frames and conventions

  • T_a_b is the 4x4 homogeneous pose of frame b expressed in frame a (p_a = T_a_b p_b). In the files a pose is stored as px, py, pz [m] and a unit quaternion qw, qx, qy, qz with qw >= 0.
  • Frames: base (robot base), ee (robot flange), cam (camera optical frame, OpenCV convention: x right, y down, z forward), target (the observed reference, see below), world (fixed frame in which Y is expressed).
  • Robot stream (robot/*.parquet): time stamps on the robot clock (the reference clock), joint positions (true, and as read from the encoders) and the flange pose T_base_ee (ground truth and reported/measured).
  • Camera stream (camera/*.parquet): time stamps on the camera clock, and T_cam_target, the pose of the observed reference in the camera frame (what a PnP / marker detector or a VO system actually measures), ground truth and measured. The reference is
  • the static calibration board (world_frame = target, eye-in-hand),
  • the marker mounted on the flange, seen by a static camera (world_frame = target, eye-to-hand), or
  • the origin of the visual-odometry frame, i.e. the first camera pose (world_frame = vo_origin, monocular sequences).

world_frame therefore distinguishes a fixed physical reference from a VO origin, not eye-in-hand from eye-to-hand; the configuration column does that. * Ground truth (sequences.parquet): X_* and Y_* as position + quaternion.

configuration X Y A_i B_i identity
eye-in-hand T_ee_cam (camera on the flange) T_base_world (board or VO origin in the base) T_base_ee(i) T_target_cam(i) = inv(T_cam_target(i)) A_i X = Y B_i
eye-to-hand T_ee_marker (marker on the flange) T_base_cam (static camera in the base) T_base_ee(i) T_cam_marker(i) = T_cam_target(i) A_i X = Y B_i

Relative motions for A X = X B follow from two pairs i, j: A = inv(A_i) A_j, B = inv(B_i) B_j (the toolkit method Sequence.axxb_motions() builds them with keyframe selection).

Time: a camera frame captured at true (robot-clock) time t_gt is stamped t = t_gt + time_offset_s + jitter; the column t_gt and the ground-truth flange pose at t_gt are stored in the camera table so that the temporal and the spatial parts of the problem can be evaluated separately. Synchronous sequences have identical clocks and frame-aligned rows in the two tables.

Files

README.md  LICENSE  CITATION.cff
sequences.parquet, sequences.csv     index: one row per sequence (ground truth, factor levels, file locations)
robot/<track>-<shard>.parquet        robot stream (one row group per sequence)
camera/<track>-<shard>.parquet       camera stream (one row group per sequence)
robots.json                          kinematic models (DH tables, limits, speed caps, sources)
cameras_targets.json                 camera intrinsics and calibration-target presets
generation_info.json, configs/       tier configuration that produced this copy
benchmarks/                          baseline results (results.parquet/csv, leaderboard.md, summary.json,
                                     protocol.json)
figures/                             overview figures

sequences.parquet (index)

One row per sequence with: identifiers (sequence_id, track, level, seed, generator_version), the setup (robot, dof, configuration, family, world_frame, camera, target), sampling (sampling_mode continuous|stations, sync, duration_s, robot_rate_hz, camera_rate_hz, n_robot_frames, n_camera_frames, n_visible_frames, n_outlier_frames), timing ground truth (time_offset_s, time_jitter_std_s, camera_drop_fraction), monocular scale and scale_drift_std, the noise factors (robot_noise_models, robot_rot_std_rad, robot_trans_std_m, joint_std_rad, dh_len_std_m, dh_ang_std_rad, camera_noise_model, camera_rot_std_rad, camera_trans_std_m, camera_trans_std_z_m, pixel_std, student_t_dof, outlier_fraction, outlier_model), the ground truth X_px..X_qz, Y_px..Y_qz, the motion descriptors (n_motions, axis_scatter_lambda2, axis_scatter_lambda3, mean_rot_angle_deg, max_rot_angle_deg, mean_trans_m, translation_cond), the file locations (robot_file, camera_file, *_row_group) and the complete generation recipe (config_json, extra_json: trajectory parameters, keyframe indices, true DH parameters, per-frame scale, camera intrinsics, target geometry). sequences.csv is the same table without the two JSON columns.

axis_scatter_lambda2 is the second eigenvalue of the scatter matrix of the rotation axes of the keyframe motions, each weighted by the square of its rotation angle (0 = all axes parallel = rotation of X unobservable; 1/3 = isotropic). translation_cond is the condition number of the stacked [R_A - I] blocks, infinite for pure translations; being a ratio of singular values it is scale invariant, so it describes the directional diversity of the rotation axes and should be read together with mean_rot_angle_deg, which carries the magnitude that decides how strongly measurement noise is amplified into t_X. Both rate columns are NaN for station-based sequences, whose two streams share the dwell instants.

robot stream columns

column meaning
sequence_id sequence identifier (-)
frame 0-based frame index within the sequence
t time stamp on the robot clock [s] (reference clock)
q_meas joint positions as read from the encoders [rad] (with noise when the 'joint_gaussian' model is active; empty list for the free-floating 'free6d' generator)
q_gt true joint positions [rad] (empty list for 'free6d')
base_ee_gt_* ground-truth flange pose T_base_ee: position [m] + unit quaternion (w,x,y,z)
base_ee_meas_* flange pose reported by the robot (with kinematic noise / systematic model error)

camera stream columns

column meaning
sequence_id sequence identifier
frame 0-based camera frame index
t time stamp recorded by the camera [s] = t_gt + time_offset_s + jitter
t_gt true capture instant on the robot clock [s]
base_ee_gt_* ground-truth flange pose at t_gt (oracle synchronisation)
cam_target_gt_* ground-truth pose T_cam_target of the observed reference in the camera frame
cam_target_meas_* measured T_cam_target (NaN when no measurement, e.g. target not visible in 'pnp' mode)
visible target visible according to the camera/target model
outlier measurement replaced by an outlier
n_points number of target points inside the image
depth_m distance of the target centre along the optical axis [m]
view_angle_deg angle between the board normal and the line of sight [deg]
reproj_rmse_px reprojection RMSE of the PnP estimate [px] ('pnp' model only, else NaN)

Loading the data

The toolkit (pip install kinhec) reads a copy on disk and returns numpy arrays with the ground truth attached:

from kinhec import load_manifest, load_sequence, solvers, se3

man = load_manifest("kinhec_data")                                # pandas DataFrame, one row per sequence
pnp = man[(man.track == "pnp") & (man.pixel_std == 0.5)]          # filter on any factor column
seq = load_sequence("kinhec_data", pnp.sequence_id.iloc[0], man)
A_abs, B_abs = seq.axyb_poses()                                   # absolute pose pairs for A X = Y B
X, Y = solvers.shah(A_abs, B_abs)
print(se3.pose_error(X, seq.X), se3.pose_error(Y, seq.Y))

Plain PyArrow and pandas, without the toolkit (one row group per sequence, so a single sequence is read without touching the rest of the shard):

import pyarrow.parquet as pq

man = pq.read_table("kinhec_data/sequences.parquet").to_pandas()
row = man.iloc[0]
robot = pq.ParquetFile("kinhec_data/" + row.robot_file).read_row_group(int(row.robot_row_group)).to_pandas()
camera = pq.ParquetFile("kinhec_data/" + row.camera_file).read_row_group(int(row.camera_row_group)).to_pandas()

The Hugging Face datasets library, streaming straight from the Hub (one configuration per track and stream, as listed by the dataset viewer):

from datasets import load_dataset

index = load_dataset("Ezharjan/KinHEC", "sequences", split="train")
robot = load_dataset("Ezharjan/KinHEC", "robot_noise", split="train", streaming=True)
camera = load_dataset("Ezharjan/KinHEC", "camera_noise", split="train", streaming=True)

Manipulator models

name DoF DH convention controller rate [Hz] reach [m] description and joint limits
ur3 6 standard 125 0.500 UR3 (CB3), 6-DoF collaborative arm; limits [deg]: [-360, 360], [-360, 360], [-360, 360], [-360, 360], [-360, 360], [-360, 360]
ur5 6 standard 125 0.850 UR5 (CB3), 6-DoF collaborative arm; limits [deg]: [-360, 360], [-360, 360], [-360, 360], [-360, 360], [-360, 360], [-360, 360]
ur10 6 standard 125 1.300 UR10 (CB3), 6-DoF collaborative arm; limits [deg]: [-360, 360], [-360, 360], [-360, 360], [-360, 360], [-360, 360], [-360, 360]
ur3e 6 standard 500 0.500 UR3e (e-Series); limits [deg]: [-360, 360], [-360, 360], [-360, 360], [-360, 360], [-360, 360], [-360, 360]
ur5e 6 standard 500 0.850 UR5e (e-Series); limits [deg]: [-360, 360], [-360, 360], [-360, 360], [-360, 360], [-360, 360], [-360, 360]
ur10e 6 standard 500 1.300 UR10e (e-Series); limits [deg]: [-360, 360], [-360, 360], [-360, 360], [-360, 360], [-360, 360], [-360, 360]
ur16e 6 standard 500 0.900 UR16e (e-Series); limits [deg]: [-360, 360], [-360, 360], [-360, 360], [-360, 360], [-360, 360], [-360, 360]
ur20 6 standard 500 1.750 UR20 (e-Series); limits [deg]: [-360, 360], [-360, 360], [-360, 360], [-360, 360], [-360, 360], [-360, 360]
panda 7 modified 1000 0.855 Franka Emika Panda, 7-DoF (flange frame, without hand); limits [deg]: [-166, 166], [-101, 101], [-166, 166], [-176, -4], [-166, 166], [-1, 215], [-166, 166]
iiwa7 7 standard 500 0.800 KUKA LBR iiwa 7 R800, 7-DoF; limits [deg]: [-170, 170], [-120, 120], [-170, 170], [-120, 120], [-170, 170], [-120, 120], [-175, 175]
iiwa14 7 standard 500 0.820 KUKA LBR iiwa 14 R820, 7-DoF; limits [deg]: [-170, 170], [-120, 120], [-170, 170], [-120, 120], [-170, 170], [-120, 120], [-175, 175]
irb120 6 standard 250 0.580 ABB IRB 120, 6-DoF industrial arm (joint zero = ABB calibration pose: tool0 at (0.374, 0, 0.630) m, orientation quaternion (0.7071, 0, 0.7071, 0)); limits [deg]: [-165, 165], [-110, 110], [-110, 70], [-160, 160], [-120, 120], [-400, 400]
puma560 6 standard 100 0.880 Unimation PUMA 560, 6-DoF (standard-DH model of the Robotics Toolbox, including the 0.67183 m pedestal); limits [deg]: [-160, 160], [-110, 110], [-135, 135], [-266, 266], [-100, 100], [-266, 266]
free6d - - - - Free-floating end-effector (Cartesian trajectory families without a kinematic chain)

reach [m] is the manufacturer's nominal working radius, measured to the wrist point; it is used only as a conservative bound when sampling reachable poses, and the flange can be a little further out at full extension. Joint zero conventions follow the manufacturers' tables (UR: official DH article; Panda: Franka Control Interface documentation, Craig's convention, flange 0.107 m beyond joint 7; iiwa: standard DH with the link lengths 0.34/0.40/0.40/0.126 m (iiwa 7) and 0.36/0.42/0.40/0.126 m (iiwa 14), cross-checked against the iiwa_stack URDF; IRB 120: the published 290/270/70/302/72 mm table with joint zero at the ABB calibration pose, tool0 at (0.374, 0, 0.630) m; PUMA 560: Corke's Robotics Toolbox model). The forward kinematics of the toolkit is checked against independent implementations (reference poses from the Robotics Toolbox for Python, a chain built from the iiwa_stack URDF) to better than 1e-9 m and 1e-9 rad. The joint-speed caps are nominal values used only to bound the generated motions (the generator uses at most 25 % of them, 35 % in the temporal track).

Camera and target presets

preset width height f [px] HFOV [deg] description
vga 640 480 525 62.7 640x480, f=525 px (RGB-D style sensor, HFOV ~63 deg)
hd 1280 720 920 69.6 1280x720, f=920 px (HFOV ~70 deg)
fhd 1920 1080 1400 68.9 1920x1080, f=1400 px (HFOV ~69 deg)
industrial_5mp 2448 2048 3200 41.9 2448x2048, f=3200 px (2/3in sensor, 11 mm lens, HFOV ~42 deg)
preset points (cols x rows) pitch [mm] kind min. visible points description
checker_7x5_20mm 7x5 20 checkerboard 35 A4 printout: 7x5 inner corners, 20 mm squares (0.12 x 0.08 m)
checker_9x6_25mm 9x6 25 checkerboard 54 Classic 9x6 inner corners, 25 mm squares (0.20 x 0.125 m)
grid_10x8_60mm 10x8 60 grid 12 Large marker grid (ChArUco/AprilGrid-like): 10x8 points, 60 mm pitch (0.54 x 0.42 m)
marker_2x2_40mm 2x2 40 grid 4 Single fiducial marker, 40 mm side (eye-to-hand flange marker)
marker_3x3_30mm 3x3 30 grid 6 Small marker cluster, 3x3 points, 30 mm pitch (eye-to-hand flange marker)

Visibility of a target requires all points (checkerboards) or at least the minimum number of points (grids / markers) to project inside the image with a 5 px margin, a depth between 0.1 m and 5 m and a viewing angle below 75 deg between the board normal and the line of sight. Visibility is computed for every sequence; for the pnp noise model a measurement exists only for visible frames, for the other noise models the flag is informative (the camera stream then represents a generic 6-DoF pose sensor). Sequences with world_frame = vo_origin have no board: visible is always true and n_points, depth_m, view_angle_deg are 0 / NaN.

Generation pipeline

For every sequence, with a private random generator seeded from seed:

  1. Hand-eye transform X: camera (eye-in-hand) 2-12 cm in front of the flange, lateral offset up to 8 cm, optical axis within 40 deg of the flange z-axis, random roll; marker (eye-to-hand) 0-10 cm along the flange z-axis with a lateral offset up to 5 cm, normal within 30 deg of the flange z-axis.
  2. Trajectory (continuous in time): * joint_sinusoid: every excited joint follows a sum of sinusoids (two harmonics by default, three with higher frequencies in the temporal track) around a configuration near the robot's home pose; amplitudes stay inside the joint limits and below 25-35 % of the joint-speed caps; optional joint subsets (single, parallel = two joints with parallel axes, two_axes, wrist, all), with non-excited joints held at the home configuration; * joint_waypoints: random joint-space waypoints connected by minimum-jerk segments with dwell times (move-stop-capture); station-based sampling records one frame per dwell; * lookat: observing poses (camera on a spherical cap in front of the board, or marker facing the static camera), converted to flange poses with the true X, Y and solved by damped-least-squares IK inside the joint limits; connected as joint_waypoints. For the free-floating free6d there is no chain to invert, so the observing poses are used directly and connected as Cartesian segments; * cartesian_cone (robot free6d): keyframe rotations R_k = R_{k-1} exp(theta_k a_k) whose axes a_k lie in a cone of given half-angle around a random axis (0 deg = single-axis rotations, fully degenerate); * proposal_sine (robot free6d): sinusoidal translation and Slerp between random keyframe rotations, the generator of the original KinHEC proposal document.
  3. World reference Y: for lookat sampled first (board on a table in front of the robot, tilted towards it; static camera 0.9-1.6 m from the workspace centre); for the other families placed after the trajectory by drawing 25 candidate placements (board at the gaze point of a frame, facing the camera / static camera facing the marker) and keeping the one visible at the largest number of about 60 frames sampled evenly along the trajectory.
  4. Clocks: synchronous sequences share one clock at the camera rate; asynchronous sequences have the robot stream at the controller rate (capped at 500 Hz) and camera frames with a random phase, clock offset, Gaussian jitter and random drops. Station sequences record the dwell instants only.
  5. Exact poses of both streams and of T_cam_target from X, Y and the flange trajectory.
  6. Robot measurement models (robot_noise_models): se3_gaussian - flange-frame twist noise T_meas = T exp(xi), xi ~ N(0, diag(rot_std^2 I, trans_std^2 I)); joint_gaussian - Gaussian noise on the joint readings propagated through the kinematics; dh_error - the true geometry differs from the nominal DH model by Gaussian errors on a, d (dh_len_std_m) and on alpha, theta_offset (dh_ang_std_rad); poses are reported with the nominal model, so the error is smooth, pose dependent and systematic. The perturbed parameters are stored in extra_json.true_dh.
  7. Camera measurement models (camera_noise_model): se3_gaussian - translation noise in the camera frame with per-axis standard deviations (camera_trans_std_m lateral, camera_trans_std_z_m along the optical axis) and a right (target-frame) rotation perturbation with camera_rot_std_rad; pnp - the target points are projected with the true pose, Gaussian pixel noise pixel_std is added and the pose is re-estimated by Levenberg-Marquardt minimisation of the reprojection error (verified against OpenCV's iterative PnP), giving depth-dominated, pose-dependent, rotation/translation-correlated errors; vo_drift - noisy relative motions integrated into a random walk. The se3_gaussian and vo_drift models become multivariate Student-t when student_t_dof is set; the joint-encoder noise and the PnP pixel noise are always Gaussian, and in the shipped tiers only the camera stream ever uses heavy tails.
  8. Monocular scale (scale > 1 or < 1): the camera translations in the VO frame are multiplied by scale (times a multiplicative random walk with scale_drift_std); the ground truth keeps the metric poses.
  9. Outliers: a fraction outlier_fraction of the measurements is replaced (outlier flag) by a random pose (random_pose), by the mirrored solution of the planar pose ambiguity (planar_flip, board normal reflected about the line of sight) or by a gross Gaussian error (gross).
  10. Descriptors of the keyframe motions (see the index columns) and packing into the tables.

Evaluation protocol and baselines

The protocol implemented in kinhec benchmark is identical for every solver: pair the streams (row-wise for synchronous sequences; for asynchronous sequences interpolate the measured robot stream at t - offset with the ground-truth offset, oracle, or with the offset estimated by angular-speed cross-correlation, estimated; that estimate comes with a confidence in time_offset_peak_corr, and the estimated results include the sequences where the correlation finds no peak, so filter on it before quoting a clock-offset accuracy), keep frames with a measurement, select keyframes at least 5 deg or 2 cm apart (at most 200; if fewer than three survive that filter, every paired frame is used), feed consecutive keyframe motions to A X = X B solvers and absolute keyframe poses to A X = Y B solvers, and report the geodesic rotation error [deg] and the Euclidean translation error [mm] of X (and Y).

succ. in the leaderboard counts the sequences for which a solver returned a finite estimate, which on the degenerate parts of the motion and outliers tracks it always does: a closed-form solver returns an orthonormal X whatever the data, so read the median errors, not the success rate, as the measure of whether a track was solved.

Median rotation error of X [deg] / median translation error of X [mm] per track, computed on 77,628 sequences of this copy with the ground-truth clock offset (oracle synchronisation). Full tables per solver, per factor level and with estimated time offsets: benchmarks/leaderboard.md; raw per-sequence results: benchmarks/results.parquet. andreff_scale, the eleventh baseline, applies only to the monocular sequences and is reported there rather than in this table.

track tsai_lenz park_martin horaud_dornaika daniilidis andreff park_martin+lm ransac_park_martin shah li_kronecker shah+lm
noise 0.381 / 4.31 0.218 / 3.70 0.216 / 3.69 0.291 / 4.27 0.216 / 3.69 0.212 / 3.68 0.415 / 6.57 0.102 / 1.67 0.102 / 1.67 0.100 / 1.67
motion 0.930 / 19.37 0.711 / 17.24 0.718 / 17.24 0.320 / 16.47 0.718 / 17.25 0.255 / 14.52 0.298 / 15.79 0.424 / 8.38 0.424 / 8.38 0.174 / 7.48
temporal 0.287 / 2.81 0.132 / 2.41 0.132 / 2.41 0.168 / 2.96 0.132 / 2.41 0.122 / 2.42 0.154 / 3.80 0.064 / 1.11 0.064 / 1.11 0.060 / 1.10
outliers 8.642 / 34.91 4.894 / 30.25 4.714 / 30.09 5.560 / 32.56 3.311 / 30.14 5.152 / 32.61 0.078 / 1.07 2.487 / 19.93 2.487 / 19.93 3.822 / 22.29
monocular 0.223 / 213.01 0.114 / 213.01 0.114 / 213.01 0.956 / 212.83 0.114 / 213.01 0.519 / 213.02 0.330 / 302.62 0.074 / 254.40 0.074 / 254.40 0.810 / 257.07
robot_error 0.115 / 1.27 0.115 / 1.28 0.113 / 1.27 0.114 / 1.24 0.113 / 1.27 0.112 / 1.26 0.114 / 1.27 0.102 / 1.06 0.102 / 1.06 0.103 / 1.06
pnp 0.117 / 0.62 0.109 / 0.62 0.113 / 0.62 0.115 / 0.60 0.113 / 0.62 0.112 / 0.63 0.097 / 0.61 0.083 / 0.41 0.083 / 0.41 0.084 / 0.41
mixed 1.559 / 18.56 0.485 / 10.28 0.481 / 10.27 1.198 / 18.89 0.480 / 10.51 0.553 / 10.29 0.348 / 7.40 0.320 / 5.13 0.319 / 5.13 0.365 / 5.34

Figures

The dataset

How one sequence is generated, from the ground-truth hand-eye transform to the two Parquet streams.

Composition of this copy, and the distribution of the motion descriptors that decide how well X is observable.

The manipulator models at their home configurations.

Sequence motion-002000 in the robot base frame: arm, flange path, camera frustums and the observed reference.

Sequence noise-000000 in the robot base frame: arm, flange path, camera frustums and the observed reference.

Sequence pnp-000180 in the robot base frame: arm, flange path, camera frustums and the observed reference.

The two streams of a sequence over time, ground truth and measurements, each on its own clock.

The measurement errors injected into that sequence, per component.

The pnp noise model in the image plane: target points projected with the true and with the measured pose.

Angular speed of the two streams of an asynchronous sequence, before and after clock-offset estimation.

Baseline results

Median translation error of X per track for the baseline solvers (oracle synchronisation).

Track noise: error against the camera noise level.

Track motion: error against the cone half-angle of the rotation axes, the degeneracy dial (0 deg leaves the rotation of X unobservable).

Track outliers: error against the outlier fraction, where the RANSAC baseline separates from the closed-form solvers.

Track temporal: error against the clock offset between the two streams.

Track robot_error: error against uncalibrated DH link-length errors.

Track pnp: error against pixel noise on the projected target points.

Calibration error against the motion descriptors of the individual sequences.

Regenerating and extending the dataset

This copy is not a recording: it is the output of a deterministic program, and the program is public.

pip install kinhec
kinhec plan --tier full                            # sequences per track
kinhec generate --tier full --out data_full --workers 8   # resumable; finished shards are skipped
kinhec validate data_full                          # integrity checks (see below)
kinhec benchmark data_full --workers 8             # baseline results into data_full/benchmarks
kinhec visualize data_full                         # the figures shown above
kinhec card data_full                              # refresh this README from the index
kinhec export data_full <sequence_id> --format csv # per-sequence CSV / TUM export

Every sequence is seeded from the tier's global seed and its own id, and shards are generated independently, so the result depends on neither the number of workers nor the order of execution. This copy was produced by kinhec 1.0.1, and the generator is unchanged in the current release, so the commands above regenerate the same sequences from the same seeds. Results are identical on a given platform and dependency set; across platforms and library versions the last few digits of a floating-point value can differ, as they do for any numerical pipeline.

Cost on the reference machine (a consumer desktop CPU, --workers 8): the full tier takes about 30 h to generate, roughly 11 s of single-core time per sequence on average, and the eleven baselines over all 77,628 sequences take about 7 h. The smaller tiers are minutes (smoke, 46 sequences; small, 562) to a few hours (medium, 9 996). A tier is a YAML file listing the factor levels of every track; copy one to build a custom tier (--tier my_tier.yaml), or raise repeats_multiplier to enlarge every track proportionally.

Validation

kinhec validate <data_dir> checks the presence of all files, the index against the shard row groups, the schemas, strictly increasing time stamps, orthonormal rotations and unit quaternions, the consistency of the frame/visibility/outlier counts, the temporal ground truth, that the forward kinematics of the true joint positions (with the true DH parameters of dh_error sequences) reproduces the ground-truth flange poses, and the exact identity A_i X = Y B_i on every camera frame of every sequence (tolerance 1e-7 deg / 1e-6 mm). The generated tiers ship validated.

Limitations

  • Purely kinematic: no images, no dynamics/compliance, no calibration-target detection errors beyond the pixel-noise + PnP model and the planar-flip outlier model (an approximation of the two-fold ambiguity).
  • The camera is an ideal pinhole with exactly known intrinsics: the pnp track models the geometry of image formation and its error structure, not lens distortion or the residual error of an intrinsic calibration.
  • X and Y are exactly constant within a sequence; mounting flex and thermal drift are not modelled.
  • Noise levels are chosen to bracket published sensor characteristics, not measured on a specific device.
  • Self-collisions and workspace obstacles are not modelled; joint limits and speed caps are.
  • The dh_error model perturbs all DH parameters independently; real geometric errors are correlated.

Citation

@misc{kinhec2026,
  title  = {KinHEC: A Kinematic Trajectory Benchmark for Hand-Eye and Robot-World Calibration},
  author = {Aizierjiang Aiersilan},
  year   = {2026},
  note   = {Dataset and toolkit},
  url    = {https://huggingface.co/datasets/Ezharjan/KinHEC}
}

Key references for the problem and for the implemented baselines: Shiu and Ahmad (1989); Tsai and Lenz (1989); Chou and Kamel (1991); Park and Martin (1994); Zhuang, Roth and Sudhakar (1994); Horaud and Dornaika (1995); Dornaika and Horaud (1998); Daniilidis (1999); Andreff, Horaud and Espiau (2001); Li, Wang and Wu (2010); Shah (2013); Tabb and Ahmad Yousef (2017); Furrer et al. (2017); Schweighofer and Pinz (2006) and Collins and Bartoli (2014) for the planar pose ambiguity. Full bibliographic details, including the sources of every kinematic model, are listed in the toolkit README.

License

MIT License, Copyright (c) 2026 Aizierjiang Aiersilan. See LICENSE.

Details

Repository
ezharjan/KinHEC
Publisher
Alexander Ezharjan
Task category
Robotics
Tags
robotics, hand-eye-calibration, robot-world-calibration
Size category
10K<n<100K
Languages
en
Revision
cce243b0b7a92aaac8398ff94c7efc6745b327ba
Last updated
2026-09-22

Files

501 files, 20.1 GB in total.

Data477 files · 20.1 GB
Documentation3 files · 105.4 KB
Other20 files · 2.3 MB
Repository1 file · 2.6 KB
Every file
FileTypeSizeSHA-256
benchmarks/protocol.jsonData1.0 KB—
benchmarks/results.csvData298.0 MB4cd5567a4cd6
benchmarks/results.parquetData35.0 MBc2905cf3254a
benchmarks/summary.jsonData28.7 KB—
camera/mixed-00000.parquetData32.1 MB6536310e6896
camera/mixed-00001.parquetData29.7 MBa5b024802722
camera/mixed-00002.parquetData32.9 MBf04c22099059
camera/mixed-00003.parquetData26.5 MBea3f6c5037de
camera/mixed-00004.parquetData25.6 MB5dde86d57188
camera/mixed-00005.parquetData27.8 MB33143e5679c9
camera/mixed-00006.parquetData26.3 MBc5b278e421ae
camera/mixed-00007.parquetData32.8 MB31274cdf94af
camera/mixed-00008.parquetData32.4 MBe09274bcb012
camera/mixed-00009.parquetData26.8 MB408c9c1cd88a
camera/mixed-00010.parquetData29.4 MBf2e36119e80a
camera/mixed-00011.parquetData24.8 MB588ee3b27172
camera/mixed-00012.parquetData32.5 MBfb70dee26daf
camera/mixed-00013.parquetData36.7 MB98baf21a23c4
camera/mixed-00014.parquetData26.4 MB5bd40e96249f
camera/mixed-00015.parquetData28.6 MB7800c8946a1f
camera/mixed-00016.parquetData30.2 MB14ebd8bf70eb
camera/mixed-00017.parquetData27.7 MBf2746a97a217
camera/mixed-00018.parquetData27.4 MBa69ab5efe54a
camera/mixed-00019.parquetData22.8 MB7a4f938575e7
camera/mixed-00020.parquetData30.3 MBbe10d5f1949b
camera/mixed-00021.parquetData30.9 MB4ca699d42ec5
camera/mixed-00022.parquetData29.7 MBca5bdb2696d1
camera/mixed-00023.parquetData29.6 MBdac81aa77d74
camera/mixed-00024.parquetData32.1 MBf326ea465162
camera/mixed-00025.parquetData29.6 MBe327bd2e9a51
camera/mixed-00026.parquetData30.8 MB34263c868bd1
camera/mixed-00027.parquetData27.6 MB76c680747013
camera/mixed-00028.parquetData27.8 MB318e81191d60
camera/mixed-00029.parquetData30.2 MBad5b8b0c31e0
camera/mixed-00030.parquetData29.8 MBeb4dffb17584
camera/mixed-00031.parquetData32.2 MBa264c7fae320
camera/mixed-00032.parquetData32.2 MB16eedec1c9cf
camera/mixed-00033.parquetData24.7 MBedb25636fde2
camera/mixed-00034.parquetData29.9 MBed76ae95d097
camera/mixed-00035.parquetData28.5 MBc8a86aa84606
camera/mixed-00036.parquetData29.5 MBbd32a86a9c64
camera/mixed-00037.parquetData25.9 MB950dc23a85eb
camera/mixed-00038.parquetData27.8 MBa499a6e5d078
camera/mixed-00039.parquetData26.1 MBb968a745335b
camera/mixed-00040.parquetData33.3 MB0410f3e5458e
camera/mixed-00041.parquetData26.3 MBf3a4bd1c75e1
camera/mixed-00042.parquetData29.8 MB3d4891c06ac1
camera/mixed-00043.parquetData27.1 MB8d061f574319
camera/mixed-00044.parquetData26.0 MBa8bcc170396a
camera/mixed-00045.parquetData29.9 MB3dc1d9fe587d
camera/mixed-00046.parquetData32.1 MBf09c66ad9d0f
camera/mixed-00047.parquetData25.2 MB984b5c10dc0a
camera/mixed-00048.parquetData28.1 MBbefb13e17893
camera/mixed-00049.parquetData29.3 MB6f92d4613850
camera/mixed-00050.parquetData29.7 MBd01149eed47e
camera/mixed-00051.parquetData26.4 MBb242f28e0f84
camera/mixed-00052.parquetData25.1 MB11e4de617bd7
camera/mixed-00053.parquetData30.7 MB054196b0a077
camera/mixed-00054.parquetData29.7 MB56eb5bf16b41
camera/mixed-00055.parquetData31.1 MB30765fc665e9
camera/mixed-00056.parquetData31.2 MB4b95c9249a74
camera/mixed-00057.parquetData27.9 MBe4e9c8e74962
camera/mixed-00058.parquetData28.2 MB92d786a2f63f
camera/mixed-00059.parquetData25.4 MBb2288fb4d137
camera/mixed-00060.parquetData22.5 MB417be3e4bf54
camera/mixed-00061.parquetData29.4 MB00dbe4dc79d6
camera/mixed-00062.parquetData27.3 MB9894dfc35e0c
camera/mixed-00063.parquetData33.0 MB8f2bfece5cdf
camera/mixed-00064.parquetData33.5 MBefca37dad0b7
camera/mixed-00065.parquetData26.6 MB3de787f5772f
camera/mixed-00066.parquetData23.7 MBf15f84d0ef2b
camera/mixed-00067.parquetData26.0 MBf2266e2418fb
camera/mixed-00068.parquetData24.3 MBe11024e1fe59
camera/mixed-00069.parquetData22.9 MBec5a75150b1e
camera/mixed-00070.parquetData28.0 MBd5869500c3f6
camera/mixed-00071.parquetData25.0 MBec263cff52b6
camera/mixed-00072.parquetData30.2 MBb76497f94232
camera/mixed-00073.parquetData27.9 MB3abb2a753b0c
camera/mixed-00074.parquetData24.4 MBd1cda7c554ea
camera/mixed-00075.parquetData25.9 MB269f88a84aef
camera/mixed-00076.parquetData30.6 MB97f271765a21
camera/mixed-00077.parquetData24.6 MBb756490982bc
camera/mixed-00078.parquetData27.4 MB63c5c03f39ca
camera/mixed-00079.parquetData28.3 MBc1e8ae3f9ddb
camera/mixed-00080.parquetData24.5 MB6b4c8ea68fd5
camera/mixed-00081.parquetData27.0 MBcda686777d90
camera/mixed-00082.parquetData25.5 MB4238dd62eaa1
camera/mixed-00083.parquetData26.1 MBc988c6f87a57
camera/mixed-00084.parquetData26.3 MB1c2a07de6c37
camera/mixed-00085.parquetData30.9 MB1cbdf40786f6
camera/mixed-00086.parquetData28.4 MB7f495fa99717
camera/mixed-00087.parquetData24.6 MBefafc57c0544
camera/mixed-00088.parquetData27.6 MBeb074f681fe4
camera/mixed-00089.parquetData31.4 MBe171bf08aded
camera/mixed-00090.parquetData31.5 MB55aa0a8beb93
camera/mixed-00091.parquetData26.1 MB4f22fb15fe05
camera/mixed-00092.parquetData29.6 MBfab4afa86f05
camera/mixed-00093.parquetData27.3 MB8f2a9d4ecb94
camera/mixed-00094.parquetData29.5 MB18eb9cd039bf
camera/mixed-00095.parquetData25.0 MBaf590d2411b2
camera/mixed-00096.parquetData27.1 MB426180a47b5f
camera/mixed-00097.parquetData25.0 MB2045e00616e4
camera/mixed-00098.parquetData31.4 MBed40d0c1e083
camera/mixed-00099.parquetData30.6 MB0764b4b23eea
camera/mixed-00100.parquetData32.0 MBb99893432388
camera/mixed-00101.parquetData27.8 MBaeaf6e730f13
camera/mixed-00102.parquetData27.3 MB0974389e0503
camera/mixed-00103.parquetData30.0 MBcb1e6ffb4892
camera/mixed-00104.parquetData30.1 MB285b1ed65826
camera/mixed-00105.parquetData30.8 MB42c51050da89
camera/mixed-00106.parquetData31.0 MB0a0170860ebd
camera/mixed-00107.parquetData25.1 MB1f221ccb1ffe
camera/mixed-00108.parquetData27.7 MB720c918a6207
camera/mixed-00109.parquetData29.6 MB0f128fa0ed78
camera/mixed-00110.parquetData33.0 MB066cb6c25582
camera/mixed-00111.parquetData29.3 MB22816f1fc5da
camera/mixed-00112.parquetData30.6 MBa223004fdb8d
camera/mixed-00113.parquetData29.0 MBb07368607699
camera/mixed-00114.parquetData28.8 MB3388da4c7796
camera/mixed-00115.parquetData26.5 MBbea7c9e31ad3
camera/mixed-00116.parquetData27.9 MB8a7776a506dd
camera/mixed-00117.parquetData24.9 MB85e7c26a0757
camera/mixed-00118.parquetData28.4 MB5e00e2d1e1e7
camera/mixed-00119.parquetData25.4 MBc176d4c9cac1
camera/mixed-00120.parquetData28.5 MB842eeee53e83
camera/mixed-00121.parquetData33.1 MB349c9a0a1d6f
camera/mixed-00122.parquetData29.6 MB6f563c492176
camera/mixed-00123.parquetData24.5 MB3f718a230e1f
camera/mixed-00124.parquetData31.6 MBbf9d5f9909dd
camera/mixed-00125.parquetData28.1 MB6b5bdc2596fa
camera/mixed-00126.parquetData28.1 MB0fc1e8c01195
camera/mixed-00127.parquetData31.7 MB406de333ffd3
camera/mixed-00128.parquetData32.9 MBfd5b84fe96be
camera/mixed-00129.parquetData34.6 MB2eb9317122a7
camera/mixed-00130.parquetData27.5 MB5a2c3f46c0b9
camera/mixed-00131.parquetData35.4 MBe9505a2e36a7
camera/mixed-00132.parquetData29.9 MBee30c8f1b1b5
camera/mixed-00133.parquetData30.0 MB9f5e3e38068f
camera/mixed-00134.parquetData33.4 MB1c0d97afc0b6
camera/mixed-00135.parquetData27.1 MB1259626be9de
camera/mixed-00136.parquetData25.3 MB1f9fa0d8eb63
camera/mixed-00137.parquetData29.8 MB92c62ab7e027
camera/mixed-00138.parquetData28.5 MB039fe17bb83b
camera/mixed-00139.parquetData27.7 MB3e9ca435ea16
camera/mixed-00140.parquetData30.2 MB9d5beb7c6a13
camera/mixed-00141.parquetData26.5 MB46464baf056b
camera/mixed-00142.parquetData28.7 MB3568e5f76182
camera/mixed-00143.parquetData31.5 MBe5bb71333a2a
camera/mixed-00144.parquetData29.3 MBe49c072e3e5e
camera/mixed-00145.parquetData27.6 MB790a4ca310b4
camera/mixed-00146.parquetData28.1 MB5cf5b93b0dde
camera/mixed-00147.parquetData27.9 MB788c0e0325e7
camera/mixed-00148.parquetData26.0 MBea49230f7cfc
camera/mixed-00149.parquetData30.8 MBb0b389ee1fa6
camera/mixed-00150.parquetData30.8 MB9afa9dbbe0b6
camera/mixed-00151.parquetData26.3 MB0ab26e3d50fd
camera/mixed-00152.parquetData29.3 MB9edba4879bb0
camera/mixed-00153.parquetData28.0 MBb7bdc724a011
camera/mixed-00154.parquetData27.3 MB233fa8902e68
camera/mixed-00155.parquetData26.8 MBe836215a1732
camera/mixed-00156.parquetData24.4 MBca14a1e7b4a0
camera/mixed-00157.parquetData22.9 MB7e5ba23d0b99
camera/mixed-00158.parquetData32.5 MBb8c98930cf90
camera/mixed-00159.parquetData26.7 MB2e7ee2700d10
camera/mixed-00160.parquetData27.6 MB74cd5260072c
camera/mixed-00161.parquetData25.5 MB853d505ea969
camera/mixed-00162.parquetData26.2 MB9d747a4a9ae7
camera/mixed-00163.parquetData31.1 MB94602e768f9f
camera/mixed-00164.parquetData27.6 MB7a5763ca1824
camera/mixed-00165.parquetData28.5 MB94a7a048792c
camera/mixed-00166.parquetData30.7 MB3c6d6e522e36
camera/mixed-00167.parquetData29.3 MB44cc798337fe
camera/mixed-00168.parquetData28.5 MBf98f4fd0dd50
camera/mixed-00169.parquetData25.6 MB83926709d564
camera/mixed-00170.parquetData28.2 MB3c3cf7d54a32
camera/mixed-00171.parquetData25.7 MBf72ba1de0140
camera/mixed-00172.parquetData30.9 MB5e76056191ed
camera/mixed-00173.parquetData31.4 MB66a31a73e780
camera/mixed-00174.parquetData26.9 MB24b6777cc671
camera/mixed-00175.parquetData30.7 MB5222b01a42a4
camera/mixed-00176.parquetData26.7 MB708c750a098b
camera/mixed-00177.parquetData25.1 MBec8b567ee5d0
camera/mixed-00178.parquetData25.2 MBf1f12bcf24ca
camera/mixed-00179.parquetData24.8 MBebf4996dc68c
camera/mixed-00180.parquetData29.1 MBe25ee091ba9f
camera/mixed-00181.parquetData25.6 MB8ce8208d68b2
camera/mixed-00182.parquetData27.2 MB7b9f867efd9d
camera/mixed-00183.parquetData25.5 MB6b79399542b7
camera/mixed-00184.parquetData29.9 MB468fdca54212
camera/mixed-00185.parquetData27.9 MB7b5f514bdd57
camera/mixed-00186.parquetData30.1 MB70fbdaa1f9ce
camera/mixed-00187.parquetData28.4 MBd632d28902b1
camera/mixed-00188.parquetData33.1 MBaa2b27fcaf34
camera/mixed-00189.parquetData29.2 MB06d451275b23
camera/mixed-00190.parquetData26.0 MB298ca2449364
camera/mixed-00191.parquetData29.3 MBa2bdff4afbf3
camera/mixed-00192.parquetData27.3 MB17d4a6ca47b6
camera/mixed-00193.parquetData28.6 MB26bac57c4996
camera/mixed-00194.parquetData29.2 MBfe8d0dfca534
camera/mixed-00195.parquetData26.7 MB4f7748927ecd
camera/mixed-00196.parquetData28.8 MB81ce03d1209d
camera/mixed-00197.parquetData27.0 MB614bd3712991
camera/mixed-00198.parquetData29.8 MB16eab87211ad
camera/mixed-00199.parquetData28.6 MB3c33fdff31ee
camera/mixed-00200.parquetData23.9 MBed5d91ce6829
camera/mixed-00201.parquetData27.8 MBab0cf1f402d6
camera/mixed-00202.parquetData24.9 MBfbf241cefc83
camera/mixed-00203.parquetData28.9 MB00374868338b
camera/mixed-00204.parquetData28.9 MB53231d53b1b6
camera/mixed-00205.parquetData30.7 MB32fd4bcef768
camera/mixed-00206.parquetData27.5 MB477d73707d61
camera/mixed-00207.parquetData28.2 MB85aaa5aed785
camera/mixed-00208.parquetData25.7 MB8f01763b32d1
camera/mixed-00209.parquetData26.4 MB5a0d52cd9950
camera/mixed-00210.parquetData32.8 MB350613730d32
camera/mixed-00211.parquetData30.4 MB2ab5ecb28a94
camera/mixed-00212.parquetData32.5 MBcd3860894171
camera/mixed-00213.parquetData32.3 MBaa2fcea36faf
camera/mixed-00214.parquetData32.6 MBa7b4e305b008
camera/mixed-00215.parquetData25.3 MBece120118424
camera/mixed-00216.parquetData27.7 MB364ab64d6e3c
camera/mixed-00217.parquetData29.0 MBf06cca316851
camera/mixed-00218.parquetData30.1 MB99dadc59849b
camera/mixed-00219.parquetData25.3 MB5b6694c37244
camera/mixed-00220.parquetData26.0 MBdfe3a82f3a1f
camera/mixed-00221.parquetData31.0 MBa53d7a57d818
camera/mixed-00222.parquetData26.6 MBe402d3cffcc1
camera/mixed-00223.parquetData27.2 MB822394eb0072
camera/mixed-00224.parquetData28.4 MB54155d1d36ee
camera/mixed-00225.parquetData31.1 MB60803181f4f0
camera/mixed-00226.parquetData26.4 MB65474cc448d1
camera/mixed-00227.parquetData24.8 MBbfee2f431209
camera/mixed-00228.parquetData26.8 MBb8a5f3e2e674
camera/mixed-00229.parquetData35.2 MB2a577ed36d46
camera/mixed-00230.parquetData24.9 MB1e51d96bf449
camera/mixed-00231.parquetData23.9 MBdde1e91e4962
camera/mixed-00232.parquetData28.9 MB8ea54f038154
camera/mixed-00233.parquetData29.6 MB05b8c11d585b
camera/mixed-00234.parquetData29.2 MB9759f632a4f0
camera/mixed-00235.parquetData29.4 MB0bca4c16019b
camera/mixed-00236.parquetData34.3 MB932889a64e25
camera/mixed-00237.parquetData26.8 MB44e8c655f4c6
camera/mixed-00238.parquetData28.8 MB85135c2d1aca
camera/mixed-00239.parquetData29.5 MBa67fbcff45d9
camera/mixed-00240.parquetData28.4 MB76073311955c
camera/mixed-00241.parquetData24.0 MBcb030ad9c3af
camera/mixed-00242.parquetData27.1 MB98821f1e3fc5
camera/mixed-00243.parquetData26.0 MB4ef15f8e1c86
camera/mixed-00244.parquetData32.5 MBd2df3dba07b6
camera/mixed-00245.parquetData24.7 MBb62e050aee4f
camera/mixed-00246.parquetData25.8 MB3bf610e912ff
camera/mixed-00247.parquetData27.8 MB1351f35c585c
camera/mixed-00248.parquetData28.6 MB5741707725a4
camera/mixed-00249.parquetData28.1 MB6d1cb05cb864
camera/mixed-00250.parquetData25.5 MB86928032c1ed
camera/mixed-00251.parquetData30.8 MBf4e9f33ccf31
camera/mixed-00252.parquetData25.0 MB5724579d82c6
camera/mixed-00253.parquetData21.5 MB97f1a4971ac3
camera/mixed-00254.parquetData28.1 MB9a0a97d59f53
camera/mixed-00255.parquetData36.9 MB9ac7a4454024
camera/mixed-00256.parquetData27.3 MB7f3b3bbf3073
camera/mixed-00257.parquetData27.7 MB12da5717a48c
camera/mixed-00258.parquetData29.0 MB9ffbd5d61876
camera/mixed-00259.parquetData28.5 MB5e474d417af1
camera/mixed-00260.parquetData25.0 MB6d5738b60ae9
camera/mixed-00261.parquetData31.3 MB6e3830c6dbe1
camera/mixed-00262.parquetData27.2 MB571aa2707c55
camera/mixed-00263.parquetData29.5 MBba6c4ecae948
camera/mixed-00264.parquetData28.5 MB1a8854af2aa5
camera/mixed-00265.parquetData24.3 MB825286c0775b
camera/mixed-00266.parquetData23.9 MBd83b672c39fc
camera/mixed-00267.parquetData26.0 MBb61f23660da0
camera/mixed-00268.parquetData34.1 MB88b756cbfd1d
camera/mixed-00269.parquetData25.3 MBca5f363b5d29
camera/mixed-00270.parquetData25.0 MB221da95b91f0
camera/mixed-00271.parquetData30.0 MB4764ddc95926
camera/mixed-00272.parquetData29.3 MB3a1f4f827bc7
camera/mixed-00273.parquetData30.7 MBa23d745bdcd6
camera/mixed-00274.parquetData28.7 MB56c80f10f21d
camera/mixed-00275.parquetData29.2 MB551a9cced189
camera/mixed-00276.parquetData35.1 MBf804d02b51ce
camera/mixed-00277.parquetData26.7 MBa50c668a2d01
camera/mixed-00278.parquetData28.1 MBfc0782384c74
camera/mixed-00279.parquetData25.5 MBefbb74f6ad4c
camera/mixed-00280.parquetData30.9 MB02f0f421cc56
camera/mixed-00281.parquetData25.4 MB58effba7615b
camera/mixed-00282.parquetData26.6 MBf5740440eca1
camera/mixed-00283.parquetData21.3 MB032bb2f50551
camera/mixed-00284.parquetData24.1 MB28520eed2c8d
camera/mixed-00285.parquetData28.0 MBf85ba46603f2
camera/mixed-00286.parquetData27.8 MBb044a23c37cb
camera/mixed-00287.parquetData31.4 MBd4e2ec6441aa
camera/mixed-00288.parquetData26.4 MB4c504ea61019
camera/mixed-00289.parquetData31.5 MB2f47175424d4
camera/mixed-00290.parquetData29.2 MBe594e3f21655
camera/mixed-00291.parquetData27.4 MBed519c88722f
camera/mixed-00292.parquetData33.5 MBbf8a5ff5f0f1
camera/mixed-00293.parquetData26.7 MB972dd18c8236
camera/mixed-00294.parquetData30.4 MBa03b0ed79c5c
camera/mixed-00295.parquetData27.0 MB04a18b3056d8
camera/mixed-00296.parquetData28.1 MB6d1b192033ee
camera/mixed-00297.parquetData32.7 MBfb2718e210a6
camera/mixed-00298.parquetData32.2 MB6ca6b859a607
camera/mixed-00299.parquetData30.3 MB5a7ae680e5f0
camera/monocular-00000.parquetData30.6 MBb93e544e5c91
camera/monocular-00001.parquetData30.5 MBecb741d0b544
camera/monocular-00002.parquetData30.6 MB42adbfee47a7
camera/monocular-00003.parquetData6.2 MB79b02ae65cc3
camera/motion-00000.parquetData3.9 MB177a15dfc4a8
camera/motion-00001.parquetData3.9 MB72eb23f03e1b
camera/motion-00002.parquetData3.9 MBacb6bfe260de
camera/motion-00003.parquetData3.9 MBad1fc24d65a0
camera/motion-00004.parquetData3.9 MB1afbad6dee1d
camera/motion-00005.parquetData3.9 MBca717e79c943
camera/motion-00006.parquetData3.9 MB5115a754d494
camera/motion-00007.parquetData3.9 MB115a29011f89
camera/motion-00008.parquetData3.9 MB1656fc894be3
camera/motion-00009.parquetData3.9 MB335b5c5ebf1b
camera/motion-00010.parquetData28.1 MB1e997f2f1cdc
camera/motion-00011.parquetData28.1 MBb4ef40c56ebc
camera/motion-00012.parquetData28.2 MB20742e6a5f54
camera/motion-00013.parquetData25.3 MB8a883980fc44
camera/motion-00014.parquetData4.1 MB05d48fef2f24
camera/motion-00015.parquetData4.1 MBb90447d75309
camera/motion-00016.parquetData4.1 MBd5492d806267
camera/motion-00017.parquetData3.8 MB568cd5359f43
camera/noise-00000.parquetData24.2 MB8bdd993cd5ef
camera/noise-00001.parquetData14.0 MB93dfe442d222
camera/noise-00002.parquetData14.0 MB53f1b9f63028
camera/noise-00003.parquetData24.2 MBa3b2ffae0c7c
camera/noise-00004.parquetData8.9 MB2b1863cbeff7
camera/noise-00005.parquetData19.1 MB48115f24cdda
camera/noise-00006.parquetData19.1 MB5fa8efe71c14
camera/noise-00007.parquetData9.0 MB3068d5fcf67a
camera/noise-00008.parquetData24.2 MBaa0c0d9f2de0
camera/noise-00009.parquetData14.0 MBe6c9e4178b77
camera/noise-00010.parquetData14.0 MBba06310f37b6
camera/noise-00011.parquetData24.0 MB5d8fa1155126
camera/noise-00012.parquetData8.9 MB5e0320b15b1a
camera/noise-00013.parquetData19.1 MB90b72b78093f
camera/noise-00014.parquetData19.0 MBe0e70dfc39bf
camera/noise-00015.parquetData8.9 MB4b201dce5152
camera/noise-00016.parquetData24.1 MBbb0c73c7c6c5
camera/noise-00017.parquetData14.0 MB92d2b3d2f52b
camera/noise-00018.parquetData14.0 MBcc97683c1fd6
camera/noise-00019.parquetData24.2 MB49c070c1bf4f
camera/noise-00020.parquetData8.9 MB4616943a009e
camera/noise-00021.parquetData19.0 MB215dd60e015a
camera/noise-00022.parquetData19.0 MBf53ca3f6f0ed
camera/noise-00023.parquetData8.9 MB06af740a0518
camera/noise-00024.parquetData24.0 MB401e10d1c652
camera/noise-00025.parquetData2.3 MB03953545d8b6
camera/outliers-00000.parquetData4.4 MB8d5e5f86f189
camera/outliers-00001.parquetData4.4 MB5e192708c299
camera/outliers-00002.parquetData4.4 MB6c59e744de6b
camera/outliers-00003.parquetData4.4 MBd8211edfc315
camera/outliers-00004.parquetData4.4 MB457abc544554
camera/outliers-00005.parquetData4.4 MB76fcb0483a6b
camera/outliers-00006.parquetData4.4 MBe656aca41168
camera/outliers-00007.parquetData4.4 MB0c8187133b38
camera/outliers-00008.parquetData3.5 MBae5a812f84e6
camera/pnp-00000.parquetData4.2 MBbe18a6d76e9e
camera/pnp-00001.parquetData4.2 MB0b0a32d7debb
camera/pnp-00002.parquetData4.2 MBddcae256a79f
camera/pnp-00003.parquetData4.2 MB559c59bff8f3
camera/pnp-00004.parquetData4.2 MB191652627914
camera/pnp-00005.parquetData4.2 MB0a4a21f0e811
camera/pnp-00006.parquetData4.2 MB585bd6a9bacc
camera/pnp-00007.parquetData4.2 MBb438d8871d3c
camera/pnp-00008.parquetData4.2 MB1dcb6d64b14b
camera/pnp-00009.parquetData4.2 MB71958f36c90b
camera/pnp-00010.parquetData4.2 MB9ce76bad0f18
camera/pnp-00011.parquetData4.2 MB312b9d2b456b
camera/robot_error-00000.parquetData4.6 MBa47fc8d1e514
camera/robot_error-00001.parquetData4.6 MB3dbb2bf88e4d
camera/robot_error-00002.parquetData4.6 MBd4e83f3555c5
camera/robot_error-00003.parquetData4.7 MB3e3ca591e40f
camera/robot_error-00004.parquetData4.7 MB314d2ef93b54
camera/robot_error-00005.parquetData4.7 MBb3e562f400d0
camera/robot_error-00006.parquetData4.6 MB0bce8df5e8bb
camera/robot_error-00007.parquetData3.2 MBd78ed17aedd4
camera/temporal-00000.parquetData16.4 MBf5bac7d35f94
camera/temporal-00001.parquetData17.3 MB54594729a2aa
camera/temporal-00002.parquetData17.9 MB4e770a5c7b1c
camera/temporal-00003.parquetData17.0 MB24732a1cf401
camera/temporal-00004.parquetData16.8 MBa183be429279
camera/temporal-00005.parquetData17.5 MB2c09223aacfb
camera/temporal-00006.parquetData17.5 MBce40e5f862dd
camera/temporal-00007.parquetData16.4 MB098523c4dab6
camera/temporal-00008.parquetData17.3 MB49e68c39f27b
camera/temporal-00009.parquetData18.1 MBffff415fd58a
camera/temporal-00010.parquetData16.6 MBb7e015c743dc
camera/temporal-00011.parquetData16.9 MB3454fd23ad0f
camera/temporal-00012.parquetData17.3 MB7b7d8bb5387b
cameras_targets.jsonData2.9 KB—
generation_info.jsonData2.3 KB—
robot/mixed-00000.parquetData85.0 MBcfff3a7a9194
robot/mixed-00001.parquetData136.7 MB0714e0b1930c
robot/mixed-00002.parquetData140.6 MBa710000e2550
robot/mixed-00003.parquetData105.9 MBb8ff4a18c8ac
robot/mixed-00004.parquetData106.6 MBb64c1ff38dd0
robot/mixed-00005.parquetData128.3 MBf592876c9804
robot/mixed-00006.parquetData134.5 MB81c8538351ca
robot/mixed-00007.parquetData148.3 MBa0d5623d995e
robot/mixed-00008.parquetData129.3 MBdbeab5ea22ba
robot/mixed-00009.parquetData108.7 MB65557793b55f
robot/mixed-00010.parquetData172.8 MB89165189a5a8
robot/mixed-00011.parquetData142.4 MBe3e32cb6f895
robot/mixed-00012.parquetData164.8 MBdc97a0623e9e
robot/mixed-00013.parquetData134.2 MB15bd7869eaba
robot/mixed-00014.parquetData121.5 MBa80ee8cf7a94
robot/mixed-00015.parquetData120.4 MBf4e1368ee9de
robot/mixed-00016.parquetData140.9 MB4dcc61c8da8d
robot/mixed-00017.parquetData140.6 MB4953ff68d24d
robot/mixed-00018.parquetData136.6 MB8c83a904bbd4
robot/mixed-00019.parquetData132.5 MBfd7e4aeb4ce4
robot/mixed-00020.parquetData100.1 MB8cdb81787607
robot/mixed-00021.parquetData133.3 MBcc8f4f13d9a5
robot/mixed-00022.parquetData113.7 MBeb1e9471a307
robot/mixed-00023.parquetData122.4 MBc4c9f65be674
robot/mixed-00024.parquetData130.7 MBd8080edb91eb
robot/mixed-00025.parquetData86.5 MBf4492528af7b
robot/mixed-00026.parquetData152.2 MBa4f9de9a9612
robot/mixed-00027.parquetData107.4 MBa42ce8473ae2
robot/mixed-00028.parquetData113.6 MB1342192ea279
robot/mixed-00029.parquetData145.1 MB2732d86d6102
robot/mixed-00030.parquetData153.3 MB946b9c0ace2f
robot/mixed-00031.parquetData112.3 MB8352bdccb5d1
robot/mixed-00032.parquetData126.3 MB206f1047d5b6
robot/mixed-00033.parquetData99.6 MB360d1ff2813d
robot/mixed-00034.parquetData127.8 MB6ee0c892d68d
robot/mixed-00035.parquetData138.1 MB0eff7a7890de
robot/mixed-00036.parquetData81.2 MBbd84063c82c9
robot/mixed-00037.parquetData130.9 MB93e9e4d5d675
robot/mixed-00038.parquetData137.9 MBb3276f074c96
robot/mixed-00039.parquetData109.4 MBba0a44328d74
robot/mixed-00040.parquetData127.7 MBf615a385b870
robot/mixed-00041.parquetData144.8 MB406a2b6e5219
robot/mixed-00042.parquetData120.6 MB74e4a40825fe
robot/mixed-00043.parquetData109.8 MBbf3548569587
robot/mixed-00044.parquetData103.5 MB20227ebad30c
robot/mixed-00045.parquetData89.5 MBe32e21c86571
robot/mixed-00046.parquetData116.7 MBf811c910fddc
robot/mixed-00047.parquetData96.4 MB1d4d0b9e6bd9
robot/mixed-00048.parquetData134.6 MBe9fe63c8a4cc
robot/mixed-00049.parquetData161.7 MB33fde657a514
robot/mixed-00050.parquetData137.2 MBce3f598bdfe2
robot/mixed-00051.parquetData134.4 MBda33a9126fd6
robot/mixed-00052.parquetData113.5 MB013b87b1803f
robot/mixed-00053.parquetData130.9 MBa4fe4b6b1749
robot/mixed-00054.parquetData112.7 MBd9ca68e986d2
robot/mixed-00055.parquetData126.0 MBe8c3b9b8bb47
robot/mixed-00056.parquetData137.0 MBcfc808b53885
robot/mixed-00057.parquetData140.5 MB42216451ad12
robot/mixed-00058.parquetData122.0 MB201e748249c3
robot/mixed-00059.parquetData142.9 MBa3b6cfd05841
robot/mixed-00060.parquetData127.1 MB659682162120
robot/mixed-00061.parquetData122.7 MB09913ca9798e
robot/mixed-00062.parquetData169.3 MBcd49814f6fa2
robot/mixed-00063.parquetData136.2 MB41572f0d3970
robot/mixed-00064.parquetData211.8 MBcb75b0cd3113
robot/mixed-00065.parquetData129.5 MB38da9ade7588
robot/mixed-00066.parquetData84.0 MBf8dc2e5d497f
robot/mixed-00067.parquetData119.6 MBbaf6b25964c2
robot/mixed-00068.parquetData132.8 MB25dcaa118112
robot/mixed-00069.parquetData102.6 MBa1b9b076f71d
robot/mixed-00070.parquetData134.2 MBdc52ecb866bc
robot/mixed-00071.parquetData97.9 MB7409aeead1ba
robot/mixed-00072.parquetData124.1 MBf56de63452e3
robot/mixed-00073.parquetData146.0 MB7518884afaaa
robot/mixed-00074.parquetData119.7 MB6dbf27c6ffb6
robot/mixed-00075.parquetData135.7 MB1714795a572e
robot/mixed-00076.parquetData135.5 MBc542ca11bc5c
robot/mixed-00077.parquetData76.5 MBd23427f79944
robot/mixed-00078.parquetData93.4 MB43cf705662af
robot/mixed-00079.parquetData118.0 MB85f2851a0060
robot/mixed-00080.parquetData111.9 MBc71ca58e419a
LICENSEDocumentation1.1 KB—
README.mdDocumentation43.2 KB—
benchmarks/leaderboard.mdDocumentation61.0 KB—
CITATION.cffOther907 B—
configs/full.yamlOther5.2 KB—
figures/benchmark_summary.pngOther56.5 KB6888c9ae538f
figures/dataset_overview.pngOther175.7 KBc4746414a97c
figures/error_vs_descriptors.pngOther411.6 KBcb9eda07cf36
figures/image_projection_example.pngOther45.3 KB327625102569
figures/measurement_errors_example.pngOther81.6 KB15de3dce9553
figures/pipeline.pngOther99.3 KB1a37cbf0746c
figures/robots.pngOther255.1 KB432a593aeb27
figures/robustness_motion_cone.pngOther125.2 KB57918d9bde23
figures/robustness_noise_camera.pngOther104.4 KB33b8a9e1bd62
figures/robustness_outliers_fraction.pngOther98.5 KBe0e6c2704817
figures/robustness_pnp_pixel_std.pngOther91.5 KB99f5d70ab592
figures/robustness_robot_error_dh_len_mm.pngOther86.8 KB4572cd563d82
figures/robustness_temporal_offset.pngOther78.8 KB4741ea2516ab
figures/scene_motion-002000.pngOther83.4 KB01ed17b9005f
figures/scene_noise-000000.pngOther121.6 KB1c84c3754657
figures/scene_pnp-000180.pngOther96.8 KB4cba8f4e7d76
figures/streams_example.pngOther175.4 KB38324951b665
figures/temporal_alignment_example.pngOther144.0 KB16a6973472ff
.gitattributesRepository2.6 KB—

License and Download

License
mit
Access
No access gate
Download from Alexander Ezharjan

Released by Alexander Ezharjan through its official repository on Hugging Face. Read the license.