Skip to content

Commit 9259510

Browse files
committed
merge
2 parents 71470bc + 733cea1 commit 9259510

81 files changed

Lines changed: 780 additions & 212 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/page.js

Lines changed: 23 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -156,9 +156,7 @@ export default function FirstPost() {
156156
<br></br>
157157
</p>
158158

159-
<div style={{
160-
width: '130%',
161-
marginLeft: '-15%',
159+
<div className={styles.wideBreakoutImage} style={{
162160
marginTop: '4rem',
163161
marginBottom: '4rem'
164162
}}>
@@ -179,13 +177,7 @@ export default function FirstPost() {
179177
</p>
180178

181179
{/* Evaluation cards grid */}
182-
<div style={{
183-
display: 'grid',
184-
gridTemplateColumns: 'repeat(auto-fit, minmax(280px, 1fr))',
185-
gap: '1rem',
186-
margin: '1.5rem 0 3rem 0',
187-
padding: '0'
188-
}}>
180+
<div className={styles.evalCardsGrid}>
189181
{[
190182
{
191183
num: '1',
@@ -287,13 +279,7 @@ export default function FirstPost() {
287279
{/* Evaluation Bar Chart */}
288280
<EvalBarChart />
289281

290-
<div style={{
291-
display: 'flex',
292-
flexWrap: 'wrap',
293-
justifyContent: 'center',
294-
gap: '0.5rem',
295-
marginTop: '1rem'
296-
}}>
282+
<div className={styles.taskButtonRow}>
297283
{/* PnP-Easy - Green */}
298284
{[
299285
{ id: 'seen_1', label: 'Pick & Place Fruit' },
@@ -406,13 +392,7 @@ export default function FirstPost() {
406392
{/* Unseen Evaluation Bar Chart */}
407393
<UnseenEvalBarChart />
408394

409-
<div style={{
410-
display: 'flex',
411-
flexWrap: 'wrap',
412-
justifyContent: 'center',
413-
gap: '0.5rem',
414-
marginTop: '1rem'
415-
}}>
395+
<div className={styles.taskButtonRow}>
416396
{[
417397
{ id: 'unseen_1', label: 'Untie Shoe/Gift' },
418398
{ id: 'unseen_2', label: 'Take Hat Off/On from Mannequin' },
@@ -487,14 +467,9 @@ export default function FirstPost() {
487467

488468
<DroidBarChart />
489469

490-
<div style={{
491-
display: 'flex',
492-
flexWrap: 'wrap',
493-
justifyContent: 'center',
494-
gap: '0.5rem',
495-
marginTop: '1rem'
496-
}}>
470+
<div className={styles.taskButtonRow}>
497471
<button
472+
className={styles.taskButtonRow}
498473
onClick={() => setSelectedDroid('droid_1')}
499474
style={{
500475
padding: '0.4rem 0.8rem',
@@ -512,6 +487,7 @@ export default function FirstPost() {
512487
</button>
513488

514489
<button
490+
className={styles.taskButtonRow}
515491
onClick={() => setSelectedDroid('droid_2')}
516492
style={{
517493
padding: '0.4rem 0.8rem',
@@ -562,13 +538,7 @@ export default function FirstPost() {
562538
We investigate whether WAMs retain their generalization after being fine-tuning on task-specific data. We post-train on three downstream tasks : <em>shirt folding</em>, <em>fruit packing</em>, and <em>table bussing</em>. DreamZero enables stronger post-training results across three tasks, indicating that environment generalization is retained after post-training.
563539
</p>
564540

565-
<div style={{
566-
display: 'flex',
567-
flexWrap: 'wrap',
568-
justifyContent: 'center',
569-
gap: '0.5rem',
570-
marginTop: '1rem'
571-
}}>
541+
<div className={styles.taskButtonRow}>
572542
{/* Shirt Folding - Green (lowest diversity) */}
573543
<button
574544
onClick={() => setSelectedCombinedVideo(combinedVideos[0])}
@@ -642,20 +612,11 @@ export default function FirstPost() {
642612
display: 'flex',
643613
justifyContent: 'center'
644614
}}>
645-
<div style={{
646-
width: '60%',
647-
maxWidth: '50%'
648-
}}>
649-
<h3 style={{ textAlign: 'center', marginBottom: '0.5rem', marginTop: '-2rem' }}>
615+
<div className={styles.responsiveVideoWrapper}>
616+
<h3 style={{ textAlign: 'center', marginBottom: '0.5rem', marginTop: '-1rem' }}>
650617
{selectedCombinedVideo.label}: 10 consecutive evaluations | {selectedCombinedVideo.progress}
651618
</h3>
652-
<div style={{
653-
width: '100%',
654-
aspectRatio: '16/9',
655-
borderRadius: '6px',
656-
overflow: 'hidden',
657-
backgroundColor: '#0f0f0f'
658-
}}>
619+
<div className={styles.responsiveVideoInner}>
659620
<LazyVideo
660621
src={selectedCombinedVideo.policyRolloutVideo}
661622
title="Policy Rollout Video"
@@ -696,14 +657,7 @@ export default function FirstPost() {
696657
With only <b><a href="https://dreamzero0.github.io/yam_gallery/" style={{color: '#2d6555'}}>30 minutes</a></b> of play data (55 trajectories), DreamZero adapts to the YAM robot and generalizes zero-shot to novel objects like pumpkins, teddy bears, and paper bags, exhibiting strong language following capabilities. The knowledge gained from AgiBot pretraining transfers directly—no massive retraining required. To our understanding, this is the most efficient embodiment transfer yet—what previously demanded hundreds of hours of demonstrations, we accomplish in 30 minutes (no other YAM data was used). See the full 30-minute play dataset <a href="https://dreamzero0.github.io/yam_gallery/" style={{color: '#2d6555'}}><b>here</b></a>.
697658
</p>
698659

699-
<div style={{
700-
display: 'flex',
701-
flexWrap: 'wrap',
702-
justifyContent: 'center',
703-
gap: '0.5rem',
704-
marginTop: '1rem',
705-
marginBottom: '1.5rem' /* Add this */
706-
}}>
660+
<div className={styles.taskButtonRow} style={{ marginBottom: '1.5rem' }}>
707661
{YamVideos.map((option) => (
708662
<button
709663
key={option.id}
@@ -731,19 +685,8 @@ export default function FirstPost() {
731685
display: 'flex',
732686
justifyContent: 'center'
733687
}}>
734-
<div style={{
735-
width: '60%',
736-
maxWidth: '50%'
737-
}}>
738-
<div style={{
739-
width: '100%',
740-
aspectRatio: '16/9',
741-
borderRadius: '6px',
742-
overflow: 'hidden',
743-
backgroundColor: '#0f0f0f',
744-
marginTop: '-2rem',
745-
marginBottom: '-2rem' /* Add this */
746-
}}>
688+
<div className={styles.responsiveVideoWrapper}>
689+
<div className={styles.responsiveVideoInner} style={{ marginTop: '-2rem', marginBottom: '-2rem' }}>
747690
<LazyVideo
748691
src={selectedYam.policyRolloutVideo}
749692
title="New Embodiment Adaptation Videos"
@@ -789,14 +732,7 @@ export default function FirstPost() {
789732
<p>The era of prompting robot foundation models has arrived. In this section, we show some rollouts of interactive prompting in action, where we take the robot around, and just ask people to <b>prompt</b> the robot to do new things. Here are some cool tasks that we found the robot is able to do.</p>
790733

791734
{/* Section 5: Interactive Prompting - Green buttons */}
792-
<div style={{
793-
display: 'flex',
794-
flexWrap: 'wrap',
795-
justifyContent: 'center',
796-
gap: '0.5rem',
797-
marginTop: '1rem',
798-
marginBottom: '1.5rem'
799-
}}>
735+
<div className={styles.taskButtonRow} style={{ marginBottom: '1.5rem' }}>
800736
{InteractivePromptingVideos.map((option) => (
801737
<button
802738
key={option.id}
@@ -824,19 +760,8 @@ export default function FirstPost() {
824760
display: 'flex',
825761
justifyContent: 'center'
826762
}}>
827-
<div style={{
828-
width: '60%',
829-
maxWidth: '50%'
830-
}}>
831-
<div style={{
832-
width: '100%',
833-
aspectRatio: '16/9',
834-
borderRadius: '6px',
835-
overflow: 'hidden',
836-
backgroundColor: '#0f0f0f',
837-
marginTop: '-2rem',
838-
marginBottom: '-2rem',
839-
}}>
763+
<div className={styles.responsiveVideoWrapper}>
764+
<div className={styles.responsiveVideoInner} style={{ marginTop: '-2rem', marginBottom: '-2rem' }}>
840765
<LazyVideo
841766
src={selectedInteractivePrompting.policyRolloutVideo}
842767
title="Interactive Prompting Video"
@@ -884,13 +809,7 @@ export default function FirstPost() {
884809
</p>
885810

886811
{/* Section 6: Inference - Green for DreamZero, Blue for DreamZero-Flash */}
887-
<div style={{
888-
display: 'flex',
889-
flexWrap: 'wrap',
890-
justifyContent: 'center',
891-
gap: '0.5rem',
892-
marginTop: '1rem'
893-
}}>
812+
<div className={styles.taskButtonRow}>
894813
<button
895814
onClick={() => setSelectedInference('dreamzero')}
896815
style={{
@@ -939,35 +858,17 @@ export default function FirstPost() {
939858
How far can zero-shot generalization go? We've been stress-testing DreamZero with tasks we never trained on, in environments we've never seen. From fanning burgers to pressing elevator buttons, playing xylophones to shaking tambourines, we keep discovering surprising new capabilities. DreamZero is just the beginning of the new wave of robot foundation models built on video world models!
940859
</p>
941860

942-
<div style={{
943-
display: 'flex',
944-
flexWrap: 'wrap',
945-
gap: '0.5rem',
946-
margin: '1rem 0'
947-
}}>
861+
<div className={styles.taskTags}>
948862
{[
949863
'Fan the burger', 'Press elevator button', 'Play xylophone',
950864
'Shake tambourine', 'Pour into human-held cup', 'Open laptop',
951865
'Ring the bell', 'Flip the pancake', 'Water the plant'
952866
].map((task) => (
953-
<span key={task} style={{
954-
background: 'rgba(118, 185, 0, 0.1)',
955-
border: '1px solid rgba(118, 185, 0, 0.2)',
956-
borderRadius: '20px',
957-
padding: '0.35rem 0.75rem',
958-
fontSize: '0.85rem'
959-
}}>
867+
<span key={task} className={styles.taskTag}>
960868
{task}
961869
</span>
962870
))}
963-
<span style={{
964-
background: 'rgba(118, 185, 0, 0.2)',
965-
border: '1px solid rgba(118, 185, 0, 0.3)',
966-
borderRadius: '20px',
967-
padding: '0.35rem 0.75rem',
968-
fontSize: '0.85rem',
969-
fontWeight: '600'
970-
}}>
871+
<span className={`${styles.taskTag} ${styles.taskTagHighlight}`}>
971872
<a href="https://dreamzero0.github.io/evals_gallery/">+90 more...</a>
972873
</span>
973874
</div>
@@ -978,21 +879,8 @@ export default function FirstPost() {
978879
rel="noopener noreferrer"
979880
style={{ textDecoration: 'none' }}
980881
>
981-
<div style={{
982-
background: 'linear-gradient(135deg, rgba(118, 185, 0, 0.15) 0%, rgba(118, 185, 0, 0.05) 100%)',
983-
border: '1px solid rgba(118, 185, 0, 0.3)',
984-
borderRadius: '12px',
985-
padding: '1.5rem',
986-
marginTop: '1.5rem',
987-
display: 'flex',
988-
alignItems: 'center',
989-
gap: '1rem',
990-
cursor: 'pointer',
991-
transition: 'all 0.2s ease'
992-
}}>
993-
<div style={{
994-
fontSize: '2.5rem'
995-
}}>
882+
<div className={styles.ctaBox}>
883+
<div style={{ fontSize: '2.5rem' }}>
996884
🎬
997885
</div>
998886
<div>

data/videoData.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,7 @@ export const UnseenVideos = {
479479
caption: 'Grab one side of the map and fold the map. | ✅'
480480
},
481481
{
482-
generatedUrl: '/labs/gear/videos/agi_unseen/hsl/NEWUNSEEN_67_AI.m3u8',
482+
generatedUrl: '/labs/gear/videos/agi_unseen/hsl/NEWUNSEEN_067_AI.m3u8',
483483
executionUrl: '/labs/gear/videos/agi_unseen/hsl/NEWUNSEEN_67.m3u8',
484484
caption: 'Grab one side of the map and fold the map. | ⚠️'
485485
},

public/evals_gallery/index.html

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,44 @@
148148
color: #1f4739;
149149
text-decoration: underline;
150150
}
151+
152+
/* Mobile filters dropdown */
153+
.filters-dropdown-btn {
154+
display: none;
155+
width: 100%;
156+
font-weight: 700;
157+
margin-bottom: 0.5rem;
158+
}
159+
.filters-content-collapse {
160+
display: block;
161+
}
162+
@media (max-width: 767px) {
163+
.nav.nav-pills.nav-fill {
164+
flex-direction: column;
165+
}
166+
.nav.nav-pills.nav-fill .nav-item {
167+
width: 100%;
168+
margin-right: 0 !important;
169+
margin-bottom: 0.5rem;
170+
}
171+
.nav.nav-pills.nav-fill .nav-item:last-child {
172+
margin-bottom: 0;
173+
}
174+
.filters-dropdown-btn {
175+
display: block;
176+
}
177+
.filters-content-collapse {
178+
display: none;
179+
}
180+
.filters-content-collapse.show {
181+
display: block;
182+
}
183+
}
184+
@media (min-width: 768px) {
185+
.filters-content-collapse {
186+
display: block !important;
187+
}
188+
}
151189
</style>
152190
</head>
153191
<body>
@@ -168,7 +206,10 @@
168206

169207
<div class="row">
170208
<div class="col-md-2 px-1 col-12">
171-
209+
<button class="btn btn-outline-dark filters-dropdown-btn" type="button" id="filters-toggle-btn" aria-expanded="false" aria-controls="filters-content">
210+
Filters <span id="filters-chevron" aria-hidden="true"></span>
211+
</button>
212+
<div class="filters-content-collapse" id="filters-content">
172213

173214
<div class="mb-2" id="scene-checkbox-group">
174215
<h5 class="mb-1">Scene Types</h5>
@@ -550,6 +591,7 @@ <h5 class="mb-1">Task Types</h5>
550591
<p class="small mb-2" id="info-text"></p>
551592
<button class="btn btn-outline-dark btn-sm" id="resample-button" style="display: none;">Resample</button>
552593
</div>
594+
</div>
553595
</div>
554596

555597
<div class="col" id="video-grid">
@@ -818,6 +860,8 @@ <h5 class="mb-1">Task Types</h5>
818860
JSON.parse('{"info": "Use right arm to wipe water on counter with towel\u003cbr\u003e\u003cbr\u003eTowel / Wipe", "object_id": "object-5", "poster": "videos/NEWDATAVIZ_010_small.jpg", "scene_id": "scene-4", "src": "videos/NEWDATAVIZ_010_small.mp4", "task_id": "task-16"}'),
819861
JSON.parse('{"info": "Grab the brush with right arm and use it to scrub sink\u003cbr\u003e\u003cbr\u003eCleaning Tool / Clean", "object_id": "object-17", "poster": "videos/NEWDATAVIZ_011_small.jpg", "scene_id": "scene-4", "src": "videos/NEWDATAVIZ_011_small.mp4", "task_id": "task-22"}'),
820862
JSON.parse('{"info": "Pull paper towel out of dispenser with right arm\u003cbr\u003e\u003cbr\u003eTowel / Pull", "object_id": "object-5", "poster": "videos/NEWDATAVIZ_012_small.jpg", "scene_id": "scene-4", "src": "videos/NEWDATAVIZ_012_small.mp4", "task_id": "task-11"}'),
863+
JSON.parse('{"info": "Pick up drum stick and hit cymbal\u003cbr\u003e\u003cbr\u003eOther / Other", "object_id": "object-20", "poster": "videos/NEWDATAVIZ_013_small.jpg", "scene_id": "scene-6", "src": "videos/NEWDATAVIZ_013_small.mp4", "task_id": "task-20"}'),
864+
JSON.parse('{"info": "Push the button\u003cbr\u003e\u003cbr\u003eOther / Push", "object_id": "object-20", "poster": "videos/NEWDATAVIZ_014_small.jpg", "scene_id": "scene-7", "src": "videos/NEWDATAVIZ_014_small.mp4", "task_id": "task-14"}'),
821865
];
822866

823867
const filters = [
@@ -1027,6 +1071,21 @@ <h5 class="mb-1">Task Types</h5>
10271071
// Add a click event listener to the "Resample" button
10281072
resampleButton.addEventListener('click', filterVideos);
10291073

1074+
// Mobile filters dropdown toggle
1075+
(function() {
1076+
var toggleBtn = document.getElementById('filters-toggle-btn');
1077+
var filtersContent = document.getElementById('filters-content');
1078+
var chevron = document.getElementById('filters-chevron');
1079+
if (toggleBtn && filtersContent) {
1080+
toggleBtn.addEventListener('click', function() {
1081+
filtersContent.classList.toggle('show');
1082+
var isOpen = filtersContent.classList.contains('show');
1083+
toggleBtn.setAttribute('aria-expanded', isOpen);
1084+
if (chevron) chevron.textContent = isOpen ? '▲' : '▼';
1085+
});
1086+
}
1087+
})();
1088+
10301089
// Initial filtering of videos
10311090
filterVideos();
10321091

9.43 KB
Loading
24.7 KB
Binary file not shown.
13.7 KB
Loading
52.5 KB
Binary file not shown.

public/labs/gear/videos/agi_unseen/hsl/NEWUNSEEN_006_02.m3u8

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
#EXT-X-VERSION:3
33
#EXT-X-TARGETDURATION:9
44
#EXT-X-MEDIA-SEQUENCE:0
5-
#EXTINF:8.666667,
5+
#EXTINF:8.625000,
66
NEWUNSEEN_006_02_000.ts
77
#EXT-X-ENDLIST
-8.45 KB
Binary file not shown.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#EXTM3U
2+
#EXT-X-VERSION:3
3+
#EXT-X-TARGETDURATION:12
4+
#EXT-X-MEDIA-SEQUENCE:0
5+
#EXTINF:11.541667,
6+
NEWUNSEEN_012_AI_000.ts
7+
#EXT-X-ENDLIST

0 commit comments

Comments
 (0)