Crowdsourced egocentric manipulation data pipeline for robot learning
Project description
EgoCrowd
Crowdsourced egocentric manipulation data pipeline for robot learning.
Turn iPhone recordings into robot training data. Zero additional hardware required.
Install
pip install egocrowd
With GPU support (for local object detection + hand pose):
pip install egocrowd[gpu]
With simulation (for MuJoCo replay):
pip install egocrowd[sim]
Quick Start
Download and explore the dataset
from egocrowd import download_dataset
import h5py
# Download from HuggingFace
path = download_dataset("egocrowd/pick-mug-v5")
with h5py.File(path, "r") as f:
ep = f["episode_0"]
qpos = ep["observations/qpos_arm"][:] # (270, 7) joint positions
ee = ep["observations/ee_pos"][:] # (270, 3) end-effector XYZ
actions = ep["actions/target_qpos"][:] # (270, 7) target joints
print(f"Mug lift: {ep.attrs['mug_lift_cm']:.1f}cm")
# -> Mug lift: 17.7cm
Process a new recording
# Parse .r3d file from Record3D
egocrowd process recording.r3d --object mug --output ./my_dataset
# With cloud GPU processing (GroundingDINO + HaMeR)
egocrowd process recording.r3d --cloud --output ./my_dataset
Use as a library
from egocrowd import parse_r3d, spatial_trajectory
from egocrowd.export import to_lerobot_hdf5, to_rlds_json
# Parse iPhone recording
data = parse_r3d("recording.r3d", output_dir="parsed/")
# Generate robot trajectory (after hand pose extraction)
traj = spatial_trajectory(
hamer_results="parsed/hamer_results.json",
object_poses="parsed/object_poses_3d.json",
)
# Export to LeRobot format
to_lerobot_hdf5(traj, qpos_data, "output/data.hdf5")
Pipeline Architecture
iPhone (.r3d)
|
v
[1. Parse] ──> RGB frames + LiDAR depth + camera poses
|
v
[2. Detect] ──> GroundingDINO: open-vocab object detection
|
v
[3. Hand Pose] ──> HaMeR: 3D hand mesh reconstruction (93.7% coverage)
|
v
[4. Retarget] ──> Spatial trajectory: hand motion -> robot EE targets
|
v
[5. Export] ──> LeRobot HDF5 | RLDS JSON | Raw JSON
Key Results
- 18.1cm clean mug lift in MuJoCo simulation from a single iPhone recording
- 93.7% hand pose coverage via HaMeR (no wearable sensors needed)
- $0 contributor hardware cost (core tier: iPhone with LiDAR only)
- 9-55x cheaper than teleoperation-based data collection
Supported Formats
| Format | File | Use Case |
|---|---|---|
| LeRobot HDF5 | data.hdf5 |
HuggingFace ecosystem, policy training |
| RLDS JSON | episode.json |
RT-X, Octo, Open X-Embodiment |
| Raw JSON | raw.json |
Custom pipelines, analysis |
Citation
@article{nyamekye2026egocrowd,
title={EgoCrowd: Crowdsourced Egocentric Manipulation Data at Consumer Cost},
author={Nyamekye, Christian},
journal={arXiv preprint arXiv:TODO},
year={2026}
}
License
CC-BY-4.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file egocrowd-0.1.0.tar.gz.
File metadata
- Download URL: egocrowd-0.1.0.tar.gz
- Upload date:
- Size: 11.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70fc097903616766a8a2f53514fc4bc39b35d4f9efeef36c015080961b45f0ba
|
|
| MD5 |
07e8e16196e18b2fd33d400391b1f5e9
|
|
| BLAKE2b-256 |
2aad34210333ee3cee81f328d1cf154c13c4a53cd18e45b562860d8b9bf61091
|
File details
Details for the file egocrowd-0.1.0-py3-none-any.whl.
File metadata
- Download URL: egocrowd-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc371fdef212a950de9a1f8ad119546ceda67ea84778083e7c0544f8906d775a
|
|
| MD5 |
0f2d0a1f413427bfbf441ecc06f7ae18
|
|
| BLAKE2b-256 |
8e3cf6e89cd1a4ef1555ddf5aeba5ddb5dce5cc1aed61abc6e4d68126423e0ad
|