Spaces:
Running
Running
Download replay/index.html from Dvidia/robot-simulation-lab: direct link, hf CLI and curl.
- Browser
- Download file 13.9 kB
-
https://huggingface.co/spaces/Dvidia/robot-simulation-lab/resolve/main/replay/index.html
- Command line
-
hf download hf://spaces/Dvidia/robot-simulation-lab/replay/index.html
-
curl -L -o index.html https://huggingface.co/spaces/Dvidia/robot-simulation-lab/resolve/main/replay/index.html
13.9 kB
| <html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>DVIDIA · Native block task replay</title> | |
| <style> | |
| :root{font-family:Georgia,serif;color:#282b27;background:#fafaf7;font-synthesis:none;--line:#ddded4;--green:#396751}*{box-sizing:border-box}body{margin:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.025' filter='url(%23n)'/%3E%3C/svg%3E")}main{max-width:1480px;padding:28px 32px 24px;margin:auto}.mast{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}.brand{font:700 13px system-ui;letter-spacing:.18em}.mast a{font:13px system-ui}h1{font-weight:400;font-size:clamp(28px,3vw,43px);margin:18px 0 8px}h2{font-weight:400;font-size:22px;margin:0 0 16px}p{line-height:1.55;margin:9px 0;max-width:100ch}a{color:var(--green)}.sub{color:#606657;font-size:16px}.layout{display:grid;grid-template-columns:minmax(0,1fr) 284px;gap:22px;margin-top:22px}.viewer{border:1px solid var(--line);background:#f7f8f3;min-width:0}.toolbar{padding:12px 14px;display:flex;gap:8px;align-items:center;flex-wrap:wrap;border-bottom:1px solid var(--line)}button,select{font:13px system-ui;color:#31382f;min-height:44px;border:1px solid #cbd0c1;background:#fff;padding:9px 13px;border-radius:3px}button{cursor:pointer}button:hover{background:#f2f4ed}button[aria-pressed=true]{background:#e6eee6;border-color:#78957d;color:#284732}button:focus-visible,select:focus-visible,input:focus-visible,canvas:focus-visible{outline:3px solid #52839b;outline-offset:2px}button:disabled,select:disabled,input:disabled{opacity:.5;cursor:wait}select{appearance:none;padding-right:30px;background-image:linear-gradient(45deg,transparent 50%,#56604c 50%),linear-gradient(135deg,#56604c 50%,transparent 50%);background-position:calc(100% - 15px) 19px,calc(100% - 10px) 19px;background-size:5px 5px;background-repeat:no-repeat}label{font:12px system-ui;color:#58604f;display:grid;gap:4px}.grow{flex:1}.stage{position:relative;height:clamp(360px,58vh,690px);overflow:hidden;background:linear-gradient(#f4f6f1,#f8f8f2)}canvas{display:block;width:100%;height:100%;touch-action:none}.stage-meta{position:absolute;top:16px;left:16px;right:16px;display:flex;justify-content:space-between;gap:16px;pointer-events:none;font:11px system-ui;color:#6c7566;letter-spacing:.06em;text-transform:uppercase}.hint{position:absolute;bottom:14px;left:16px;right:16px;pointer-events:none;font:12px system-ui;color:#626c5a}.hint kbd{font:11px system-ui;border:1px solid #cfd5c7;background:#fff8;border-radius:2px;padding:1px 4px}.loading{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;padding:32px;text-align:center;line-height:1.6;background:#f5f6f0;color:#52634b;font:15px system-ui}.loading[hidden]{display:none}.failure{color:#7a382b;background:#fff8f4}.playback{padding:14px 16px;border-top:1px solid var(--line)}.play-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.play-row input[type=range]{flex:1;min-width:100px;width:100%;min-height:44px;accent-color:var(--green)}#clock{font:13px ui-monospace,SFMono-Regular,monospace;white-space:nowrap}.status{font:12px system-ui;color:#606c55;margin-top:10px;line-height:1.5}.sidebar{min-width:0;padding:6px 0}.eyebrow{font:11px system-ui;letter-spacing:.09em;text-transform:uppercase;color:#69725f}.joint{padding:11px 0;border-bottom:1px solid var(--line)}.joint-heading{display:flex;align-items:baseline;gap:8px;justify-content:space-between;font:13px system-ui}.joint-name{color:#606a56;font-size:11px;overflow-wrap:anywhere}.joint-value{font:15px ui-monospace,SFMono-Regular,monospace;white-space:nowrap}.joint-track{height:3px;background:#e0e4d8;margin-top:9px;position:relative}.joint-fill{height:100%;background:#7c9a96;width:50%}.target-dot{position:absolute;top:-3px;width:2px;height:9px;background:#c78354;left:50%}.joint-legend{font:10px system-ui;color:#758169;margin-top:7px}.readouts{margin-top:22px}.readout{font:12px system-ui;line-height:1.5;margin-top:14px}.readout strong{display:block;font:15px ui-monospace,SFMono-Regular,monospace;margin-top:4px;color:#334536;overflow-wrap:anywhere}.tiny{font:11px system-ui;color:#707a64;line-height:1.6}.footnotes{display:grid;grid-template-columns:1.3fr 1fr;gap:28px;margin:24px 0;border-top:1px solid var(--line);padding-top:20px}.footnotes h2{font-size:22px;margin-bottom:10px}.footnotes p{font-size:14px}.notes-links{display:flex;gap:8px;flex-wrap:wrap}.notes-links a{font:12px system-ui;min-height:44px;padding:12px 0;display:inline-flex;align-items:center}footer{border-top:1px solid var(--line);padding-top:15px;font:12px system-ui;display:flex;gap:14px;flex-wrap:wrap}#error-details{white-space:pre-wrap;overflow-wrap:anywhere;font:12px ui-monospace,monospace}#joint-readouts{margin-top:10px}[hidden]{display:none!important}@media(max-width:900px){main{padding:22px 20px}.layout{grid-template-columns:minmax(0,1fr)}.sidebar{display:grid;grid-template-columns:1fr 1fr;gap:24px}.sidebar h2{margin-bottom:8px}.readouts{margin-top:0}.stage{height:520px}.footnotes{gap:20px}}@media(max-width:560px){main{padding:20px 12px}.stage{height:390px}.toolbar{padding:10px;gap:6px}.toolbar label{flex:1;min-width:105px}.toolbar select{width:100%}.camera-controls{display:flex;flex-wrap:wrap;gap:5px;flex-basis:100%}.camera-controls button{flex:1;padding:9px 10px}.sidebar{grid-template-columns:1fr}.footnotes{grid-template-columns:1fr;gap:12px}.playback{padding:10px}#clock{font-size:12px}.hint{font-size:11px}.stage-meta{left:12px;right:12px;font-size:10px}.joint{padding:9px 0}.readouts{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.readouts h2,.readouts>.tiny{grid-column:1/-1}} | |
| </style><style>#task-evidence{margin-top:24px;border-top:1px solid var(--line);padding-top:20px}#task-evidence p{font-size:14px}.task-scroll{overflow:auto}.task-scroll table{border-collapse:collapse;width:100%;font:12px/1.5 system-ui}.task-scroll td,.task-scroll th{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line)}</style></head><body><main> | |
| <header><div class="mast"><div class="brand">DVIDIA RESEARCH</div><a href="https://research.dvidia.org/">Research footprints ↗</a></div><h1>A contact task in three dimensions.</h1><p class="sub">UR5e + Robotiq 2F-85 · Free rigid block, table and recorded task attempts.</p></header> | |
| <div class="layout"><section class="viewer" aria-label="Interactive 3D simulation replay"> | |
| <div class="toolbar"><label>Recorded motion<select id="case" disabled></select></label><label>Physics step<select id="step" disabled></select></label><div class="grow"></div><div class="camera-controls" aria-label="Camera presets"><button data-camera="home" disabled>Orbit view</button><button data-camera="top" disabled>Top</button><button data-camera="front" disabled>Front</button><button data-camera="side" disabled>Side</button></div></div> | |
| <div class="stage" id="stage"><canvas id="canvas" tabindex="0" aria-label="3D arm replay. Drag to orbit, scroll to zoom. Arrow keys orbit, plus and minus zoom, H resets camera."></canvas><div class="stage-meta"><span>3D recorded simulation</span><span id="mode-label">Native visual geometry</span></div><div class="hint">Drag to orbit · Scroll or pinch to zoom · <kbd>←</kbd> <kbd>→</kbd> <kbd>↑</kbd> <kbd>↓</kbd> orbit · <kbd>+</kbd> / <kbd>−</kbd> zoom · <kbd>H</kbd> home</div><div id="loading" class="loading" role="status">Loading the local reference geometry…</div></div> | |
| <div class="playback"><div class="play-row"><button id="play" disabled aria-pressed="false">Play motion</button><input id="timeline" aria-label="Recorded motion timeline" type="range" min="0" max="200" step="1" value="0" disabled><span id="clock">0.00 / 4.00 s</span><label>Playback<select id="speed" disabled><option value="0.25">¼×</option><option value="0.5">½×</option><option value="1" selected>1×</option><option value="2">2×</option></select></label></div><div class="play-row"><button id="collision" disabled aria-pressed="false">Collision proxies</button><button id="trail" disabled aria-pressed="true">TCP trail</button><button id="axes" disabled aria-pressed="true">Tool axes</button><button id="markers" disabled aria-pressed="false">Joint markers</button></div><div class="status" id="status" aria-live="off">The browser replays saved poses; it does not rerun physics.</div></div></section> | |
| <aside class="sidebar"><section><div class="eyebrow">Measured joint positions · degrees</div><h2>Six arm axes</h2><div id="joint-readouts"></div><p class="tiny">Green bars: recorded joint angles. Amber ticks: issued joint targets. No robot is connected.</p></section><section class="readouts"><h2>Tool and gripper</h2><div class="readout">Tool position · meters<strong id="tcp-position">—</strong></div><div class="readout">Tool orientation · XYZ Euler degrees<strong id="tcp-rotation">—</strong></div><div class="readout">Native gripper command · 0–255<strong id="gripper-command">—</strong></div><div class="readout">Pad-center separation<strong id="gripper-gap">—</strong></div><div class="readout">Native contact pairs<strong id="contacts">—</strong></div><p class="tiny">The gripper has eight linkage joints driven by one command. Pad-center separation is a geometry diagnostic, not calibrated inner jaw gap or fingertip force. Euler readouts describe orientation and can wrap at ±180°.</p></section></aside></div> | |
| <section id="task-evidence"><h2>Replay excerpt, complete denominator.</h2><p>9 recorded attempts from 3 scenes are shown here. The complete benchmark contains 18 planned attempts across 6 scenes; this excerpt is not a success-rate denominator. All source attempts, including invalid attempts and negative controls, remain in the linked receipt.</p><p>Targets are issued at the recorded observation boundary. At the terminal row, the viewer carries forward the last issued target for reference; no new terminal command is invented. Targets are requested controller commands, not measured joint torque or fingertip force.</p><div class="task-scroll"><table><thead><tr><th>Scene</th><th>Controller</th><th>Recorded outcome</th><th>Reason</th><th>Source</th></tr></thead><tbody><tr><td>nominal-00</td><td>placement</td><td>Completed</td><td>success</td><td><a href="receipt/attempts/nominal-00--placement.json">Exact attempt JSON</a></td></tr><tr><td>nominal-00</td><td>replay_open_jaw</td><td>Failed</td><td>timeout</td><td><a href="receipt/attempts/nominal-00--replay_open_jaw.json">Exact attempt JSON</a></td></tr><tr><td>nominal-00</td><td>hold</td><td>Failed</td><td>timeout</td><td><a href="receipt/attempts/nominal-00--hold.json">Exact attempt JSON</a></td></tr><tr><td>low_friction-00</td><td>placement</td><td>Completed</td><td>success</td><td><a href="receipt/attempts/low_friction-00--placement.json">Exact attempt JSON</a></td></tr><tr><td>low_friction-00</td><td>replay_open_jaw</td><td>Failed</td><td>timeout</td><td><a href="receipt/attempts/low_friction-00--replay_open_jaw.json">Exact attempt JSON</a></td></tr><tr><td>low_friction-00</td><td>hold</td><td>Failed</td><td>timeout</td><td><a href="receipt/attempts/low_friction-00--hold.json">Exact attempt JSON</a></td></tr><tr><td>nominal-03</td><td>placement</td><td>Completed</td><td>success</td><td><a href="receipt/attempts/nominal-03--placement.json">Exact attempt JSON</a></td></tr><tr><td>nominal-03</td><td>replay_open_jaw</td><td>Failed</td><td>timeout</td><td><a href="receipt/attempts/nominal-03--replay_open_jaw.json">Exact attempt JSON</a></td></tr><tr><td>nominal-03</td><td>hold</td><td>Failed</td><td>timeout</td><td><a href="receipt/attempts/nominal-03--hold.json">Exact attempt JSON</a></td></tr></tbody></table></div><p class="tiny">9 source attempts are outside the render selection or numerically invalid. Their exact IDs and exclusion reasons are listed in motion.json. The renderer never scores task success.</p></section><section class="footnotes"><div><h2>Six degrees of freedom, three-dimensional physics.</h2><p>Six independently commanded arm joints move and orient the tool. Its pose has three position coordinates (X, Y, Z) and three rotational degrees of freedom. The mechanism and contacts are simulated in 3D; this viewer displays the recorded result. The browser does not rerun physics.</p><p>These are authored-controller task attempts with a free rigid block and table. Success and failure labels come from the sealed source measurements. They do not demonstrate a learned policy, shoe manipulation or physical robot qualification. The grid, axes and joint markers are viewing aids.</p></div><div><h2>Inspect the evidence.</h2><p>Visual mode shows the model’s native surfaces. Collision mode shows the simpler contact proxies used by the simulator. The upstream fixed base has no collision proxy.</p><div class="notes-links"><a id="report-link" href="receipt/report.html">Complete task benchmark ↗</a><a id="receipt-link" href="receipt/report.json" download="dvidia-reference-report.json">Full recorded receipt ↓</a><a href="reference_replay.third-party.txt">Viewer license notices ↗</a></div><p id="provenance" class="tiny"></p></div></section><footer><span>Open-source DVIDIA tools</span><a href="https://github.com/Dvidia-Inference/dvidia-training">GitHub</a><a href="https://x.com/iammrriver">@iammrriver</a><a href="mailto:hello@dvidia.org">hello@dvidia.org</a></footer> | |
| <noscript><p>This interactive 3D replay needs JavaScript and WebGL2. You can still read the <a href="receipt/report.html">numerical benchmark</a> and <a href="receipt/report.json">recorded receipt</a>.</p></noscript> | |
| </main><script src="reference_replay.bundle.js" defer></script></body></html> | |