ACT policy for the SO-101, trained on real pick-cube and up-down recordings (30 fps, 640x480)

Status: experimental. The pick-cube part of this policy is not better than "stay still" on held-out data, so do not expect it to grasp reliably.

What it is

An ACT policy trained with LeRobot's train().

  • Inputs: observation.images.front, observation.images.wrist (640x480 RGB) and observation.state (6 joints).
  • Output: chunks of 90 future joint targets (n_action_steps = 30).
  • Training data: 145 episodes from the MikelRubi/so101-pick-cube_* and MikelRubi/up-down_* recordings made with 17_record_real_so101.py, put on one footing by 19_build_so101_act_dataset.py: everything at 30 fps and 640x480; the 10 fps / 1280x720 sessions were up-sampled 3x (no real extra information) and centre-cropped to 4:3. Episodes over 20 s were dropped.
  • Training: 30 000 steps, batch 8, image augmentation on, 20_train_act_so101.py, a local GPU.
  • The pick-cube episodes end when the piece is dropped in the bin; the up-down episodes are the return trip to the start pose (not an up/down motion).

Offline validation (held-out session, not a robot test)

Mean absolute error of the predicted action chunk, in joint units (about -100..100), against the "hold the current pose" baseline:

group frames policy hold-still below hold-still
pick-cube 556 21.8 22.05 1 %
up-down 351 19.41 28.53 32 %
overall 20.92 24.46 14.5 %

This says nothing about whether the arm grasps a piece. On pick-cube the policy is no better than staying still.

Use

from lerobot.policies.act.modeling_act import ACTPolicy
policy = ACTPolicy.from_pretrained("IkerAzurmendi/act_so101_all_30fps")

Code: demos/06_imitation_learning/ of the LeRobot_ workspace (19_build_so101_act_dataset.py, 20_train_act_so101.py).

Downloads last month
31
Safetensors
Model size
51.7M params
Tensor type
F32
ยท
Video Preview
loading