Robot Learning on a Bi-manual Setup

Timeline: September 2025 – March 2026 Context: ETH Robotics Club Alejo Restrepo, Baraq Lipshitz, Sixtus Klein, Raphaël Drag, Elias Andreoli, Eduard Fell, Yuma Fischli, Tommaso Gazzini, Mateo Geiger, Balázs Günther, Mateo Haro, Damian Keller, Artus Kemmsies, Artur Melnikov, Timon Meyer, Kai Russenberger, Sebastian Samaniego, Nico Suter, Philip Weidenbach, Niklas Weiler.

Over the past six months, the Robot Learning team at the ETH Robotics Club built a low-cost bimanual arm setup, collected trajectory data with it and trained imitation learning models on short-horizon manipulation tasks.

Phase 1: iterating on hardware and teleoperation

We started with a pair of AgileX's lightweight 6DoF PiPER arms. For teleoperation we first used a VR setup with a Meta Quest 3 headset and wrist-mounted Innomaker (U20CAM-1080P-S1) cameras.

Testing out the workspace limits on our PiPER arm setup.
Testing out joint limits and the replay function.
Temporary variable wrist camera mount
Temporary variable wrist camera mount.
Having fun with a short replay task demo.
Fin-style grippers for compliance
Our fin-style grippers for compliance.
Old bi-manual setup
full view of our original bimanual PiPER arm setup.
VR teleoperation pipeline working, first towel folding data recording.

The setup was not precise or rigid enough for reliable data collection, so we swapped the PiPER arms for I2RT's YAM arms. We also built our own passive leader arms for bilateral teleoperation out of Dynamixel motors, and a rigid aluminum extrusion rig that keeps the YAM arms and the camera fixed in place. Teleoperation got noticeably more reliable with the new hardware.

New bi-manual setup
assembly of our new bimanual YAM arm setup.
New setup render
cooler render.
New setup photo
setting everything up and testing the main egocentric depth camera.

If an end-effector drives into the table, a rigid gripper breaks, or worse, the YAM motors take the damage. So the first modification was replacing the standard rigid grippers with Fin Ray grippers printed in TPU. They also grip better: TPU has a higher coefficient of friction than PLA, and the fins conform to irregular objects. We designed them to be hot-swappable so we can try other grippers without much downtime.

our detachable gripper mechanism allows for hot swapping different grippers.
Custom passive leader arms
V2 leader arms, stronger motors allowing for gravity compensation.

After the new year we rebuilt the leader arms with stronger Dynamixel motors. The higher stall torque made active gravity compensation possible, which makes teleoperation much less tiring and a lot smoother.

Upgraded passive leader arms with stronger Dynamixels
how our new leader arms looked after assembly, fitted with our logo!
teleop is very hard, as demonstrated by an inexperienced person.
better teleop by a veteran.
the boss testing out teleop when we first got it working.
collecting out of distribution data.
an expert teleop trajectory.

Phase 2: first validation, the towel test

With the hardware stable, we wanted to validate the whole pipeline, from data collection to policy deployment, before the end of the semester. We collected 250 trajectories of towel folding and trained an Action Chunking Transformer (ACT) on them. Running autonomously, the policy folded the towel in 85% of attempts, which was enough to trust the rig, the camera calibration and the software pipeline.

Setup check before data collection
A script checks every motor and camera port before a session, which saves hours of debugging.
Our dataset as viewed in LeRobot.

The data pipeline: raw YAMS teleoperation episodes → quality validation → standard format → train/val/test splits. After 300+ episodes I learned that more demos do not automatically mean better data. A slipped wrist camera, a top-down angle that drifted between sessions or a calibration nudged mid-batch does not show up until training, so every batch now goes through validation first. We have 863 demos across 9 datasets (347 towel, 516 carton box), inspected in the LeRobot visualizer with the same camera-drift checks on every batch.

Weights & Biases training run
Training run logged in Weights & Biases.
Weights & Biases GPU monitoring
GPU monitoring in Weights & Biases during training.

A 12-panel Plotly dashboard for checking what the model sees before trusting a checkpoint: an ACT readiness score, a chunk disagreement heatmap, episode-by-episode DTW similarity and a camera-drift analysis that shows the 44 worst pairs in the dataset.

Our dataset evaluation dashboard.

With the upgraded system we collected trajectories for a longer task: pick up a handheld fan, place it inside a box and close the lid. It needs millimeter-level precision and several distinct phases, so it is much harder for the model than towel folding, and the success rate was lower. We use it as the benchmark for our software iterations.

Two ACT policies running on YAMS

Towel folding
Placing a GPU fan into a carton box and closing it

What are we working on now / where are we headed

We are also developing our own framework based on Video Action Models and building a mobile version of the bimanual setup, the ETHRC Centaur.