Views
No views yet
| Architecture | ACT (Action Chunking with Transformers) |
| Vision backbone | ResNet18 (ImageNet-pretrained) |
| Transformer | dim=256, 4 heads, 2 encoder + 1 decoder layers |
| VAE | latent_dim=16, kl_weight=10.0 |
| Action space | [speed, steering] continuous, normalized to [-1, 1] |
| Chunk size | 20 steps (~1.3s at 15fps) |
| Parameters | 17.1M |
| Model size | 65 MB |
| Dataset | 100 episodes, 12,037 frames (13.4 min) |
| Training steps | 50,000 |
| Batch size | 8 |
| Learning rate | 1e-4 (AdamW) |
| Final loss | 0.185 |
| Training time | 5h 48m on MacBook Pro M1 Pro (MPS) |
| Epochs | ~33 |
| Framework | LeRobot 0.5.1 + PyTorch 2.10 |
observation.image: camera frame [3, 480, 640] float32 (ImageNet-normalized)observation.state: [speed, steering] float32, normalized to [-1, 1]action: [speed, steering] float32, normalized to [-1, 1]1from lerobot.policies.act.modeling_act import ACTPolicy
2from lerobot.policies.factory import make_pre_post_processors
3
4# Load policy
5policy = ACTPolicy.from_pretrained("pbelevich/lego42176_garage_parking_act")
6policy.eval()
7
8# Load normalizers
9preprocessor, postprocessor = make_pre_post_processors(
10 policy.config, pretrained_path="pbelevich/lego42176_garage_parking_act",
11)
12
13# Inference
14batch = preprocessor({
15 "observation.image": image_tensor, # [1, 3, 480, 640]
16 "observation.state": state_tensor, # [1, 2]
17})
18action = policy.select_action(batch)
19action = postprocessor(action) # [1, 2] denormalized