Project page for GRASP: Gradient-Guided Sampling for Contact-Rich Physics-Based Motion Retargeting.
Authors: Yang Liu*, Tong Wang*, Yiming Bao, Heng Yang.
Published at https://computationalrobotics.seas.harvard.edu/GRASP/ using GitHub Pages from the root of main.
Run python3 -m http.server 8765 here and open http://localhost:8765.
The page opens on unobstructed video. The first downward scroll slides in the title, authors, institutional logos, and navigation while the background remains pinned. Four backgrounds rotate independently every 7 seconds:
- Real dex — dexterous-hand demo mosaic.
- Real humanoid — humanoid demo mosaic.
- Sim dex — 100 of the 166 hand clips, shuffled into four rows of 25 that slide left to right.
- Sim humanoid — all 100 humanoid clips, shuffled into four rows of 25 that slide left to right.
Pagination buttons change the background without moving the page and restart the 7-second interval. The global pause button, reduced-motion preference, hidden tab, or offscreen hero suspend automatic rotation.
Below the introduction, real-world demonstrations are separated into dexterous-hand (10 videos) and humanoid (16 videos) sections. The Sim dex section has Sharpa, XHand and Wuji tabs, each showing a 4 × 4 wall of 16 selected OakInk2 bimanual trajectories; hovering a wall reveals “Open visualization”, and every wall links to oakink2/, which shows all 166 trajectories (Sharpa 50, XHand 73, Wuji 43) with hand and motion-type filters, search, ordering, paging, and an enlarged view. The Sim humanoid section has Unitree G1, Unitree H2 and Booster T1 tabs, each showing a 4 × 4 wall of 16 selected clips; every wall links to humanoid/, which shows all 100 humanoid trajectories with robot and object filters.
The original dex gallery and hero-source GRASP videos are converted to H.264 MP4 at 960 × 540, 24 fps, 2× source speed, with audio and source metadata removed. The originals are unchanged. The playback rate is baked into the files: JavaScript should not double it again. Real hero videos are 16-second, 1920 × 1080 mosaics. Dex retains 3 rows and 4 columns, with pumpkin-lantern lifting and whiteboard erasing in the middle row. Humanoid uses 4 rows and 4 columns with all 16 current demos, each once. Its center four tiles are the crawl clip, pumpkin carrying, and two box-handling clips (new-10, pumpkin-carry, new-04, new-08). hero-layout.json records the exact row-major arrangement; rebuild with python3 scripts/build-hero.py /path/to/ffmpeg. The builder reads encoded speeds from media.json: dex clips are already 2×; original-speed humanoid clips are accelerated only in the hero output. Short clips loop within the mosaics.
media.json lists the title, group, video, poster, and encoded speed for each clip. Entries in the sim-dex group fill the wall of the hand named by their robot field (sharpa, xhand or wuji) in order; sim-humanoid entries fill the wall of the robot named by their robot field (g1, h2 or t1).
The OakInk2 clips are kinematic replays of the executed_qpos that GRASP produced for each task, rendered through Viser and Chromium at 960 × 720 (silver Sharpa, blue XHand and official black-and-silver Wuji hands; objects in their scanned vertex colors, or green and tan for the four without them; grey ground). The site shows the 166 successful clips that pass a visual interpenetration filter: hand mesh at most 6 mm inside the object's convex pieces, at most 5 mm below the ground, the two objects at most 3 mm into each other, and nothing touching the frame edge. Clips longer than 8 s are sped up to fit, by the factor stored as speed. media/oakink2/ holds 640 × 480 H.264 videos (about 13 MB in all) and mid-clip posters named <hand>_<task>; oakink2/clips.json holds the title, hand, motion type, speed, length, and object tracking error of every clip. Rebuild both, and the sim-dex entries of media.json, with python3 scripts/build-oakink2.py /path/to/renders /path/to/selection.json /path/to/ffmpeg; existing posters are kept, so delete media/oakink2/ to re-encode. The Sim dex hero background, media/hero-sim-dex-scroll.mp4, is built the same way as the Sim humanoid one from the hero clips of selection.json (recorded in hero-dex-scroll-layout.json), each tile cropped around its clip's motion: python3 scripts/build-hero-dex-scroll.py /path/to/renders /path/to/selection.json /path/to/ffmpeg (needs numpy).
The humanoid clips are MuJoCo rollouts of GRASP tracking OMOMO human–object interactions (all three robots) and LAFAN motions (Booster T1), rendered at 960 × 540 in real time. media/humanoid/ holds their 640 × 360 derivatives and mid-clip posters, and humanoid/clips.json lists robot, object, length, and mean object and root errors; rebuild with python3 scripts/build-humanoid.py /path/to/videos_final /path/to/ffmpeg. The Sim humanoid hero background, media/hero-sim-humanoid-scroll.mp4, is a 60-second, 1920 × 1080, 20 fps loop: the 100 clips, shuffled with a fixed seed into four rows of 25 (recorded in hero-scroll-layout.json), slide left to right at 120 px/s, each tile playing its clip from a random phase. A row travels exactly its own length per loop and every tile clip is fitted to 6 s or 10 s, so the loop has no seam. Rebuild with python3 scripts/build-hero-scroll.py /path/to/videos_final /path/to/ffmpeg (needs numpy). Both visualizers run the same assets/visualizer.js and assets/visualizer.css; each page names its manifest in <body data-clips>, and the manifest supplies the media folder, filter facets, and caption text.
Offscreen videos are paused; gallery clips are loaded near the viewport. The global pause control stops all videos. Reduced-motion preferences disable autoplay. Native controls support scrubbing and fullscreen.
index.html: title, authors, four hero backgrounds, and four demo sections.styles.css: responsive layout and dark-to-light transition.app.js: scroll stages, media loading, video controls.media.json: demo manifest, including the featured simulation clips (16 per hand, 16 per humanoid). GitHub Pages caches files for 10 minutes, so after editing it bump themedia.json?v=fetch inapp.jsand thenapp.js?v=inindex.html; after rebuilding a visualizer, bumpclips.json?v=in that page'sdata-clips.media/: web video and poster derivatives;media/oakink2/andmedia/humanoid/hold every simulation clip.oakink2/,humanoid/: visualizer pages and theirclips.json;assets/visualizer.jsandassets/visualizer.cssare shared by both.
No private Overleaf link, inferred author affiliations, or unpublished paper link is exposed. The structural reference is InterMimicGen; the implementation and all displayed media belong to this project. Assets from the earlier figure-based draft remain available but are no longer displayed.
Harvard crimson: #A51C30, per the Harvard SEAS palette. Light text is retained over dark video for legibility.
Institutional logo sources (the Harvard shield is extracted from the official SVG without changing its paths; the wordmark is omitted):
- Harvard University: https://www.harvard.edu/wp-content/themes/core/assets/img/theme/branding-assets/footer-logo.svg
- Computational Robotics Group: transparent Halloween variant with warm gold lettering in
assets/computational-robotics-halloween-gold.png, edited with imagegen from the supplied artwork. The original remains unchanged asassets/computational-robotics-halloween.png. Transparent margins are cropped in CSS; no white backing panel is used.
The hero links are ordered Paper, Code, Dataset, TL;DR, then Explore research. Paper, Code, and Dataset are intentionally disabled without release-status labels until public release URLs are provided. The buttons use document, GitHub, Hugging Face, and X icons respectively. The Hugging Face SVG comes from https://huggingface.co/front/assets/huggingface_logo-noborder.svg. TL;DR is reserved for the Twitter/X announcement post. It is disabled without a release-status label until the post URL is available.
The real humanoid section shows nine distinct October 30 humanoid_new clips, the October 31 pumpkin-carrying clip, and six original demonstrations. Pumpkin carrying replaces new-06, whose decoded video was identical to new-07; the second original pushing view is excluded. The sixteen clips use a fixed shuffled order (seed 20261030), a four-column desktop grid, and a two-column mobile grid. They play at original source speed, without captions, numbering, or speed badges. media/real-humanoid/ contains freshly encoded H.264 960 × 540 derivatives and posters; sourceFile in the manifest records each original file relative to the GRASP source directory. Audio is removed and original timestamps are preserved. The humanoid hero uses the same 16 clips in a separate 4 × 4 mosaic at 2× speed, with crawl, pumpkin carrying, and two box-handling clips in the center four positions.
The final #results section has independent accessible tabs for OakInk2 dexterous retargeting and G1 humanoid retargeting (LAFAN1, AMASS, OMOMO). Values are transcribed from Overleaf commit cbb75e9, arxiv/generated/main_table.tex and humanoid_table.tex. Baseline provenance and evaluation-scope notes are visible beneath each table; protocol details expand on demand. GRASP rows have a pale crimson background; numerical bolding denotes best reported values per metric (within each humanoid dataset), including ties. HOT3D and cross-embodiment results are not included. Existing demo sections are unchanged.
The always-visible #policy-learning subsection follows both retargeting result panels, inside Results. Dexterous hand and Humanoid each have two labeled 16:9 reference-video slots: Kinematic reference and GRASP, immediately followed by the corresponding PPO learning curves. Their stable IDs are policy-dex-kinematic, policy-dex-grasp, policy-humanoid-kinematic, and policy-humanoid-grasp. The dexterous slots show the same continuous multi-axis pen spin on the Wuji hand (03_continuous_multi_axis/clip_009, 19.8 s in real time) from one fixed camera: the TopoRetarget IK reference, and the executed_qpos that GRASP produced from it. The humanoid slots show a Unitree G1 lifting and carrying a large box (OMOMO sub12_largebox_080, 6 s in real time): the HOI-Retarget kinematic reference and GRASP's executed_qpos, rendered in the Sim humanoid style with the GRASP clip's camera path on both. media/policy/ holds the 960 × 540 MuJoCo renders: 25 fps with a blue hand, orange pen, and white background for the pen spin; 30 fps for the G1 pair.
The full figures in assets/results/ are 2,400-pixel-wide renders of arxiv/figures/single_axis_rl.pdf and grasp_omniretarget_rl.pdf. The dexterous figure, dex-policy-learning-v2.png, redraws the original nine-clip data in the humanoid figure's fonts and style, with the website labels Kinematic (TopoRetarget) and GRASP (ours). Both use the red kinematic / blue GRASP convention. Each plot can scroll horizontally on narrow screens or open at full size. Both studies remain visible when the retargeting result tabs change.
The full paper abstract (Overleaf commit 63f5723, arxiv/main.tex) follows Results near the end of the page. It is split into three paragraphs for web readability without changing its wording. The #method section contains an animated explanation of archived evaluations and gradient-guided proposals. Overview contains the complete 1:59 project film (v20) with native playback, scrubbing, fullscreen, and picture-in-picture controls. It loads on demand and does not autoplay or loop. media/grasp-overview-v20.mp4 is the original 1080p30 H.264 export with fast-start enabled and an instrumental soundtrack; its poster is the exact first frame of the film. The film includes the six kinematic and six physics-refined pipeline clips, the October 30 box-pushing demonstration, and the current Sim dex hero wall with the updated hand and object colors. The second page pairs dexterous object interaction with original-speed pumpkin carrying; the later humanoid quad places original-speed crawling at top right, alongside two box-carrying clips and October 30 box pushing.
The header and body follow Overview → Real robots → Method → Simulation → Results → Abstract → Cite. Real robots (#tasks) groups the existing #real-dex and #real-humanoid galleries; Simulation (#sim) groups both existing simulation sections. Overview embeds the full project video above the real-robot demonstrations. The original full-screen hero is preserved. The citation is a website-linked @misc entry with the current title, author order and year; no arXiv identifier or publication venue is assumed. The Copy BibTeX button copies the visible entry.
The inline SVG in index.html, styled and controlled by assets/method-insight.css and assets/method-insight.js, explains Evaluate → Recover → Guide → Correct & reuse. The first three steps each last 4.2 seconds; the final MH stage lasts 8.8 seconds to demonstrate acceptance and rejection in turn. Visitors can pause/play or select any step (which pauses playback); offscreen and hidden-tab animations stop. Reduced-motion preferences default to the complete static diagram. Without JavaScript, the full diagram and its explanation remain visible.
All curves, local control coordinates, and sample points are explicitly conceptual, not measured optimization traces. Filled/hollow archived points denote accepted/rejected proposals; both are retained. A local quadratic surrogate supplies guidance, and simulator evaluation plus MH correction remains separate. Newly evaluated pairs are used in the next fit. The three panels stack on narrow screens. The animation has its own pause control; the existing global video control continues to control videos.
The independent Correct & reuse module shows a guided proposal being evaluated in the simulator and tested with MH. Accept moves the current particle to the proposal; Reject leaves the particle in place. Both evaluations are retained for the next fit. The two outcome buttons pause the explanation on that example, and the expandable acceptance rule includes the true tempered target and forward/reverse proposal densities. MH animation geometry and phase changes use one clock, preserving progress across pauses and tab/viewport visibility changes. The #mh-correction anchor opens the explanation at the correction stage.
The Code and Dataset buttons link to https://github.com/ComputationalRobotics/GRASP_code and https://huggingface.co/datasets/1duahcua9/GRASP-OakInk2, respectively. Both open in a new tab. The v13 film uses the Hugging Face address in the dataset scene (178–186 seconds) and includes both direct resource URLs alongside the project homepage in the closing scene (186–194 seconds). All earlier scenes and the 3:14 duration are unchanged.
The Paper button opens assets/GRASP.pdf in a new tab. This is the full 24-page paper, including references and appendix, compiled from Overleaf commit 99b91da on 2026-10-31. It includes the approved humanoid figure layout and the latest Wuji results.
After the first 9.2-second pumpkin demonstration, a six-second introduction reveals the paper title, all four authors, and the website Harvard shield and Halloween lab logo from below. The first two authors retain their stars. The two logos move together to the upper-right corner and remain through the final frame. The video now runs 200 seconds (6000 frames at 30 fps); no original scene is accelerated or shortened. Typography follows the website: Manrope for display headings, Libre Caslon Display for the paper subtitle, and DM Sans for authors and video labels. Embedded paper plot typography is preserved.
The 122-second (3660-frame, 30 fps) edit uses per-section speed adjustments from v14. The pumpkin lights-out effect and six-second paper introduction retain their timing. The method section runs 24 seconds, including seven seconds for MH correction; policy reference comparisons and RL curves occupy 18.5 seconds. Fully revealed learning curves hold for two seconds, and the closing links hold for four seconds. Faster demo motion and transitions create room for these explanations. The website typography, persistent upper-right logos, all source intervals, data, and resource URLs are retained. Speed multipliers are relative to the existing edited footage, which already contains accelerated demonstrations.
The final montage now shows only the resource headline and project homepage URL, centered as two lines. The standalone Code and Dataset URL lines are removed. The earlier dataset scene retains its Hugging Face link, and the website resource buttons remain active. Timing, upper-right logos, and all scenes before 116.5 seconds are unchanged; total length remains 122 seconds.
The overview film now includes “Corporate Tech Ambient” by Pavetraxx (Pavel Sivahrakau), from Pixabay under the Pixabay Content License. Music fades in for two seconds and out over the final 3.5 seconds, with a gentle 3 dB reduction through the method, policy, and results sections. The 122-second video stream is copied unchanged from v16. The player uses its existing controls; hero and gallery videos remain muted.
The paper title, authors, and logo introduction now lasts three seconds instead of six. Entrance finishes at 0.7 seconds into the card; the logos move to the upper right from 1.8 to 2.75 seconds. Every other scene retains its timing. The continuous soundtrack and fades are aligned to the new 119-second timeline.
Added a math-capable fallback for the prime in z′ and J(z′), and alpha in the MH acceptance probability. The proposal, MH, and following transition scenes are re-rendered, retaining the website fonts for other characters. The 119-second timing and soundtrack are unchanged.
The dexterous-retargeting results chart reads values from Overleaf commit 7c29071, updating GRASP success from 94.1% to 94.2%. Position and rotation errors retain the paper table precision (0.03 m and 0.12 rad). All humanoid results and both RL curves were checked against the current paper. The paired reference captions no longer claim original playback speed. Duration remains 119 seconds; the soundtrack and all section timings are preserved.
Checked against Overleaf commit 3622baf on 2026-10-31. All 21 dexterous-retargeting and 45 humanoid table cells match the paper, including unavailable entries. GRASP Sharpa success and the abstract now report 94.2%; object errors preserve the paper table rounding (0.03 m, 0.12 rad).