Vid2Sid: Videos Can Help Close the Sim2Real Gap
Organizations: University of Warsaw · IDEAS NCBR · EPFL · Nomagic
Abstract
Calibrating a robot simulator's physics parameters (friction, damping, material stiffness) to match real hardware is often done by hand or with black-box optimizers that reduce error but cannot explain which physical discrepancies drive the error. When sensing is limited to external cameras, the problem is further compounded by perception noise and the absence of direct force or state measurements. We present Vid2Sid, a video-driven system identification pipeline that couples foundation-model perception with a VLM-in-the-loop optimizer that analyzes paired sim-real videos, diagnoses concrete mismatches, and proposes physics parameter updates with natural language rationales. We evaluate our approach on a tendon-actuated finger (rigid-body dynamics in MuJoCo) and a deformable continuum tentacle (soft-body dynamics in PyElastica). On sim2real holdout controls unseen during training, Vid2Sid achieves the best average rank across all settings, matching or exceeding black-box optimizers while uniquely providing interpretable reasoning at each iteration. Sim2sim validation confirms that Vid2Sid recovers ground-truth parameters most accurately (mean relative error under 13% vs. 28--98%), and ablation analysis reveals three calibration regimes. VLM-guided optimization excels when perception is clean and the simulator is expressive, while model-class limitations bound performance in more challenging settings.
Figures & tables
| Method | Finger (px) | Tentacle–Air (px) | Tentacle–Water (px) † | Avg. Rank |
|---|---|---|---|---|
| Random | 27.8 17.2 (12.1) | 54.3 1.9 (51.6) | 76.1 3.8 (71.2) | 4.3 |
| Nelder-Mead | 17.2 3.5 (14.2) | 57.3 4.2 (54.3) | 80.7 2.9 (77.3) | 5.3 |
| Golden-CD | 12.1 0.2 (11.9) | 53.4 4.8 (49.5) | 77.8 3.7 (73.2) | 3.3 |
| BO | 16.1 2.4 (14.4) | 62.4 10.4 (54.5) | 71.7 0.1 (71.5) | 3.7 |
| CMA-ES | 15.3 4.9 (11.8) | 52.1 2.9 (49.9) | 77.6 3.4 (72.9) | 2.7 |
| Vid2Sid (Ours) | 10.9 6.3 ( 4.9 ) | 53.0 5.3 ( 48.8 ) | 73.3 3.1 ( 71.1 ) | 1.7 |
| Method | Finger (mm) | Tentacle (px) |
|---|---|---|
| Random | 15.67 13.80 | 10.63 9.59 |
| Nelder-Mead | 46.41 8.77 | 11.65 11.05 |
| Golden-CD | 16.36 17.79 | 11.44 12.44 |
| BO | 9.70 7.49 | 10.02 11.03 |
| CMA-ES | 23.77 19.23 | 10.02 7.15 |
| Vid2Sid (Ours) | 7.13 2.56 | 8.91 9.52 |
Appendix figures & tables25 assets
Supplementary material from the paper’s appendix.
Appendix
| Component | Specification |
|---|---|
| CPU | Intel Core i7-10700K |
| RAM | 32 GB DDR4 |
| GPU (SAM3) | NVIDIA A100 40GB |
| VLM | Google Gemini 2.5 Pro |
| OS | Ubuntu 22.04 LTS |
| Vid2Sid | Baselines | |
|---|---|---|
| Shared components | 35 s | 35 s |
| Optimizer/VLM | 11 s | 1 s |
| Total per iteration | 46 s | 36 s |
| 10-iteration calibration | 7.7 min | 6.0 min |
| Parameter | Min | Max | Nominal | Description |
| Friction loss | 0 | 150 | 50 | Joint dry friction torque (Nm) |
| Damping | 10 | 200 | 100 | Velocity-dependent viscous damping |
| Armature | 0.1 | 5.0 | 1.0 | Rotor inertia added to each joint |
| Link density | 1.0 | 20.0 | 5.0 | Density of body geometries (kg/m 3 ) |
| MCP amplitude | 0 | 60 | 10 | MCP joint oscillation amplitude (deg) |
| PIP amplitude | 0 | 60 | 10 | PIP/DIP joint oscillation amplitude (deg) |
| Parameter | Min | Max | Nominal | Description |
| Body parameters | ||||
| Young’s modulus | Rod stiffness (Pa) | |||
| Rod density | 500 | 5000 | 1050 | Material density (kg/m 3 ) |
| Poisson’s ratio | 0.2 | 0.5 | 0.5 | Lateral-to-axial strain ratio |
| Damping constant | 0 | 100 | 3.0 | Linear (Rayleigh) damping coefficient |
| Environment parameters | ||||
| Parameter | Min | Max | Nominal | Description |
|---|---|---|---|---|
| Fluid density | 0 | 2000 | 1000 | Surrounding fluid density (kg/m 3 ) |
| Perpendicular drag | 0 | 100 | 10 | Perpendicular fluid drag coefficient |
| Tangential drag | 0 | 100 | 10 | Tangential fluid drag coefficient |
| Finger | Tentacle | |
|---|---|---|
| ( , ) | ( , ) | |
| H1 | , | 0.9 rad, 0.5 Hz |
| H2 | , | 0.9 rad, 0.15 Hz |
| H3 | , | 0.3 rad, 0.5 Hz |
| H4 | , | 0.3 rad, 0.15 Hz |
| Component | Tokens | Cost (USD) |
|---|---|---|
| Input (per iteration) | 6,200 | $0.008 |
| Output (per iteration) | 600 | $0.006 |
| Per iteration | 6,800 | $0.014 |
| Per training run (10 iter) | 68,000 | $0.14 |
| Per experiment (3 seeds) | 204,000 | $0.42 |
| Setting | Value |
|---|---|
| Model | Google Gemini 2.5 Pro |
| Temperature | 1.0 (default) |
| Top- | 0.95 (default) |
| Top- | 64 (default) |
| Max output tokens | 65,536 |
| Max input tokens | 1,048,576 |
| Prompt Type | Success (%) | Manual Annotation |
|---|---|---|
| Text | 97.2 | None |
| Point | 98.5 | Seed point |
| ROI | 94.1 | Bounding box |
| Method | Seed 1 | Seed 2 | Seed 3 | Mean | Std |
|---|---|---|---|---|---|
| Random | 7.3 | 11.8 | 5.6 | 8.3 | 3.2 |
| Nelder-Mead | 24.9 | 46.2 | 5.0 | 25.4 | 20.6 |
| Golden-CD | 21.0 | 26.2 | 1.4 | 16.2 | 13.1 |
| BO | 12.0 | 12.9 | 5.6 | 10.2 | 4.0 |
| CMA-ES | 4.1 | 34.2 | 3.4 | 13.9 | 17.6 |
| Vid2Sid (Ours) | 10.3 | 10.6 | 5.0 | 8.6 | 3.2 |
| Method | Seed 1 | Seed 2 | Seed 3 | Mean | Std |
|---|---|---|---|---|---|
| Random | 55.9 | 56.5 | 55.2 | 55.9 | 0.7 |
| Nelder-Mead | 55.7 | 189.3 † | 57.1 | 100.7 | 76.8 |
| Golden-CD | 54.0 | 73.0 | 56.6 | 61.2 | 10.3 |
| BO | 55.1 | 58.4 | 55.0 | 56.2 | 1.9 |
| CMA-ES | 54.5 | 67.0 | 54.8 | 58.8 | 7.1 |
| Vid2Sid (Ours) | 55.9 | 58.7 | 57.9 | 57.5 | 1.4 |
| Method | Seed 1 | Seed 2 | Seed 3 | Mean Std |
|---|---|---|---|---|
| Random | 12.1 | 51.7 | 19.5 | 27.8 17.2 |
| Nelder-Mead | 14.2 | 22.2 | 15.3 | 17.2 3.5 |
| Golden-CD | 12.3 | 12.2 | 11.9 | 12.1 0.2 |
| BO | 14.4 | 14.5 | 19.5 | 16.1 2.4 |
| CMA-ES | 11.9 | 22.3 | 11.8 | 15.3 4.9 |
| Vid2Sid (Ours) | 8.2 | 4.9 | 19.5 | 10.9 6.3 |
| Method | Seed 1 | Seed 2 | Seed 3 | Mean Std |
|---|---|---|---|---|
| Random | 55.3 | 56.0 | 51.6 | 54.3 1.9 |
| Nelder-Mead † | 54.3 | – | 60.3 | 57.3 4.2 |
| Golden-CD | 50.4 | 49.5 | 60.2 | 53.4 4.8 |
| BO | 77.1 | 54.5 | 55.8 | 62.4 10.4 |
| CMA-ES | 50.3 | 49.9 | 56.2 | 52.1 2.9 |
| Vid2Sid (Ours) | 48.8 | 49.9 | 60.5 | 53.0 5.3 |
| Method | Seed 1 | Seed 2 | Seed 3 | Mean Std |
|---|---|---|---|---|
| Random | 80.5 | 76.7 | 71.2 | 76.1 3.8 |
| Nelder-Mead | 84.4 | 77.3 | 80.4 | 80.7 2.9 |
| Golden-CD | 82.2 | 73.2 | 77.9 | 77.8 3.7 |
| BO | 71.7 | 71.8 | 71.5 | 71.7 0.1 |
| CMA-ES | 80.8 | 72.9 | 79.0 | 77.6 3.4 |
| Vid2Sid (Ours) | 77.6 | 71.1 | 71.1 | 73.3 3.1 |
| Ablation | Seed 1 | Seed 2 | Seed 3 | Mean Std |
|---|---|---|---|---|
| Full Vid2Sid | 3.68 | 12.38 | 13.63 | 9.89 4.42 |
| w/o Active Learning | 3.45 | 12.46 | 3.48 | 6.46 4.24 |
| w/o History | 3.43 | 3.75 | 19.51 | 8.90 7.51 |
| w/o CoT | 3.60 | 10.49 | 19.51 | 11.20 6.52 |
| w/o Video | 12.24 | 17.05 | 20.04 | 16.44 3.21 |
| Ablation | Seed 1 | Seed 2 | Seed 3 | Mean Std |
|---|---|---|---|---|
| Full Vid2Sid | 60.26 | 50.30 | 66.21 | 58.92 6.56 |
| w/o Active Learning | 32.24 | 37.08 | 37.59 | 35.64 2.41 |
| w/o History | 37.80 | 37.04 | 32.59 | 35.81 2.30 |
| w/o CoT | 49.29 | 55.96 | 33.03 | 46.09 9.63 |
| w/o Video | 33.07 | 41.70 | 35.63 | 36.80 3.62 |
| Iteration | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Seed | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Min | Mean |
| 1 | .31 | .75 | .35 | .60 | .65 | .40 | .45 | .35 | .35 | .33 | .31 | .45 |
| 2 | .96 | .50 | .60 | .50 | .70 | .48 | .60 | .50 | .48 | .55 | .48 | .59 |
| 3 | .39 | .75 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | .90 | .95 | .42 | .39 | .84 |
| Iteration | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Seed | Joint | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Min | Mean |
| 1 | MCP | 25 | 18 | 28 | 20 | 24 | 20 | 23 | 19 | 18 | 19 | 18 | 21 |
| PIP | 34 | 25 | 35 | 27 | 30 | 26 | 30 | 26 | 25 | 27 | 25 | 28 | |
| 2 | MCP | 38 | 25 | 21 | 28 | 35 | 24 | 35 | 39 | 25 | 22 | 21 | 29 |
| PIP | 35 | 30 | 24 | 33 | 40 | 28 | 40 | 46 | 29 | 26 | 24 | 33 | |
| 3 | MCP | 8 | 40 | 28 | 45 | 12 | 18 | 10 | 22 | 10 | 25 | 8 | 22 |
| Parameter | GT | Random | Nelder-Mead | Golden-CD | BO | CMA-ES | Vid2Sid |
|---|---|---|---|---|---|---|---|
| frictionloss | 90.4 | 45.2 (50%) | 20.8 (77%) | 84.3 (7%) | 124.5 (38%) | 23.1 (74%) | 88.0 (3%) |
| damping | 114.3 | 156.0 (37%) | 176.1 (54%) | 171.0 (50%) | 137.4 (20%) | 194.1 (70%) | 120.0 (5%) |
| armature | 3.60 | 2.1 (42%) | 4.0 (11%) | 3.8 (6%) | 1.6 (56%) | 3.4 (6%) | 3.5 (3%) |
| density | 11.4 | 8.3 (27%) | 5.6 (51%) | 5.8 (49%) | 12.2 (7%) | 3.8 (67%) | 10.5 (8%) |
| Mean rel. error (%) | – | 42.1 | 53.8 | 28.4 | 35.6 | 58.2 | 8.7 |
| Parameter | GT | Random | Nelder-Mead | Golden-CD | BO | CMA-ES | Vid2Sid |
|---|---|---|---|---|---|---|---|
| youngs_mod | (67%) | (105%) | (33%) | (95%) | (138%) | (10%) | |
| rod_density | 1665 | 2100 (26%) | 3993 (140%) | 2200 (32%) | 3110 (87%) | 2517 (51%) | 1850 (11%) |
| poisson_ratio | 0.353 | 0.31 (12%) | 0.28 (21%) | 0.35 (1%) | 0.30 (15%) | 0.29 (18%) | 0.30 (15%) |
| damping_const | 40.5 | 55.0 (36%) | 46.4 (15%) | 52.0 (28%) | 53.6 (32%) | 68.3 (69%) | 42.0 (4%) |
| Mean rel. error (%) | – | 48.2 | 95.1 | 35.8 | 72.4 | 98.6 | 12.4 |