使用 lerobot 在 SO-100 上从零开始训练一个 Action Chunking Transformer:act 配置、chunk_size 和 n_action_steps、100000 步训练计划、20 毫秒推理。
ACT 在 SO-100 策略中是一个异类。GR00T N1.7 和 N1.5 源自 nvidia/GR00T-N1.7-3B 和 nvidia/GR00T-N1.5-3B,Pi0.5 源自 lerobot/pi05_base。ACT 从零开始:没有基础检查点,因为它不是一个基础模型。它是一个大约 8000 万参数的 Transformer,你需要针对一个任务、在你的机械臂上、在你的光照条件下从头开始训练。
这也是为什么它能在 20 ms 内运行一个控制步骤,而一个 30 亿参数的 VLA 需要 152 到 485 ms,并且每次运行成本为 1 到 3 USD,而不是 4 到 12。本指南将介绍在 lerobot 上使用 SO-100 的手动路线:记录,act 配置,chunk_size 和 n_action_steps 控制什么,100000 步的调度,以及 rollout。然后是在 AY-Robots 上执行相同的任务,包括平台无法提供帮助的地方。
你需要了解什么
- •ACT 从头开始训练:没有基础模型,没有预训练,没有语言输入。一个检查点,一个任务。
- •论文:大约 8000 万参数,在 11 GB RTX 2080 Ti 上大约 5 小时,0.01 秒推理。
- •lerobot 默认值:chunk_size 100,n_action_steps 100,batch 8,lr 1e-5,100000 步,seed 1000。
- •在 AY-Robots 上:每步 20 ms,是五种中最快的。最少 50 个 episode,LeRobot v3.0,24 GB 显卡,每次运行 1 到 3 USD。
- •它在它见过的任务上表现出色,但当你需要语言条件时就会失效。
于 2026 年 8 月 23 日对照 lerobot 0.6.x 进行了检查:main 分支上的 pyproject.toml 显示 version = "0.6.2",最新标签 v0.6.1,日期为 2026 年 8 月 3 日。以 python lerobot/scripts/train.py 开头的教程早于控制台入口点 lerobot-train、lerobot-record 和 lerobot-rollout。
ACT 究竟是什么
Action Chunking with Transformers 源自 ALOHA 论文,使用低成本硬件学习精细双臂操作,作者是 Zhao、Kumar、Levine 和 Finn,发表于 arXiv,2023 年 4 月 23 日。该设备以 50 Hz 频率录制,四台网络摄像头以 30 fps 传输 480x640 视频:两台在夹持器上,一台顶部,一台正面。摘要声称六项技能的成功率达到 80% 到 90%,其中包括打开半透明调味杯和插入电池,这些技能来自 10 分钟的演示。
在规划录制会话时,正文内容更有用:每个任务 50 次演示,除了“穿过魔术贴”任务为 100 次,这相当于 10 到 20 分钟的数据和 30 到 60 分钟的实际运行时间(计入重置)。成功率也不尽相同:“穿过魔术贴”最终为 20%,“穿鞋”为 92%,“打开杯子”为 84%,“准备胶带”为 64%。
| 超参数 | ALOHA 论文,表 III | lerobot 主分支 |
|---|---|---|
| 学习率 | 1e-5 | optimizer_lr = 1e-5 |
| 批大小 | 8 | batch_size = 8, in TrainPipelineConfig not ACTConfig |
| 编码器 / 解码器层数 | 4 / 7 | n_encoder_layers = 4 / n_decoder_layers = 1 |
| 块大小 k | 100 | chunk_size = 100 |
| z 的潜在维度 | 缺失;图 11 显示了 32 到 512 的投影 | latent_dim = 32 |
| 时间集成 | 缺失;参考代码中的 --temporal_agg | temporal_ensemble_coeff = None |
论文列出了 7 个解码器层,LeRobot 故意只发布了 1 个。configuration_act.py 中的注释指出,原始实现存在一个 bug,意味着只使用了第一个层,并引用了 tonyzhaozh/act 中的 issue 25:动作头读取 hs[0],因此所有七个层都运行了,但只有第一个输出到达了预测。该问题自 2024 年 4 月 23 日以来一直未解决。LeRobot 匹配了产生已发布结果的行为,而不是打印的数字。增加 --policy.n_decoder_layers,你将训练一个论文从未评估过的模型。
动作分块是核心思想
普通的行为克隆将一个观察映射到一个动作,并且错误会累积:偏差使机械臂偏离分布,产生更差的动作,三十步后夹持器离物体还很远。 动作分块 一次预测 k 个动作并执行它们,将有效时间范围缩短 k 倍。它还处理了人类数据特有的一个问题:远程操作员会暂停,而单步马尔可夫式 策略 无法模拟依赖于之前情况的暂停。
论文通过消融实验而非断言来确定 k 值。在关闭时间集成的情况下,平均四种设置,成功率从 k = 1 时的 1% 上升到 k = 100 时的 44%,然后在 200 和 400 处趋于平稳,因为策略接近开环控制。这条曲线就是默认值设为 100 的原因。
- chunk_size:解码器在每次前向传播中预测的未来动作数量。默认值 100。
- n_action_steps:在再次查询之前执行的动作数量。默认值 100,因此 lerobot 以开环方式运行整个块。
- lerobot 会验证
n_action_steps <= chunk_size,如果顺序颠倒,则会引发ValueError。
在操作上,重要的是 chunk_size 除以帧率。在 lerobot 的 SO-100 示例使用的 30 fps 下,一个 100 的块从一次观察中提交大约 3.3 秒。如果任务需要在该窗口内进行修正,请降低 n_action_steps,而不是 chunk_size:您保留长预测并更频繁地重新观察。
# predict 100 actions, re-query after 25 of them (about 0.8 s at 30 fps)
lerobot-train \
--dataset.repo_id=${HF_USER}/so100_cube \
--policy.type=act \
--policy.chunk_size=100 \
--policy.n_action_steps=25 \
--policy.device=cuda设置 --policy.temporal_ensemble_coeff 后,lerobot 要求 n_action_steps = 1,否则会引发 NotImplementedError。集成会在每个时间步查询策略,并使用权重 w_i = exp(-m * i) 混合该时间步的重叠预测,其中最旧的预测获得 w_0。论文指出 ACT 的这一比例为 3.3 percent:真实但适中,并且它将推理计数乘以块长度。在 20 ms 每步时是可承受的,但在 485 ms 时则不可承受。参见 推理延迟。
当 ACT 优于基础模型时
五个可训练策略并排显示,附带 AY-Robots 测量并用于确定其租用 GPU 大小的数据。
| 策略 | 系列 | 参数 | 每步 | GPU 等级 | 最小剧集数 | 数据集 |
|---|---|---|---|---|---|---|
| ACT | 分块 Transformer,从零开始 | ~80 M | 20 ms | RTX 4090 / 24 GB | 50 | LeRobot v3.0 |
| SmolVLA | 紧凑型 VLA | ~450 M | 245 ms | RTX 4090 / 24 GB | 30 | LeRobot v3.0 |
| GR00T N1.7 | VLA 基础,扩散头 | ~3 B (~40 M trained) | 152 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| GR00T N1.5 | VLA 基础,前身 | ~3 B | 165 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| Pi0.5 | 流匹配 VLA,参见 流匹配 | ~3 B, PaliGemma backbone | 485 ms | A100 / H100 80 GB | 50 | LeRobot v3.0 |

