Spaces:
Running
Running
Download index.html from windjj/embodiedtrace: direct link, hf CLI and curl.
- Browser
- Download file 13.2 kB
-
https://huggingface.co/spaces/windjj/embodiedtrace/resolve/main/index.html
- Command line
-
hf download hf://spaces/windjj/embodiedtrace/index.html
-
curl -L -o index.html https://huggingface.co/spaces/windjj/embodiedtrace/resolve/main/index.html
13.2 kB
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"> | |
| <title>Datumwell EmbodiedTrace — Episode studio</title><meta name="description" content="Explore 100 embodied-agent episodes with synchronized robot footage, generated subgoals and structured EEF actions."><link rel="stylesheet" href="./styles.css"><script defer src="./app.js"></script> | |
| </head> | |
| <body> | |
| <a class="skip-link" href="#workspace">Skip to episode</a> | |
| <header class="app-header"> | |
| <div class="header-start"><button id="library-toggle" class="library-toggle" aria-label="Open episode library" aria-controls="episode-library" aria-expanded="false"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 5h16M4 12h16M4 19h16"/></svg><span>Library</span></button><a class="brand" href="https://datumwell.vercel.app/embodiedtrace/index.html" aria-label="EmbodiedTrace project overview"><svg viewBox="0 0 28 28" aria-hidden="true"><path d="M6 21V7h15M6 14h9v7h6"/><circle cx="6" cy="21" r="2.5"/><circle cx="21" cy="7" r="2.5"/><circle cx="21" cy="21" r="2.5"/></svg><strong>EmbodiedTrace<span class="brand-index">/100</span></strong><span>Episode studio</span></a></div> | |
| <div class="dataset-meta"><span class="live-dot"></span><span id="dataset-summary">Loading dataset…</span></div> | |
| </header> | |
| <div class="app-layout"> | |
| <aside id="episode-library" class="sidebar" aria-label="Episode library" tabindex="-1"> | |
| <div class="library-header"><div><span class="eyebrow">DEMONSTRATION ARCHIVE</span><h2>Episodes <span id="count">100</span></h2></div><button id="close-library" class="subtle-button" aria-label="Close episode library">×</button></div> | |
| <label class="search"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="8.5" cy="8.5" r="5.5"/><path d="m13 13 4 4"/></svg><input id="search" type="search" placeholder="Search tasks or episode IDs" aria-label="Search episodes"></label> | |
| <div class="filters"><select id="outcome-filter" aria-label="Filter recorded outcome"><option value="all">All outcomes</option><option value="success">Recorded success</option><option value="failure">Recorded failure</option></select><select id="split-filter" aria-label="Filter dataset split"><option value="all">All splits</option><option value="train">Train</option><option value="validation">Validation</option><option value="test">Test</option></select></div><div class="library-tools"><span id="library-match">100 episodes</span><button id="reset-filters" class="subtle-button" title="Clear filters">Reset</button></div> | |
| <div id="episode-list" class="episode-list" aria-label="Episodes"></div> | |
| <div class="library-footer"><span>100 EPISODES · 3 CAMERA VIEWS</span><span>3 synchronized views</span></div> | |
| </aside> | |
| <button id="library-backdrop" class="library-backdrop" aria-label="Dismiss episode library" tabindex="-1" hidden></button> | |
| <main id="workspace" class="workspace" aria-busy="true" tabindex="-1"> | |
| <div id="initial-loader" class="initial-loader"><div class="spinner"></div><p>Opening the episode library…</p></div> | |
| <div id="episode-workspace" hidden> | |
| <div class="episode-header"><div><div class="episode-kicker"><span id="episode-number"></span><span class="separator">/</span><span id="episode-lab"></span><span id="split-badge" class="badge neutral"></span></div><h1 id="task-title"></h1><div class="episode-context"><span id="outcome-badge" class="badge"></span><span id="episode-details"></span></div></div><div class="episode-actions"><div class="episode-navigation"><button id="previous-episode" class="icon-button" aria-label="Previous episode" title="Previous matching episode">←</button><button id="next-episode" class="icon-button" aria-label="Next episode" title="Next matching episode">→</button></div><button id="download" class="icon-button export-button" title="Download episode JSON" aria-label="Download episode JSON"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3v12m-5-5 5 5 5-5M5 16v4h14v-4"/></svg><span>JSON</span></button></div></div> | |
| <nav class="preview-links" aria-label="Dataset links"><a href="https://huggingface.co/datasets/windjj/datumwell-embodiedtrace" target="_blank" rel="noopener">Download dataset ↗</a><a href="https://datumwell.vercel.app/embodiedtrace/index.html">Project overview ↗</a><a href="https://datumwell.vercel.app/embodiedtrace/index.html#contact">Discuss a pilot ↗</a><a href="./NOTICE">Attribution & license</a></nav><div class="review-layout"> | |
| <div class="media-column"> | |
| <div id="active-goal-strip" class="active-goal-strip" hidden><span class="eyebrow">ACTIVE SUBGOAL</span><strong id="active-goal"></strong><span class="generated-indicator">Generated</span><button id="inspect-annotations" class="subtle-button" aria-label="Inspect generated annotations">↗</button></div> | |
| <section class="player-card" aria-label="Episode video player"> | |
| <div class="camera-toolbar"><div class="camera-tabs" aria-label="Camera view"><button data-camera="0" class="active">Exterior 1</button><button data-camera="1">Exterior 2</button><button data-camera="2">Wrist</button><button data-camera="all">All views</button></div><button id="fullscreen" class="subtle-button" aria-label="Enter fullscreen"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M7 3H3v4m10-4h4v4M3 13v4h4m10-4v4h-4"/></svg></button></div> | |
| <div id="stage" class="stage"><div class="stage-topline"><span id="media-type">RECORDED OBSERVATION</span><span id="camera-label">EXTERIOR 1</span></div><div id="camera-window" class="camera-window"><video id="video" preload="auto" muted playsinline></video></div><div id="video-loading" class="video-loading"><div class="spinner light"></div><span>Loading motion preview</span></div><div id="video-error" class="video-error" hidden><p>Motion preview isn’t ready yet.</p><button id="retry-video">Retry</button></div><div class="stage-bottomline"><span id="stage-frame">FRAME 0000</span><span>320 × 180 / camera</span></div></div> | |
| <div class="transport"><button id="play" class="play-button" aria-label="Play episode"><svg id="play-icon" viewBox="0 0 20 20" aria-hidden="true"><path d="m7 4 9 6-9 6z"/></svg></button><span id="timecode" class="timecode">00:00 / 00:00</span><div class="transport-spacer"></div><button id="previous-frame" class="subtle-button" title="Previous frame" aria-label="Previous frame">‹</button><button id="next-frame" class="subtle-button" title="Next frame" aria-label="Next frame">›</button><select id="speed" aria-label="Playback speed"><option value="0.5">0.5×</option><option value="1" selected>1×</option><option value="2">2×</option></select></div> | |
| <div class="timeline-area"><input id="scrubber" type="range" min="0" max="1" value="0" step="1" aria-label="Episode frame timeline"><div id="decision-markers" class="decision-markers" aria-label="EEF action markers"></div><div class="timeline-caption"><span><i></i>EEF decisions</span><span id="frame-count"></span></div></div> | |
| </section> | |
| <section class="decision-bar"><div><span class="eyebrow">AGENT DECISION</span><strong id="decision-counter">01 / 20</strong></div><div class="decision-navigation"><button id="previous-decision" class="subtle-button" aria-label="Previous decision">←</button><button id="next-decision" class="subtle-button" aria-label="Next decision">→</button></div><div class="decision-mode"><button id="observe-mode" class="active">Observation</button><button id="feedback-mode">Recorded feedback</button></div></section> | |
| <div id="feedback-note" class="feedback-note" hidden><span class="feedback-icon">↳</span><div><strong>Recorded next observation</strong><p id="feedback-description"></p></div></div> | |
| <div class="state-grid" aria-label="Recorded and target EEF state"> | |
| <section class="inspector-section"><div class="section-heading"><h2>End-effector pose</h2><span class="unit-label">m · robot base</span></div><div class="pose-table"><div class="pose-table-heading"><span>Axis</span><span>Recorded</span><span>Target</span></div><div id="pose-rows"></div></div><details class="orientation"><summary>Orientation <span>quaternion XYZW</span></summary><div id="quaternion-values"></div></details></section> | |
| <section class="inspector-section"><div class="section-heading"><h2>Gripper</h2><span id="gripper-state" class="small-badge">Open</span></div><div class="gripper-track"><div id="gripper-fill"></div><i id="gripper-target"></i></div><div class="gripper-labels"><span>Open</span><span>Closed</span></div><div class="gripper-values"><span>Recorded <b id="gripper-value">0.00</b></span><span>Target <b id="gripper-target-value">0.00</b></span></div></section> | |
| </div> | |
| <details class="snapshot-details"><summary><span id="snapshot-label">Decision snapshots</span><span class="summary-note">3 cameras</span></summary><section class="camera-strip" aria-label="Camera snapshots"><button data-snapshot="0"><img id="snapshot-0" alt="Exterior camera 1 at the selected decision"><span>Exterior 1</span></button><button data-snapshot="1"><img id="snapshot-1" alt="Exterior camera 2 at the selected decision"><span>Exterior 2</span></button><button data-snapshot="2"><img id="snapshot-2" alt="Wrist camera at the selected decision"><span>Wrist</span></button></section></details> | |
| <p class="preview-note">Recorded demonstrations. Sparse pose targets were not separately executed.</p> | |
| <p class="keyboard-hints"><kbd>Space</kbd> play / pause <span>·</span><kbd>←</kbd><kbd>→</kbd> frame <span>·</span><kbd>J</kbd><kbd>K</kbd> decision</p> | |
| </div> | |
| <aside class="inspector" aria-label="Pose and action inspector"> | |
| <section id="annotation-panel" class="annotation-panel" aria-label="Generated agent annotations" tabindex="-1" hidden> | |
| <div class="annotation-heading"><h2>Agent annotations</h2><span class="generated-badge">Generated</span></div> | |
| <p class="annotation-status">Weak labels · semantic hypotheses</p> | |
| <div class="subgoal-navigation"><button id="previous-subgoal" class="subtle-button" aria-label="Previous subgoal">←</button><select id="subgoal-select" aria-label="Generated subgoal"></select><button id="next-subgoal" class="subtle-button" aria-label="Next subgoal">→</button></div> | |
| <div id="subgoal-track" class="subgoal-track" aria-label="Subgoal phases"></div> | |
| <div class="annotation-block"><h3>Current subgoal <span id="subgoal-count"></span></h3><p id="subgoal-title" class="subgoal-title"></p><p id="subgoal-intent"></p></div> | |
| <div class="annotation-block"><h3>Action annotation</h3><p id="annotated-action"></p></div> | |
| <div class="annotation-block"><h3>Generated rationale</h3><p id="thinking-text"></p></div> | |
| <details class="annotation-details"><summary>Evidence & proposed task plan</summary><p class="annotation-disclaimer">Generated interpretation, not the demonstrator’s original thoughts. Generated labels are suggestions for inspection. Object attachment, contact and completion are unverified.</p><h4>Initial scene · generated visual review</h4><p id="initial-scene"></p><h4>Decision evidence</h4><ul id="annotation-evidence"></ul><h4>Proposed task plan · unverified</h4><ol id="task-plan"></ol><p id="semantic-caveat"></p><h4>Next observation check</h4><p id="next-check"></p></details> | |
| <div id="annotation-progress" class="annotation-progress" hidden><h3>Recorded progress · generated summary</h3><p id="progress-text"></p><p id="progress-check"></p></div> | |
| </section> | |
| <section class="inspector-section path-section"><div class="section-heading"><h2>Recorded EEF path</h2><span class="unit-label">XY plane</span></div><svg id="path-plot" viewBox="0 0 260 165" role="img" aria-label="Recorded end-effector path in robot-base XY coordinates"></svg><div class="path-legend"><span><i class="recorded-dot"></i>Recorded state</span><span><i class="target-dot"></i>Target</span></div></section> | |
| <section class="inspector-section action-section"><div class="section-heading"><h2>Pose action</h2><span class="small-badge">move_eef</span></div><p id="action-description"></p><div id="residuals" class="residuals" hidden></div><details><summary>View numeric action</summary><pre id="action-json"></pre></details><details id="prediction-panel" hidden><summary>Baseline prediction <span class="small-badge">held out</span></summary><pre id="prediction-json"></pre><p class="technical-note">Offline prediction on recorded state. No new execution feedback is available.</p></details></section> | |
| <details class="source-details"><summary>Episode details</summary><dl id="source-details"></dl></details> | |
| </aside> | |
| </div> | |
| </div> | |
| </main> | |
| </div> | |
| <div id="toast" class="toast" role="status" hidden></div> | |
| <video id="snapshot-decoder" hidden muted preload="metadata" aria-hidden="true"></video></body> | |
| </html> | |