Metadata-Version: 2.4
Name: egogym
Version: 0.1.3
Summary: EgoGym is a lightweight benchmark suite for egocentric robot policies
License: MIT
Project-URL: Homepage, https://github.com/omarrayyann/EgoGym
Project-URL: Repository, https://github.com/omarrayyann/EgoGym
Keywords: robotics,reinforcement-learning,mujoco,gymnasium
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: mujoco
Requires-Dist: gymnasium
Requires-Dist: opencv-python
Requires-Dist: scipy
Requires-Dist: gdown
Requires-Dist: numpy
Requires-Dist: torch
Requires-Dist: transformers
Requires-Dist: tqdm
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: flake8; extra == "dev"

<img height="250" alt="0208(3)-2" src="https://github.com/user-attachments/assets/e73f58b1-0dff-494a-b721-3de56a023fc5" />
<img height="250" alt="0209(3)" src="https://github.com/user-attachments/assets/d9a73cd0-1bf8-4ee1-833f-c207d9a85a39" />

# EgoGym

A lightweight benchmark suite for evaluating [CAP](https://cap-policy.github.io) policies and [π<sub>0.5</sub>](https://www.pi.website/blog/pi05) zero-shot.

```python
import gymnasium as gym
import egogym

env = gym.make(
    "Egogym-Pick-v0",           # Options: "Egogym-Pick-v0", "Egogym-Open-v0", "Egogym-Close-v0"
    robot="cap",                # Options: "cap", "droid"
    action_space="delta",       # Options: "delta", "absolute"
    num_objs=5,                 # Options: 1-5
)
```

## Run a baseline

```bash
# CAP
python run.py --policy baselines/cap_policy.py --task pick --num_objs 5 \
  policy.model_path=checkpoints/cap-pick.pt

# π_0.5 (after running openpi server)
python run.py --policy baselines/pi_policy.py --task pick --num_objs 5 \
  --action_space absolute policy.host=0.0.0.0 policy.port=8000
```

## Citation

If you use EgoGym in your work, please cite:

```bibtex
@article{cui2026contact,
  title={Contact-Anchored Policies: Contact Conditioning Creates Strong Robot Utility Models},
  author={Cui, Zichen Jeff and Rayyan, Omar and Etukuru, Haritheja and Tan, Bowen and Andrianarivo, Zavier and Teng, Zicheng and Zhou, Yihang and Mehta, Krish and Wojno, Nicholas and Wu, Kevin Yuanbo and others},
  journal={arXiv preprint arXiv:2602.09017},
  year={2026}
}
