Hungryhusky ACT: cubes and cylinder

Team: hungryhusky
Members: Parker Cai and Aleksei Anisimov

An ACT policy for the SO-101 cubes/cylinder task, using wrist, front, and top cameras.

Selected checkpoint

60,000 baseline updates followed by 2,000 fine-tuning updates without augmentation. Seed: 1000.

We selected the seed-1000 ACT checkpoint after 60,000 baseline updates plus 2,000 fine-tuning updates without augmentation because it achieved the lowest full original-holdout normalized action L1 (0.25951); this is an offline selection result, not a measured real-robot success rate.

Offline evaluation

All scores below use the same original holdout: episodes 102–119, 8,427 frames. Lower normalized action L1 is better.

Candidate Full-holdout normalized action L1
Baseline, 60,000 updates 0.2603762545
Selected: baseline + 2,000 updates, no augmentation 0.2595101075
Baseline + 2,000 updates, mild brightness/contrast augmentation 0.2596074125

The selected checkpoint improves this error by about 0.33% relative to baseline. This is a small development-holdout difference, not a demonstrated improvement in robot success or a claim of statistical significance. The holdout contains only white-cube/white-bin examples and was used repeatedly for checkpoint selection. Scores from the separate balanced-split experiment are not directly comparable.

Training

  • Dataset: BrutalCaesar/phi_so101_cubes_cylinder_v1
  • Dataset revision: 014a212f6a30d68b39015546a9590c0927b8b9fa
  • Architecture: ACT with ResNet-18 visual backbone
  • Seed: 1000; batch size: 8
  • Chunk size: 50; deployment n_action_steps: 50
  • Original train episodes: 0–101; validation episodes: 102–119
  • Fine-tuning: learning rate 3e-6 for both parameter groups, fresh AdamW optimizer, no augmentation
  • LeRobot 0.6.0; PyTorch 2.11.0+cu128; torchvision 0.26.0+cu128
  • Source code: physical-hardware-intelligence/phi

Inputs and outputs

Three RGB inputs, float values in [0, 1], each shaped [3, 480, 640]: observation.images.wrist, observation.images.front, observation.images.top.

observation.state and output actions each have six dimensions: shoulder_pan.pos, shoulder_lift.pos, elbow_flex.pos, wrist_flex.pos, wrist_roll.pos, gripper.pos.

Dataset rate: 30 Hz. Use the included preprocessing and postprocessing files for normalization and action unnormalization.

Loading

The repository root contains the complete inference checkpoint:

from lerobot.policies.act.modeling_act import ACTPolicy

policy = ACTPolicy.from_pretrained("parkercai/hungryhusky-act")
policy.eval()

Use LeRobot's matching processor pipeline to preprocess observations and unnormalize actions; loading the policy alone does not apply those processors.

The portable export removes machine-specific pretrained paths and disables redundant pretrained-backbone downloading. Learned weights and normalization tensors are unchanged. Export predictions matched the source checkpoint exactly on samples from episodes 102, 110, and 119. A separate offline process with empty model caches loaded the export and produced finite actions.

Limitations

No real-robot trials have been performed for this checkpoint. Offline action error does not measure closed-loop task success. Organizers' deployment settings, deadline, and final submission acceptance must be confirmed separately. Publishing this repository does not establish competition acceptance.

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

Dataset used to train parkercai/hungryhusky-act