BASELINE: LeRobot stock ACT on the bussing task

⚠️ This is a reference baseline, NOT the INSAIT whiteboard policy. It is LeRobot's off-the-shelf ACT implementation, included only as supporting evidence for comparison. The whiteboard policy is a different architecture: frozen swappable ViT encoder (DINOv2 / SigLIP / JEPA, 86.6M), 7-layer decoder, optional language conditioning, 142.3M parameters — versus this model's trainable ResNet-18, 1-layer decoder, no language, 51.6M.

LeRobot's stock ACT policy trained on Sombit/bussing_task_new. Loads with ACTPolicy.from_pretrained() — nothing custom to install.

from lerobot.common.policies.act.modeling_act import ACTPolicy
policy = ACTPolicy.from_pretrained("oku006/bussing-act")

Interface

observation.images.main 320×180 RGB, overhead camera
observation.images.wrist 320×180 RGB, wrist camera
observation.state 8-d: 7 joint angles + gripper
action 8-d: 7 joint velocities (rad/s) + gripper position
chunk_size 16, n_action_steps 8

Same action space as the π0.5 checkpoint (oku006/bussing-pi05-droid), so both drop into the same runner with action_space: joint_velocities.

Set flip_gripper: False — trained on the raw recorded convention (1.0 = open, ~0.3 = closed on an object).

Measured, held-out episodes [2, 4, 10, 20, 21]

metric value
velocity error 0.0203 rad/s
zero-motion baseline 0.0267 rad/s
beats doing nothing by 24.1%
motion ratio (1.0 = matches human) 0.940
joint error over the 8 executed steps 0.0307 rad (1.76°)
clipped by the controller 2.1%

Trained 40k steps (~50 epochs) on 33 of 38 episodes, loss 0.098. Checkpoints also exist at 10k/20k/30k steps.

Limits

33 episodes of one task. No generalization to new objects or layouts expected. All recordings start from ≈ the same home pose (1 cm spread), so starting far from it is out of distribution.

Downloads last month
-
Safetensors
Model size
51.6M params
Tensor type
F32
·
Video Preview
loading