- 每个动作步骤 20 毫秒,五种方法中最快,在 24 GB 显卡而非 A100 上实现。
- 每次运行成本 1 到 3 美元,而 3B 级别为 4 到 12 美元。
- 在它接触过的富接触任务上表现精确:在 Slide Ziploc 和 Slot Battery 上分别达到 88% 和 96%,而先前的方法从未通过第一阶段。
- 无语言条件:任务字符串被忽略,因此一个检查点对应一个任务。
- 无语义先验:它所知道的一切都来自您的 50 个回合。
- 泛化能力狭窄:移动摄像头就需要重新训练。
- 静默失败:损失下降,机械臂无动作,日志无记录。
- 速度优势仅在推理模块靠近伺服电机时才有效。
当任务和场景固定且运动必须快速精确时,选择 ACT。当一个检查点需要覆盖多条指令时,选择一个 。有两页内容直接比较了决策: 和 。对于已发布的基准测试, 将每个数字链接到其来源。
开始前您需要什么
一个跟随臂,一个用于的引导臂,至少一个摄像头,一个 24 GB GPU。ACT 只读取图像和关节位置。两个摄像头是最佳选择:一个固定前视图用于定位物体,一个腕部摄像头用于查看即将接触什么,就像 ALOHA 上那样。
| 机械臂 | 舵机 | 电压 | 零件成本 | 状态 |
|---|---|---|---|---|
| SO-100 | Feetech STS3215 | 7.4 V | ~110 to 150 EUR | 完全支持,参考机械臂 |
| SO-101 | Feetech STS3215 | 7.4 V | ~130 to 170 EUR | 完全支持 |
| Koch v1.1 | Dynamixel XL330 / XL430 | 5 V and 12 V rails | ~250 to 350 EUR | 兼容 |
| LeKiwi | Feetech STS3215 (arm) | 7.4 V arm, 12 V base | ~400 to 500 EUR | 兼容 |
SO-100 和 SO-101 机械臂在 7.4 V 电压轨上运行 Feetech STS3215 舵机。向它们提供 12 V 电压会损坏它们,而且损坏过程非常安静,以至于人们首先会归咎于软件,并且 Koch 12 V 电源在物理上可以安装到 SO-100 主板上。请检查标签。症状:舵机无响应,机械臂抽搐后下垂。另请参阅 SO-100 与 SO-101 对比。
从裸机械臂到记录数据集
以下流程适用于 lerobot 0.6.x。如果您已有校准的机械臂和数据集,请跳过此部分。否则,SO-100 入门指南涵盖了组装,录制演练涵盖了捕获,而数据集文档涵盖了格式。
- 1安装带有正确附加组件的 lerobot
录制需要
core_scripts,训练需要training,飞特(Feetech)舵机需要feetech。Python 3.12+。bashconda create -y -n lerobot python=3.12 conda activate lerobot conda install ffmpeg -c conda-forge pip install 'lerobot[core_scripts,training,feetech]' lerobot-info - 2查找每只机械臂的 USB 端口
将两只机械臂都插上,在提示时拔掉其中一只。在 Linux 上,您可能需要打开节点权限。
bashlerobot-find-port # on Linux, if the port exists but is unreadable: sudo chmod 666 /dev/ttyACM0 - 3设置电机 ID 和波特率
在 SO-100 上,这需要在组装前完成:与 SO-101 不同,一旦组装完成,连接器就无法触及。脚本会从夹爪开始,一次一个电机地遍历总线,并将 ID 写入 EEPROM。
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 4校准两只机械臂
将每个关节设置到其范围的中间位置,按 Enter 键,然后让每个关节扫过其完整范围。校准允许在一个机械臂上训练的策略在另一个机械臂上运行。重复使用相同的
id。bashlerobot-calibrate \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=my_follower lerobot-calibrate \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 \ --teleop.id=my_leader - 5开启摄像头进行一次遥操作
lerobot 的经验法则:您应该能够仅通过查看摄像头图像来完成任务。如果您不能,ACT 也不能。这比后期调试能发现更多糟糕的数据集。
bashlerobot-teleoperate \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=my_follower \ --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 \ --teleop.id=my_leader \ --display_data=true - 6录制 50 个 episode
50 是 AY-Robots 的最低要求,也是 ALOHA 每个任务使用的数量。lerobot 建议每个物体位置 10 次,摄像头固定,抓取一致。
n结束一个 episode,r重新录制,q停止并编码。bashHF_USER=$(NO_COLOR=1 hf auth whoami | awk -F': *' 'NR==1 {print $2}') lerobot-record \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=my_follower \ --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 \ --teleop.id=my_leader \ --dataset.repo_id=${HF_USER}/so100_cube \ --dataset.num_episodes=50 \ --dataset.single_task="Grab the black cube and put it in the bin" \ --display_data=true

ACT 没有先验知识可以依赖,因此每一个不一致都会变成永久性的问题。三个代价最高的问题是:在 episode 20 和 21 之间摄像头被轻微移动,因为你在下午录制了一半数据集而导致光线变化,以及抓取动作以两种方式完成。每种情况都会产生看起来完美的损失曲线,但机械臂却会移动到错误的位置。请参阅损失下降,策略却无所作为、策略仅在一种设置下有效和收集高质量训练数据。
在训练之前,至少回放五个 episode。存储每个的摄像头流、关节状态和动作,并且回放会将这些动作推回机械臂。如果回放未能完成任务,则数据中不包含该任务,训练也不会凭空创造它。
lerobot-replay \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--dataset.repo_id=${HF_USER}/so100_cube \
--dataset.episode=0训练ACT策略
这是完整的命令。所有ACT特有的内容都已是默认设置,这就是为什么lerobot ACT页面建议从它们开始。
lerobot-train \
--dataset.repo_id=${HF_USER}/so100_cube \
--policy.type=act \
--output_dir=outputs/train/act_so100_cube \
--job_name=act_so100_cube \
--policy.device=cuda \
--wandb.enable=true \
--policy.repo_id=${HF_USER}/act_so100_cube--policy.type=act 加载 ACTConfig,它会根据您的数据集记录的电机和摄像头的数量进行调整,因此您无需声明观测形状。 --wandb.enable=true 是可选但值得的:在 100000 步的运行中,损失曲线是唯一廉价的信号。调度来自 lerobot 的训练配置,而非 ACTConfig:100000 步,批次 8,种子 1000,每 20000 步一个,每 200 步记录一次。
一次完整的运行会留下五个检查点目录,从 020000 到 100000,以及一个 last 符号链接。请保留所有这些:最佳策略通常不是最后一个。
| 设置 | lerobot 默认值 | AY-Robots ACT 表单 | 备注 |
|---|---|---|---|
| 批次大小 | 8 | 8 | 如果遇到 VRAM 限制,请首先降低此值。 |
| 学习率 | 1e-5 | 1e-5 | 与 ALOHA 论文相同。 |
| 最大步数 | 100000 | 100000 | 大致是 50 集数据集停止改进的地方。 |
| 梯度累积 | 1 | 1, does not apply | 请改为更改批次大小。 |
| 种子 | 1000 | exposed | GR00T 的 tyro 入口点没有种子;ACT 运行是可复现的。 |
| chunk_size / n_action_steps | 100 / 100 | 100 / 100, editable | 预测和执行范围。降低第二个值,而不是第一个。 |
| 检查点频率 | 20000 | not exposed | saveSteps 在此处是 GR00T 的一个参数。 |
ACT 在批次大小为 8 且使用两个 640x480 摄像头时,可在 24 GB 内存上舒适运行。当人们为了提高速度而增加批次大小,或者输入 lerobot 录制示例中所示的 1920x1080 帧时,它将不再适用。两个 1080p 的 ResNet-18 主干网络会产生截然不同的内存占用情况。在租用更大的显卡之前,请将 --batch_size 降至 4。请参阅训练中内存不足。
持续时间:论文中在11 GB RTX 2080 Ti上大约5小时,根据lerobot的ACT页面,10万步需要几小时,在AY-Robots 24 GB层级上需要2到5小时。不要缩短。参考仓库的README指出,一个不流畅或停顿的策略通常只需要更多的训练,因为在损失平台期之后,成功率和流畅度会持续提高:对于真实世界数据,它至少需要5000个epoch,或者在平台期之后再延长3到4倍的时间。
lerobot-train \
--config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
--resume=true在机械臂上运行训练好的策略
部署使用lerobot-rollout。摄像头键必须与记录的键匹配:一个在front和wrist上训练的策略将不接受cam0和cam1,并且rename_map没有帮助,因为它需要一个预训练的检查点。任务字符串可以省略;lerobot自己的示例将其标记为ACT可跳过。
lerobot-rollout \
--strategy.type=base \
--policy.path=${HF_USER}/act_so100_cube \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
--display_data=true \
--duration=60评估过去通过 lerobot-record --policy.path=... 运行。在 0.6.x 版本中,它是 lerobot-rollout,带有 --strategy.type 选择器:base、sentry(带自动上传的记录)、highlight(通过按键保存的环形缓冲区)、dagger(人在回路中)和 episodic。截至 2026 年 8 月 23 日,ACT 文档页面在一个运行 lerobot-rollout 的代码块正上方仍然写着“使用 lerobot-record 命令”。请遵循命令,而不是句子。
要固定一个检查点而不是最终模型,请添加 --policy.pretrained_revision。这需要运行开始时带有 --save_checkpoint_to_hub=true,默认关闭:没有它,lerobot 只会推送最终模型。有了它,每个检查点都会用其零填充的步数进行标记,因此 --policy.pretrained_revision=060000 恢复 60000 步的检查点。在真实机械臂上将其与 100000 步的检查点进行比较是成本最低的实验。
通往同一检查点的两条路径
以上是手动路线,它有效。平台路线以放弃控制权为代价,换取无需拥有GPU或Python环境的便利。
- 安装 lerobot 0.6.x,包含
core_scripts、training、feetech和 ffmpeg。 - 查找端口,设置电机ID,校准双臂,录制50个片段。
- 回放几个片段以确认数据包含该任务。
- 租用或拥有一个24 GB GPU,匹配CUDA和PyTorch,运行
lerobot-train --policy.type=act。 - 等待几小时,然后在机械臂旁的机器上运行
lerobot-rollout。
# the two commands that matter, end to end
lerobot-record --robot.type=so100_follower --robot.port=/dev/ttyACM0 \
--teleop.type=so100_leader --teleop.port=/dev/ttyACM1 \
--dataset.repo_id=${HF_USER}/so100_cube --dataset.num_episodes=50 \
--dataset.single_task="Grab the black cube"
lerobot-train --dataset.repo_id=${HF_USER}/so100_cube --policy.type=act \
--output_dir=outputs/train/act_so100_cube --policy.device=cuda完全控制:编辑 configuration_act.py,添加摄像头,分叉训练器。对于研究而非交付任务而言,平台是一种干扰。
- 使用 桌面客户端 录制,或导入 Hugging Face repo id 或本地数据集。
- 打开 SO-100 上的 ACT 指南 并选择模型和数据集。默认值是 lerobot 的;chunkSize、nActionSteps、seed 和 logFreq 均可编辑。
- 后端租用一个按显存大小分配的GPU,并将检查点写入对象存储。
- 然后
/api/inference/pod将策略服务于本地机器人客户端。空闲看门狗会销毁 pod,因此不会产生隐性费用。 - 相同的操作存在于 CLI、MCP 服务器 和 训练文档 中。
它无法修复您的数据:一个摄像头移动过的数据集在这里训练效果同样糟糕,并且表单无法检测到。它也无法解决延迟问题。控制循环每个动作步骤为 20 到 485 毫秒,再加上公共互联网往返时间,ACT 受到的影响最大,因为其步骤最短:60 毫秒对于 Pi0.5 的 485 毫秒来说是 12% 的减速,但对于 ACT 的 20 毫秒来说却是四倍的步骤。远程推理适用于慢速抓取放置,而非快速反应运动。

究竟哪里出了问题
训练命令本身几乎没有痛苦。痛苦在于其周围的事物,按首次出现问题的频率排序。
| 症状 | 常见原因 | 页面 |
|---|---|---|
| lerobot-find-port shows nothing | 驱动程序、线缆或节点权限问题 | 机械臂未检测到 |
| 录制时摄像头缺失 | 重启后索引改变,或一个USB控制器连接两个摄像头 | 摄像头未检测到 |
| 训练拒绝数据集 | ACT needs v3.0, GR00T needs v2.1 | 数据集被拒绝为 v3 |
| CUDA 内存不足 | 批处理大小增加,或使用 1080p 帧而非 480p 帧 | 训练中内存不足 |
| 损失看起来很好,但机械臂没有动作 | 数据缺少任务,或摄像头移动了 | 损失下降,策略无动作 |
| 运动卡顿或剧集中间暂停 | 训练不足、块边界停顿或推理调用超时 | 策略在运动中冻结 |
有两行值得强调。ACT 在 LeRobot v3.0 上训练,而 GR00T 的加载器在此版本上会崩溃并需要 v2.1,因此用于训练 ACT 的数据集可能会导致 GR00T 运行失败。最后一行有两个修复方案:ACT 作者通过更多训练来解决卡顿运动,而当 n_action_steps 为 100 时,真正的停顿会发生在块边界,即每 3.3 秒在 30 fps 下出现一次可见的暂停。另外需要了解两点:单个失效关节通常是 从未写入的舵机ID,以及 一个接近但从不闭合的夹爪 意味着演示中夹爪范围太小。完整索引:故障模式页面。
一次运行的成本
| 层级 | 模型 | 运行时间 | 每小时价格 | 每次运行成本 |
|---|---|---|---|---|
| RTX 4090 / 24 GB | ACT, SmolVLA | 2 到 5 小时 | 0.30 to 0.60 USD | 约 1 到 3 美元 |
| A100 80 GB / H100 | GR00T N1.7, GR00T N1.5, Pi0.5 | 3 到 6 小时 | 1.20 to 2.00 USD | 约 4 到 12 美元 |
这就是为什么即使你以后想要 VLA,也应该从 ACT 开始的原因。一次失败的 ACT 运行只花费一杯咖啡的钱,并在数小时内告诉你你的数据集是否包含该任务。一次失败的 GR00T 运行则需要四倍的成本才能获得相同的教训。之后升级到 GR00T N1.7 或 SmolVLA 之后是形式上的改变,而非重建。背景信息:视觉-语言-动作模型,SO-100 完整指南,训练你的第一个策略 和 模仿学习。没有机械臂?实时页面 无需注册即可驱动真实的 SO-100。
是否有预训练的 ACT 模型可以用来微调?▾
没有。ACT 没有基础模型;它只在你训练后才存在。这不是工具链的缺陷,而是 ACT 的本质:该论文针对每个任务从头开始训练一个策略。如果需要供应商检查点,请使用 GR00T N1.7 或 Pi0.5。
我到底需要多少个片段?▾
50 个:ALOHA 每个任务记录的数量(Thread Velcro 是最难的,需要 100 个)以及 AY-Robots 的最低要求。lerobot 建议每个物体位置大约 10 个,摄像头固定,抓取一致。五十个干净的片段胜过一百个摄像头移动的片段。
我应该将 chunk_size 从 100 更改吗?▾
通常不需要。消融实验显示,从 k = 1 时的 1% 上升到 k = 100 时的 44% 后趋于平稳,因此 100 接近峰值。如果机械臂提交时间过长,可以降低 n_action_steps:在 30 fps 下,每 0.8 秒重新查询 25 次。
训练运行需要多长时间,可以提前停止吗?▾
在 24 GB 显卡上运行 100000 步需要两到五个小时。检查点每 20000 步生成一次,并且 --resume=true 可以恢复运行,因此提前停止是安全的。只是不要在第一个平稳期就停止:损失平台期后平滑度会提高。
损失下降了,但机械臂仍然失败。现在怎么办?▾
几乎总是数据集的问题。在机械臂上回放录制的片段:如果回放无法完成任务,则数据不包含该任务。然后检查是否有任何东西移动过,尤其是摄像头。ACT 没有先验知识,因此在第 21 个片段中的轻微触碰是永久性的。
Sources
- Zhao, Kumar, Levine, Finn: Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware (ACT), arXiv 2304.13705
- ALOHA / ACT project page
- tonyzhaozh/act, the reference implementation and its training-length advice
- tonyzhaozh/act issue 25: the action head reads only the first decoder layer
- huggingface/lerobot
- lerobot ACTConfig: chunk_size, n_action_steps, n_decoder_layers and the rest of the defaults
- lerobot TrainPipelineConfig: steps, batch_size, seed, save_freq, log_freq, save_checkpoint_to_hub
- lerobot train_utils: zero-padded checkpoint dirs, the last symlink and checkpoint push tagging
- lerobot v0.6.1 release, 3 August 2026
- LeRobot docs: ACT
- LeRobot docs: imitation learning on real robots (record, replay, train, rollout)
- LeRobot docs: SO-100 setup, motor ids and calibration
- LeRobot docs: installation and the optional extras
- Hugging Face blog: LeRobot Community Datasets, the ImageNet of Robotics, When and How?
- TheRobotStudio/SO-ARM100: Standard Open Arm 100
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started