VREgo: Consumer VR Headsets for Learning Robot Manipulation from Egocentric Demonstrations
Abstract
VREgo trains manipulation policies from demonstrations recorded on consumer VR headsets; we instantiate it with EgoKit on one such headset, the PICO 4 Ultra. On-device head and hand tracking and stereo object localisation allow the operator to begin a demonstration at the table. We adapt HumanEgo's preprocessing to estimate grasp thresholds per recording, update object positions after release, and propagate segmentation masks between keyframes. We evaluate policies in simulation on two tabletop tasks recorded by one operator. For cube placement, we compare PICO and Project Aria recordings of the same 41 layouts. With 40 training demonstrations, the PICO policies placed the cube on the tray in 67, 74, and 60 of 100 evaluation layouts across three training seeds. The corresponding Aria results were 73, 78, and 0. For a two-stage stacking task recorded with the PICO alone, the baseline placed the block on the tray in 94 of 100 layouts and met the end-of-episode criterion for both placements in two. In one diagnostic episode, repeated replanning deferred release beyond the eight executed steps. Demonstration replays also showed that the open gripper could displace the cube before grasping it. After adapting the training trajectories and adding task-specific execution rules that use simulator object positions, the system met both placement criteria in 93.8% of episodes across four evaluation noise seeds. The same 100 layouts informed rule development and evaluation. VREgo is available at https://vrego.chuange.org/.
Figures & tables
| Project Aria Gen 1 | PICO 4 Ultra (VREgo) | |
|---|---|---|
| Cameras used | one RGB, fisheye, 1408 1408 | two see-through, 1280 960 each, rectified, 64 mm apart |
| Image for the pipeline | undistorted, 640 480, 90 ∘ wide | left eye, 640 480, 76 ∘ wide |
| Frame rate | 30 fps | 30 fps |
| Head pose | MPS SLAM, in the cloud | headset runtime, on the device |
| Hand | MPS, 21 landmarks, in the cloud | OpenXR, 26 joints, on the device |
| Objects located by | head motion, 2 s of the walk-up | stereo, 1 s; walk-up optional |
| Change | Why it was needed | Measured effect |
|---|---|---|
| Objects located by stereo, with keypoints on long edges placed on a plane or an edge (Section 3.3 ) | One camera needs head motion; an edge along the stereo baseline cannot be matched | Static points repeat to 1.1–4.3 mm (9–925 mm from head motion); no keypoint of the 82 PICO takes located from head motion |
| Stationary start (Section 3.4 ) | Monocular triangulation requires viewpoint displacement | Head moves 0.8 cm in the object window; task 2’s separation error 0.22 0.65 cm (task 1: 0.25 0.49) |
| Grasp threshold per take; hand open until it is in the image | The reference’s hand is closed below 10.5 cm, set by its operators, whose open hand reads 14 cm; ours read 7.6–9.6 cm on the PICO, and a hand tracked before it enters the image hangs relaxed and reads closed | Label closes once per move in 11 of 11 pilot takes (7 of 9 with a fixed threshold) and in all 123 bulk takes |
| Objects drawn from their record | An object waiting for its turn loses its point tracks near the image border or under the hand, and they are not recovered | Pilot task 2: the cube’s drawn keypoints off the cube in 51–80 % of frames before, 7–43 % after; bulk task 2: median 0 % |
| Carried objects located again after each release, in the data and in the simulator | A carried object is put down where the hand’s record says, which depends on the label’s timing; 12 pilot holds ended 0.3–2.8 cm (median 1.5) from where the camera saw them | On two pilot takes, 0.1–0.5 cm from the point tracks after release (2.3–2.7 before); bulk task 2: median 0.3 cm (block) and 0.2 cm (cube) from the camera’s view |
| One detection box per object; isolated keypoints dropped; label runs under 20 frames removed | All detections above the threshold are merged into one mask, and the cube’s prompt also boxed the block next to it; two stray keypoints moved a cube by 4 cm | The cube located in the pilot take where it had not been; the stray keypoints removed |
| Per frame | SAM 2 video | SAM 3.1 | |
|---|---|---|---|
| Segmentation, task-2 take 000 (s) | 455 | 114 | 488 |
| Objects, gates, replays | reference | same 1 | differ 2 |
| False-arm frames, 38 takes | 1,745 | 1,885 3 | 108 |
| Arm masks unlike the default’s 4 | – | none | 9 of 38 |
| Task 1 | Task 2 | ||
| Aria | PICO | PICO | |
| Data | |||
| Walk-up | yes | yes | no |
| Take length, median (s) | 20.0 | 21.5 | 23.7 |
| Training frames per take, median | 363 | 377 | 616 |
| Preprocessing per take, median (min) | 9.0 | 8.3 | 12.8 |
| Training takes | 10 | 20 | 40 |
|---|---|---|---|
| Block not picked up | 69 | 29 | 6 |
| Block picked up, not set down on the tray | 3 | 1 | 0 |
| Block set down; gripper never opens again | 23 | 65 | 49 |
| Gripper opens, never closes again | 4 | 0 | 22 |
| Gripper closes again, cube not picked up | 0 | 1 | 11 |
| Cube picked up, not set down on the block | 1 | 1 | 10 |
| Execution | Both moves (SD) | (a) | (b) | (c) | (d) |
|---|---|---|---|---|---|
| Loop unchanged | 18.0 (2.4) | 5.5 | 49.3 | 8.0 | 17.5 |
| + Commitment | 24.8 (3.3) | 0 | 12.5 | 44.5 | 17.0 |
| + Settled, snapped grasps | 33.0 (3.7) | 0 | 9.0 | 14.8 | 42.3 |
| + Placement | 71.0 (3.2) | 0 | 9.0 | 9.5 | 9.5 |
| + Reach | 78.0 (0.8) | 0 | 6.5 | 6.5 | 8.0 |
| + From above | 93.8 (1.9) | 0 | 2.5 | 2.3 | 1.0 |
Robotic Manipulation
Robotic manipulation studies how robots perceive, plan, and control physical interactions to grasp, move, assemble, and use objects.
See all 1,765 papers