All work
Home Robotics · Ongoing

Home lab.

A running set of experiments with cheap arms on my living-room table, pointed at ordinary household jobs. The interesting part is not that the policies work, it is finding out exactly what they have and have not learned when they do.

Status Ongoing
Hardware SO-101 arms · XLeRobot
Policies ACT · SmolVLA · Diffusion · MolmoAct · π0.5
Stack LeRobot · Hugging Face

Why I'm doing this

I spent July 2022 to April 2024 on a real cleaning manipulator at Peanut Robotics using almost entirely classical methods: trajectory generation, ICP, state machines. This is the inverse experiment. Start from learned policies, fall back to classical control only where it earns its place, and find the principled boundary between the two by running into it.

Contact-rich manipulation is the interesting arena for that question, because it is exactly where pure learned policies struggle and pure classical control is too brittle. The useful question is not which one is better, it is what the right architecture for combining them looks like.

The setup

Everything here runs on SO-101 arms from my XLeRobot setup, driven by the LeRobot stack: teleoperate the arm to record demonstrations, push the dataset to Hugging Face, train a policy on it, then run that policy back on the same hardware. No motion planner, no hand-written controller. The robot learns the task from the demonstrations or it does not do the task.

That makes the failure modes unusually informative, which is really why these pages exist. When a classical pipeline fails you can trace it to a line of code. When a learned policy fails, you have to design an experiment to find out what it actually learned.

XLeRobot set up and running at home.

What I take from it so far

The open questions

Longer term, what I actually want out of this is a framework that wraps a learned policy in the classical layers it needs to be trusted: a state machine for task orchestration (approach, engage, clean, retract, recover), force feedback in the inner loop to bound contact forces regardless of what the policy outputs, and recovery behaviors for when the policy goes outside its envelope. The questions these experiments are meant to answer: