返回Guides

行动零碎变革器 (ACT):全面指南培训和实施ACT政策 (2026)

完整的ACT指南:了解行动分类,训练ACT的政策对机器人数据,部署在OpenArm或移动ALOHA.涵盖时间组合,分类尺寸调整和LeRobot集成. 2026更新.

T12

从时间顺度理论和CVAE训练,通过LeRobot和ACT+训练管道,到OpenArm和Mobile ALOHA的实用硬件部署,

1. 行动缩是什么?

行动分类是一种模仿学习技术,其中政策预测未来行动的序列"分类",而不是单一下一步行动.机器人执行该分类的一部分,然后重新查询该政策的新重叠分类. 结果是更平稳,更有时间一致的轨迹,这些轨迹抵制了单步行为克隆 (BC) 的复合错误问题.

在标准BC中,该政策预测每一步每一操作.每次预测错误将机器人转移到一个政策从未见过的状态,导致下一次预测变得更糟,等等.在50Hz (4秒的操纵) 上200步轨道上,即使每步的错误化合物1%也会导致离散的概率达到87% 行动分量减少了这一点,通过承诺执行_k_步骤的计划 (通常50100在50Hz,相当于12秒的运动),将独立决策点数量从200降至200/k的24.

零件尺寸:最重要的超参数

块大小 k 决定了轨道平滑和环境反应之间的交换.较大的块产生更平滑的运动,但不能反应到意外事件 (物体移动,障碍出现) 直到当前的块完成执行.较小的块反应更快,但失去平滑优势,重新引入复合错误.

根据任务类型的建议起点:

  • 桌面上选择和位置: k=50100 (12秒).环境静态;滑滑比反应更有价值.
  • 组装和插入: k=3060. 接触丰富的阶段需要更频繁的重新规划,以调整对齐错误.
  • 双手协调:** k=5080. 两只手臂需要协调的块,过于短的块会破坏协调.
  • 移动操纵: k=2040对基, k=5080对手臂.基需要更快的障碍反应.
  • 动态任务 (捕捉,回避): k=1020. 反应力至关重要;接受一些流性损失.

为什么行动缩工作:暂时的顺利论点

一步BC政策每步都独立处理.即使模型完美捕捉了条件分布P\a_t\o\t),跨步骤的独立性意味着轨迹缺乏时间一致性.

通过同时预测k步骤,模型必须产生内部一致的轨迹段.训练损失将整个部分共同受到惩罚,迫使网络学习光滑运动原始的相反,而不是单独的体预测. 这与语言模型在同时生成多个代币时产生更一致的文本的方法类似,而不是一次采样一个代币.

法律体系结构

ACT使用一个带转变器背骨的条件变化自动编码器 (CVAE).该架构有三个主要组成部分:一个CVAE编码器 (仅在训练期间使用),一个转变器解码器 (在训练和推理期间使用),以及一个视觉背骨.

编码器 (仅为训练)

在训练过程中,编码器处理了全示范图像,联合状态和基础真相操作,并产生了一个隐藏的风格变量 z (维度32) 捕获了示范特定的变化.不同的操作员可以从不同的角度或速度接近同一个任务; z编码这种变化.

编码器是一个处理整个行动序列和当前观测的变压器.它输出了一个平均和日志变量,参数化一个高斯式,从其中z通过重复参数化技巧采样.一个KL分离术语 (按beta权重,通常是10100) 将z调整到标准正常之前N(0,I).

结果是,z设置为0 (前平均值),使政策确定性.CVAE结构纯粹是培训辅助:没有它,模型在示范风格中平均,产生了所有方法的平均值,因此没有一种方法 (模式平均值). 通过CVAE,模型学会单独解码每个风格,在推断时的零中值z产生了最"典型"的执行.

变压器解码器 (训练+推理)

解码器采用三个输入:隐藏的z (或零),视觉脊柱+自觉的观察标记,以及k可学习的位置查询 (每一个操作在部分中).标准变压器交叉注意力使位置查询能够随时关注观察标记,并行产生k行动预测.

从最初的ACT实施中获取的建筑细节:

  • 编码层: 4 (过程观察+z成文本代币)
  • 解码层: 7 (深入,因为它做得更有效:生成全动作部分)
  • 隐藏的尺寸:** 512
  • 注意力: 8
  • 前进尺寸: 2,048
  • 总参数: ~40M (不包括视觉脊柱)
  • 行动输出: k 联合位置目标 (例如, k=100步 x 14 双手机 ALOHA 关节)

视力脊柱

每个摄像头视图通过ResNet-18独立处理,产生一个功能地图 (15x20x512从480x640输入) 均被平板化成每台摄像头的300个代币.

最少可行的摄像头设置是2个视图:一个手腕安装的摄像头 (接近操作细节) 和一个空头摄像头 (空间背景).三部摄像头 (1手腕 + 2 个第三人在不同的角度) 是RCSV标准,与两部摄像头设置相比,在精度任务上持续提高了515%的成功率.

3 数据要求

ACT从人类的远程操作演示中学习,这些演示作为同步 (观察,行动) 双存储.

按任务复杂性计算的最低数据集尺寸

Task Type 示范 Needed Approx. Collection Time Notes
Simple pick-and-place (fixed location) 20–30 30 minutes Lowest bar for proof-of-concept
Pick-and-place with pose variation 50–80 1–2 hours Must cover workspace uniformly
Multi-step manipulation 100–150 3–4 hours Each phase needs coverage
Bimanual coordination 150–250 5–8 hours Coordination patterns require more examples
Contact-rich assembly (insertion, screwing) 200–400 8–16 hours Force-sensitive phases need dense coverage

数据质量检查清单

  • **没有停顿:**示威活动应该持续流动.
  • 一致的速度: 混合快速和慢的示范浪费了CVAE的潜伏能力在速度变化.
  • 清洁的开始/结束: 每个集都从类似的中性姿势开始,
  • 仅成功: 删除所有失败的示范.ACT将所有培训数据视为专家示范.
  • 摄像头连续性:**使用硬式安装.即使在会议之间移动摄像头的5毫米,也会降低抓住精度.

数据格式:HDF5和RLDS

ACT训练数据的标准格式是HDF5,每个集集都作为一个集群存储的图像数据集 (n__cameras x H x W x 3, uint8),联合位置 (qpos, float64),联合速度 (qvel, float64),和行动 (float64).时间标签存储在集级.LeRobot还支持从 Hugging Face Hub进行高效流媒体的转换到Parquet格式.

为了实现跨平台兼容性,Google的Open X-Embodiment使用的RLDS (Reinforcement Learning Datasets) 格式将集集节作为一个标准化的TFRecord文件存储.LeRobot提供了HDF5,RLDS和其原生Parquet格式之间的转换工具.查看我们的 [数据格式指南]T13) 详细转换说明.

# HDF5 episode structure for ACT training
import h5py
import numpy as np

with h5py.File("episode_0042.hdf5", "r") as f:
    # Camera images: (T, H, W, 3) uint8
    cam_high = f["/observations/images/cam_high"][:]   # overhead camera
    cam_wrist = f["/observations/images/cam_wrist"][:] # wrist camera

    # Joint state: (T, n_joints) float64
    qpos = f["/observations/qpos"][:]    # joint positions (radians)
    qvel = f["/observations/qvel"][:]    # joint velocities (rad/s)

    # Actions: (T, action_dim) float64
    actions = f["/action"][:]            # target joint positions

    print(f"Episode length: {len(qpos)} steps")
    print(f"Control frequency: {f.attrs['control_freq']} Hz")
    print(f"Camera resolution: {cam_high.shape[1]}x{cam_high.shape[2]}")
    # Typical output:
    # Episode length: 400 steps
    # Control frequency: 50 Hz
    # Camera resolution: 480x640

4.与乐罗伯特进行ACT培训

[LeRobot] (T14) (Hugging Face) 是最积极维护的ACT政策培训的开源框架.它为包括ALOHA,Koch v1.1,OpenArm等常见机器人平台提供标准化数据加载,培训循环,评估脚本和预建配置.

装备

# Clone and install LeRobot
git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e ".[act]"

# Verify GPU is available
python -c "import torch; print(f'CUDA: {torch.cuda.is_available()}, Device: {torch.cuda.get_device_name(0)}')"

训练指挥部

# Full ACT training command
python lerobot/scripts/train.py \
  --policy.name=act \
  --dataset.repo_id=svrc/openarm_pick_place \
  --policy.chunk_size=50 \
  --policy.n_obs_steps=1 \
  --policy.dim_model=512 \
  --policy.n_heads=8 \
  --policy.n_encoder_layers=4 \
  --policy.n_decoder_layers=7 \
  --policy.latent_dim=32 \
  --policy.kl_weight=10.0 \
  --training.learning_rate=1e-5 \
  --training.batch_size=8 \
  --training.num_epochs=5000 \
  --training.eval_freq=500 \
  --training.save_freq=1000 \
  --device=cuda \
  --output_dir=outputs/act_openarm_pick_place/

超参数参考

Hyperparameter Default Search Range Effect of Increasing When to Increase
chunk_size (k) 100 20–200 Smoother trajectories, less reactive Smooth tasks (wiping, pouring)
latent_dim (z) 32 16–64 More expressive style capture High demonstration variance
kl_weight (beta) 10 1–100 Stronger regularization Small datasets (<50 demos)
learning_rate 1e-5 5e-6–5e-5 Faster convergence, instability risk Large datasets (>200 demos)
temporal_ensemble_temp 10 5–50 Slower blending, more inertia Smoother tasks
n_cameras 2 1–4 Richer spatial info, more compute 3D reasoning tasks
backbone ResNet-18 ResNet-18/34/50 Better visual features Cluttered or varying-light scenes
num_epochs 3000 1000–8000 Better fit, overfitting risk More demos or complex tasks

GPU 要求

  • ** 最低:** 16 GB VRAM (RTX 4060 Ti, RTX 3090). 批量量48. 训练时间:48小时200集.
  • : 24 GB VRAM (RTX 4090). 批量量16. 训练时间: 24小时200集.
  • 快速代: 4080GB (A100,H100).批量大小 3264.训练时间:3090分钟. 允许快速的超参数扫描.

5. ACT+ (原始存储库) 的培训

托尼的存储库中的ACT原始实现 ([tonyzhaozh/act](T15)) 仍然是一个有效的训练路径,特别是在已经使用ALOHA硬件堆的团队中.ACT+扩展了原始的自感应史 (最后25关键状态作为输入) 以更好的速度估计.

# Training with the original ACT repo
git clone https://github.com/tonyzhaozh/act.git
cd act
pip install -r requirements.txt

# Train on custom data
python train.py \
  --task_name openarm_pick_place \
  --ckpt_dir checkpoints/openarm_pp \
  --policy_class ACT \
  --kl_weight 10 \
  --chunk_size 50 \
  --hidden_dim 512 \
  --batch_size 8 \
  --dim_feedforward 2048 \
  --num_epochs 5000 \
  --lr 1e-5 \
  --seed 0 \
  --num_steps 400 \
  --camera_names cam_high cam_wrist

LeRobot与原始备用: LeRobot更好地维护 (积极的社区,定期更新,多政策支持) 并自动处理数据加载和评估.原始备用提供了更直接的控制,更简单地用于研究实验.对于生产部署,我们建议 LeRobot;对于研究叉,原始备用更容易被黑客攻击.

6. 部署在真实硬件上

部署ACT政策需要满足实时控制限制:在处理摄像头图像和计算行动块时,推断循环必须运行在机器人的控制频率 (通常是50Hz = 20ms每周期).

推理循环架构

import torch
import numpy as np
from collections import deque

class ACTInferenceLoop:
    def __init__(self, policy, chunk_size=50, temporal_temp=10.0, query_freq=5):
        self.policy = policy
        self.chunk_size = chunk_size
        self.temporal_temp = temporal_temp
        self.query_freq = query_freq  # re-query every N steps
        self.action_queue = deque(maxlen=chunk_size)
        self.step_count = 0

    def get_action(self, images, qpos):
        """Returns a single action with temporal ensembling."""
        if self.step_count % self.query_freq == 0:
            # Get new action chunk from policy
            with torch.no_grad():
                obs = {
                    "images": torch.tensor(images).unsqueeze(0).cuda(),
                    "qpos": torch.tensor(qpos).unsqueeze(0).cuda(),
                }
                chunk = self.policy(obs)  # (1, chunk_size, action_dim)
                chunk = chunk.squeeze(0).cpu().numpy()
            self.action_queue.append({
                "actions": chunk,
                "generated_at": self.step_count
            })

        # Temporal ensembling: blend overlapping chunks
        action = np.zeros_like(self.action_queue[0]["actions"][0])
        total_weight = 0.0

        for entry in self.action_queue:
            offset = self.step_count - entry["generated_at"]
            if offset < self.chunk_size:
                weight = np.exp(-offset / self.temporal_temp)
                action += weight * entry["actions"][offset]
                total_weight += weight

        action /= total_weight
        self.step_count += 1
        return action

延迟预算50Hz

在50Hz控制时,每个周期的预算是20ms.

  • 摄像头捕捉+预处理: 25ms (USB3摄像头,尺寸改为480x640)
  • ACT推断: 212ms (依赖GPU;参见下面的基准表)
  • ** 操作插射+命令发送:** 12ms
  • 安全检查: 1ms
  • 率:** 014ms

根据平台的推理基准

Hardware ACT Inference (ms) Max Control Rate (Hz) Suitable For
NVIDIA A100 (80GB) 1.8 555 Cloud/datacenter inference
NVIDIA RTX 4090 2.5 400 Desktop workstation
NVIDIA RTX 4070 4.2 238 Budget desktop
Jetson AGX Orin 64GB 12 83 Onboard robot compute
Jetson Orin NX 16GB 22 45 Mid-range edge
Jetson Orin Nano 8GB 40 25 Minimum viable edge
Apple M3 Pro 18GB 8 125 Development/prototyping

临时集体实施细节

时间组使用指数式衰变权重:在20步前生成的部分的预测中,重量为T7.在50Hz的默认温度下,当前部分的预测权重为 ~1.0,而20步前生成的部分的预测权重为 ~0.14. 这会产生连续的分数预测之间的顺利混合,消除了在分数边界发生的动,

关键部署提示: 总是在生产中使用时间组装.如果没有它,机器人会在零部界限上表现出可见的,机器人会突然转向新计划.在组装时,过渡是平滑的,不易察觉的.计算的总费用是微不足道的 (几微秒的权重平均).

7. OpenArm 1 + ACT:具体的设置步骤

OpenArm 1 ($4,500单臂,9,000美元双手领导跟随站) 设计用于模仿学习数据收集和ACT部署.以下是完整的设置路径:

硬件设置

  1. **安装摄像头:**将手腕摄像头 (Intel RealSense D405) 连接到OpenArm手腕支架.安装上头摄像头 (RealSense D435) 在工作场所中心60厘米以上的提供门口上.可选:以提高空间覆盖率,安装第三部摄像头45度.
  2. **连接伺服器:**OpenArm使用Feetech STS3215伺服器 (与ALOHA相同).通过U2D2连接接口连接.检查所有6个关节都响应: T8.
  3. ** 校准关节限制:** 运行T9记录关节零位置和软界限. 这写为T10.
  4. 测试远程操作: 带领臂连接,运行T11. 追随者应以50Hz的速度反射领袖的实时运动.

关于ACT的数据收集

# Record demonstrations on OpenArm
python lerobot/scripts/control_robot.py record \
  --robot-path lerobot/configs/robot/openarm.yaml \
  --fps 50 \
  --repo-id svrc/openarm_pick_place \
  --num-episodes 50 \
  --warmup-time-s 3 \
  --episode-time-s 15 \
  --reset-time-s 10 \
  --push-to-hub 1

在OpenArm上部署ACT

# Deploy trained policy
python lerobot/scripts/control_robot.py replay \
  --robot-path lerobot/configs/robot/openarm.yaml \
  --policy-path outputs/act_openarm_pick_place/checkpoints/best/ \
  --fps 50 \
  --num-episodes 20

8.常见故障和纠正

在RCSV,我们已经培训并部署了20多项操纵任务的ACT政策.

Symptom Root Cause Fix
Policy outputs zero or constant actions KL weight (beta) too high. Model ignores observations and outputs the mean action. Reduce beta by 5–10x. Monitor KL divergence: it should stabilize at 0.5–5.0 nats, not near zero.
Jerky execution at chunk boundaries Temporal ensemble temperature too low, or ensemble not implemented Increase temperature from 10 to 20–30. Verify overlapping chunk execution in your control loop.
Good training loss, poor real-world performance Camera mismatch between training and deployment Check image resize pipeline, camera FOV, crop regions. Use identical camera mount positions.
Works for 2 seconds then drifts Chunk size too large for task dynamics Reduce chunk size by 50%. The policy is committing to outdated plans.
Inconsistent between evaluation runs Too few demonstrations (<30) Collect more data. With small datasets, performance is highly sensitive to train/val split.
KL divergence collapses to zero Beta too low. 编码器 encodes everything in z; decoder ignores observations. Increase beta until KL stabilizes at 0.5–5.0 nats.
Mode averaging: robot moves to "average" of multiple strategies Multi-modal demonstrations with single-mode CVAE Standardize demonstration strategy, remove minority approaches, or switch to Diffusion Policy.
Sim-to-real gap: policy works in sim but fails on real robot Contact dynamics, friction, and visual domain mismatch Fine-tune on 50–100 real demonstrations. Apply domain randomization during sim training.

9. 标准:ACT与传播政策与行为克隆

下面的基准是我们在RCSV发布的结果和使用ALOHA和OpenArm平台进行标准化操纵任务的评估.

Dimension ACT Diffusion Policy Behavioral Cloning (多层感知器)
Success rate (50 demos, pick-place) 82–90% 75–85% 40–60%
Success rate (200 demos, pick-place) 90–95% 92–97% 65–80%
Success rate (bimanual insertion) 80–88% 72–82% 15–30%
Inference latency (RTX 4090) 2.5ms 15ms (DDIM) 0.5ms
Inference latency (Jetson Orin Nano) 40ms (25 Hz) 180ms (5.5 Hz) 5ms (200 Hz)
Training time (200 episodes, A100) ~4 hours ~8 hours ~1 hour
Model size ~40M params ~80M params ~5M params
Multi-modal handling Limited (CVAE) Excellent (diffusion) None (mode averaging)
轨迹 smoothness Excellent Very good Poor (jerky)
Data efficiency (<50 demos) Good Moderate Poor
Edge deployment feasibility Excellent Challenging Trivial

10.使用ACT与其他方法的时间

使用ACT 当:

  • 你需要快速的部署.
  • 你的任务有一个相对确定性的策略 (一个明确的方法).
  • 你正在部署边缘硬件 (Jetson), 推断速度很重要.
  • 你正在进行双手操作 (ACT是为ALOHA设计的).
  • 你想要最简单的训练管道,
  • 需要实时控制50Hz,在计算限制的平台上.

使用扩散政策:

  • 您的示范包含了多种有效的策略,用于相同任务 (不同的操作员,模糊的把握).
  • 需要在组装或插入任务上进行微米精度.
  • 你有大量的数据 (200+个示例) 和计算预算.
  • 您可以容忍较高的推理延迟 (云推理或桌面GPU).

使用VLA (OpenVLA, pi0) 当:

  • 需要语言条件的多任务执行 ("选择红杯","堆积蓝色块").
  • 您想利用预先训练的视觉语言表示来实现通用化.
  • 你正在利用大型国家空间进行移动操作.
  • 您可访问多GPU培训基础设施 (48 A100s).

在以下情况下,请继续使用 Simple BC:

  • 你正在做原型,想要尽快进行训练.
  • 您的任务非常短 (<20步),其中组合错误不是问题.
  • 你在极其有限的硬件 (微控制器类) 上部署.

在RCSV收集ACT兼容机器人数据

斯威尔士国家安全委员会 (RCSV) 为ACT培训提供了端到端的数据收集:校准的领导跟随者硬件,训练有素的操作员,质量控制和LeRobot HDF5格式的交付.从2,500美元的试点 (50个任务上的示范) 开始,或扩展到8,000美元的完整数据活动.

根据"数据收集服务"的指导,