Skip to content

egosteer/egosmith

Repository files navigation

EgoSteer: A Full-Stack System Towards Steerable Dexterous Manipulation from Egocentric Videos

Paper Project Page Data Model

EgoSmith Robot Stack EgoSteer

Our full-stack system integrates EgoSmith (this repo), Robot Stack, and EgoSteer to learn from large-scale egocentric human videos and facilitate data-efficient real-robot post-training, enabling steerable dexterous manipulation across over 40 tasks alongside few-shot adaptation to complex, long-horizon tasks.

This repository is EgoSmith, an egocentric data pipeline that curates in-the-wild egocentric videos into clean, fully-annotated training data for steerable dexterous manipulation. It runs ~9× faster than HaWoR through window batching and overlapped CPU-decode / GPU-compute.

Pipeline

  1. Pre-filtering: discard locomotion, occlusion, and bystander hands (optical-flow ego-motion gate + YOLO hand gate).
  2. Metric 4D motion: HaWoR regresses camera-frame MANO hands; DPVO (scale-free camera tracking) + Any4D (per-frame metric depth) recover per-frame camera intrinsics/extrinsics and metric scene depth, scale-aligned into temporally consistent world-space bimanual hand trajectories and actions.
  3. Language labeling: a multimodal LLM filters non-manipulation clips and writes five coarse-to-fine instruction levels.
  4. Post-filtering: episode / chunk / frame quality control removes reconstruction artifacts, inaccurate metric scale, and head-tracking drift.

Installation

EgoSmith runs in a single conda env named egosmith.

# 1. Environment (CUDA 12.8 + Torch 2.8 + DPVO source build; idempotent).
export CUDA_HOME=/usr/local/cuda-12.8        # point at your toolkit
bash scripts/setup/setup_env.sh
conda activate egosmith

# 2. HaWoR obtained from the pinned submodule (see docs/hawor_provenance.md).
git submodule update --init thirdparty/hawor_upstream
bash scripts/setup/fetch_hawor_base.sh

# 3. Model weights.
bash scripts/setup/download_weights.sh

# 4. Verify.
bash scripts/setup/validate_setup.sh

MANO assets are not downloadable by script (research license). Download from the MANO site and place them at _DATA/data/mano/MANO_RIGHT.pkl and _DATA/data_left/mano_left/MANO_LEFT.pkl.

Optional: make the packages importable from anywhere (otherwise run from the repo root):

pip install -e .

See docs/install.md for the manual step-by-step and troubleshooting.

Quickstart

1. Curate a single video into a trainable WebDataset

# configs/my_video.yaml:
#   video: /path/to/input.mp4
python scripts/run_dataset_pipeline.py --config configs/my_video.yaml

This extracts frames, runs the HaWoR / DPVO / Any4D stages, filters, builds the WebDataset, and validates the outputs. Language annotation is optional, so empty instruction fields are valid here. The output is a WebDataset of per-frame samples; its layout and the 116-d lowdim fields are described in docs/dataset_format.md.

2. See it work on the bundled example

Reconstruct one video end-to-end and overlay the hands back onto it with demo.py. It reads pre-extracted frames, so extract first:

python scripts/extract_frames.py --video_path example_video/video_0.mp4
python demo.py --video_path example_video/video_0.mp4

For other ways to inspect a finished run, see Inspect & visualize.

Documentation

Start here, then follow the guide for what you want to do:

I want to… Read
Install & troubleshoot docs/install.md
Understand the pipeline and its stages docs/dataset_pipeline.md
Know which data inputs are supported (single video, folders, BuildAI / HOT3D / FPHA …) docs/inputs.md
Generate language instructions (configure the API) docs/annotation.md
Run over a whole dataset / multi-GPU / multi-host docs/running_at_scale.md
Know what the output looks like (lowdim / meta schema) docs/dataset_format.md
Configure a run configs/README.md
Navigate the code docs/repo_map.md
HaWoR & licensing details docs/hawor_provenance.md

Repository layout

  • src/: source code: lib (the pipeline: stages, filtering, WebDataset build, viewer), plus the obtained HaWoR codebase (infiller / hawor).
  • scripts/: entrypoints: run_dataset_pipeline.py, batch_infer.py, plus setup/, build/, inspection/.
  • configs/: example configs.
  • docs/: the guides linked above.
  • thirdparty/: vendored DPVO, plus the Any4D and hawor_upstream submodules.

Acknowledgements

EgoSmith builds on excellent open-source work. Thank you to the authors:

  • HaWoR: egocentric hand reconstruction (the backbone).
  • Any4D: feed-forward metric 4D reconstruction.
  • DPVO: deep patch visual odometry.

License

EgoSmith's own code is Apache-2.0 (see license.txt). Dependencies obtained separately keep their own licenses (notably HaWoR and MANO are non-commercial / research-only) and are not redistributed here, see docs/hawor_provenance.md. You are responsible for complying with each dependency's license.

Citation

If you find our paper or this repository helpful in your research or project, please consider citing our work using the following BibTeX citation:

@misc{zhong2026egosteerfullstacksteerabledexterous,
      title={EgoSteer: A Full-Stack System Towards Steerable Dexterous Manipulation from Egocentric Videos}, 
      author={Yifan Zhong and Zhang Chen and Tianrui Guan and Fanlian Zeng and Yuyao Ye and Tianjia He and Ka Nam Lui and Jiayi Li and Tingrui Zhang and Ruilin Yan and Xinhao Ji and Guangyu Zhao and Wenjie Lou and Jiayuan Zhang and Yuanpei Chen and Yaodong Yang},
      year={2026},
      eprint={2607.09701},
      archivePrefix={arXiv},
      primaryClass={cs.RO},
      url={https://arxiv.org/abs/2607.09701}, 
}

About

An egocentric data pipeline that curates in-the-wild egocentric human videos into fully-annotated training data.

Resources

License

Stars

60 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors