Degrees of FreedomA blog by Federico Pascual

RoboLab

A learning hub and evaluation cockpit for the imitation-learning policies I train on the SO-101. One place to log runs, compare policies across tasks, and keep the success rates honest.

RoboLab screenshot
STATUSIN PROGRESS
STARTED
STACKTypeScript · React · Express · Postgres · Docker
CONTENTS
  1. 01What it is
  2. 02How it works
  3. 03Status

What it is

Once you're training more than one policy (ACT first, then a fine-tuned π0.5) you end up with a pile of runs, checkpoints, and rollouts, and no honest way to compare them. RoboLab is my answer: a self-hosted web app that turns that mess into a cockpit. Training and Evaluation are fully built; Inference is next.

It's also, deliberately, a learning tool. Each area carries its own learning hub, with a step-by-step Learn path with a plain-language toggle, hands-on demos, a glossary, and a directory of about 90 robotics tools. Every factual claim in it carries a numbered citation to the primary sources: the ACT and Diffusion Policy papers, π0, evaluation best-practices work, and so on. I fact-checked the content against roughly 75 of those sources and fixed the four errors I found. Building the instrument was how I made myself actually understand training and evaluation.

How it works

RoboLab doesn't drive the robot or launch training jobs. It's the read-and-decide layer over the LeRobot loop. You paste a lerobot-train console log (or a W&B export) and it becomes a monitored run: loss and gradient-norm charts, throughput, and a gauge that answers whether your GPU is sitting starved for data. Paste a dataset's meta/info.json and you get its episode and camera stats.

Evaluation is logged by hand, one rollout at a time: where the object was, what happened, any notes. From that it builds a spatial heatmap of where the policy is weak, and puts a Wilson confidence interval on every success rate, because 6 successes out of 10 trials is not "60%". It's "somewhere between 31% and 83%," and pretending otherwise is how you fool yourself. There's an A/B tool for comparing two checkpoints properly, and checkpoints are ranked by success on the real robot, not by loss. Closing that loop, so training decisions are driven by evaluation evidence, is the whole point of the tool.

The stats are implemented from scratch and tested; the stack is TypeScript, React, Express, and Postgres, and the whole thing runs with one docker compose up.

RoboLab's training cockpit: a table of runs with status, loss, and on-robot success rates
The training cockpit: runs imported from lerobot-train logs, checkpoints ranked by on-robot success. Demo data shown.
RoboLab's Learn path: a staged curriculum with a plain-language toggle
Each area doubles as a learning hub: staged lessons, plain-language mode, citations throughout.

Status

Training and Evaluation are live (v0.4); Inference is scaffolded and coming. Full honesty: the screenshots on this page show seeded demo data. The π0.5-versus-ACT evaluation campaign will be RoboLab's first serious real workload, and I'll write that up when it happens. The code is on GitHub, and the longer-term plan is to grow it beyond the SO-101 to other robots.

Build log

AI

Training ACT to put a sock in a cardboard box

79 teleoperated episodes, two overnight training runs on an M3 MacBook, one glorious first success, and a hard lesson about task definition. The full story of teaching my SO-101 its first task, with real commands, real numbers, real failures.

6 MIN READ

Hardware

Assembling the SO-101

Why I picked Hugging Face's open-source arm, the vendor hunt, the parts that spent weeks crossing an ocean (and the camera that never shipped), the assembly, and the first time the follower arm mirrored my hand.

4 MIN READ

Hardware

Why this blog

I studied business administration, and there's a robot arm on my desk that picks up socks on its own. How I got here (electronics, Arduino, a "self-driving" toy car, an SO-101) and what I'm going to write about.

3 MIN READ