Skip to content

Encrux/robohack26

Repository files navigation

robohack

Imitation learning on a LeRobot SO-101 arm, originally hacked together for RoboHack 2026 at EPFL — a 36-hour robotics hackathon we won with a peg-in-keyhole insertion task.

demo

Full write-up: boesch.dev/posts/robohack

⚠️ This is hackathon code. It runs end-to-end, but expect duplicate scripts, sketchy comments, and one-off branches that worked once at 4AM

What's in here

  • Teleoperation, recording, training and inference for the SO-101 arm
  • Multi-cloud training scripts (HuggingFace Jobs, RunPod, SLURM on KIT HoReKa, plus a SageMaker stub we never quite landed)
  • A small MuJoCo sim viewer for sanity-checking trajectories
  • An LLM-based open-vocabulary agent (separate from the ACT policy — experimental, not used in the hackathon submission)

Hardware

  • LeRobot SO-101 leader + follower arms (build guide)
  • One or more USB webcams (or an MJPEG stream from another host — see WSL_SETUP.md for the cross-host setup we used during the hackathon)
  • A 3D printer (we modified the gripper + workpieces; STL files available on request)

Quick start

# 1. Install
uv sync

# 2. Find your motor ports
scripts/find-port.sh

# 3. Calibrate (one-time per arm)
scripts/calibrate.sh

# 4. Teleoperate
scripts/teleop.sh

# 5. Record demonstrations
DATASET_NAME=my_task TASK="pick up the thing" scripts/record.sh

# 6. Train
DATASET_NAME=my_task scripts/train.sh

# 7. Run trained policy on the arm
scripts/run_policy.sh outputs/train/<run>/checkpoints/last/pretrained_model

# 8. Systematic eval (records rollouts as a dataset for review)
scripts/eval.sh outputs/train/<run>/checkpoints/last/pretrained_model

.env (copy from .env.example) holds the per-machine port + camera config. Don't commit it.

Pretrained models

The 1st-place hackathon checkpoint is on the Hub:

Training in the cloud

Target Entry point Use when
HuggingFace Jobs scripts/train_hf_job.py (via hf jobs uv run) Quick, pay-per-minute, lerobot-native
RunPod scripts/runpod_train.sh Need a beefy GPU you don't have locally
KIT HoReKa (SLURM) scripts/train.sbatch (1h chained jobs) Free if you have an allocation
SageMaker scripts/sagemaker_train.py + launch_sagemaker.py Untested past quota issues; see blog

Layout

src/robohack/        # Inference + recording entry points
scripts/             # Shell + Python utility scripts (cluttered, sorry)
scenes/              # MuJoCo XML scenes for the sim viewer
models/              # MuJoCo XML for the SO-101 mesh
tests/               # A handful of unit tests for the agent module

License

MIT.

About

Peg-in-Keyhole insertion using ACT on SO-101 for RoboHack2026

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors