YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
RoboSynChallenge 初赛提交 · ACT Policy
基于 ACT(Action Chunking with Transformers) 策略,在官方 cobotmagic_Sim_* 仿真数据集上
训练 LeRobot v0.3.3 模型,覆盖全部 10 个操作任务。
| 项 | 值 |
|---|---|
| 策略 | ACT(policy/act/,官方 baseline 架构,未修改模型结构) |
| 框架 | LeRobot v0.3.3 + EmbodiChain |
| 评测档位 | random(全部成绩均为 random 档) |
| 评测口径 | seed 0,50 集/任务(0% 的三项为 20 集定性筛查) |
| 权重镜像 | HuggingFace(见下方【检查点镜像】) |
一、任务级检查点映射(10/10)
checkpoints/ACT_sim_<task>/ 目录内直接放置 config.json / model.safetensors /
train_config.json(即 pretrained_model 的内容,不再嵌套一层 pretrained_model/),
可直接作为 checkpoint_path 传给评测脚本。
| # | task | checkpoint 路径 | 训练步数 | 自测成功率 | 官方 ACT |
|---|---|---|---|---|---|
| 1 | table_rearrangement |
checkpoints/ACT_sim_table_rearrangement |
50000 | 94% | 63% |
| 2 | click_bell |
checkpoints/ACT_sim_click_bell |
50000 | 66% | 37% |
| 3 | water_pouring |
checkpoints/ACT_sim_water_pouring |
80000 | 52% | 72% |
| 4 | handle_basket |
checkpoints/ACT_sim_handle_basket |
50000 | 42% | — |
| 5 | items_handover |
checkpoints/ACT_sim_items_handover |
15000 | 0% ※ | — |
| 6 | drawer_open_place |
checkpoints/ACT_sim_drawer_open_place |
15000 | 0% ※ | 29% ▼ |
| 7 | mixer_operating |
checkpoints/ACT_sim_mixer_operating |
45000 | 88% | 77% |
| 8 | item_assembly |
checkpoints/ACT_sim_item_assembly |
60000 | 28% | — |
| 9 | manipulate_pipette |
checkpoints/ACT_sim_manipulate_pipette |
60000 | 44% | — |
| 10 | sample_loading |
checkpoints/ACT_sim_sample_loading |
15000 | 0% ※ | — |
※ 20 集定性筛查;▼ 官方该分数的口径见 §四。
10 项的平均成功率 **48.8%**(0% 三项按 0 计)。自测口径统一为
random档 /seed 0/max_episodes 50;官方评测使用 held-out 参数, 与自测数值不同属正常。
同一份权重另有一份 HuggingFace 镜像(见 §五),两处内容逐字节一致。
二、统一评测命令
仓库布局与本赛道官方模板 RoboSynChallenge 完全一致:三个入口文件位于
policy/act/ 下,和其官方仓库中的 policy/act/{eval.sh,deploy_policy.yml,deploy_policy.py}
一一对应(官方根目录同样没有这三个文件)。说明见下方"入口文件"。
对上面 10 个 <task> 各执行一次:
cd <repo root>
export HF_LEROBOT_HOME=<数据集根目录> # 目录内为 cobotmagic_Sim_<task>/
source policy/act/.venv/bin/activate # 或等价的 Python 环境
bash policy/act/eval.sh <task> random checkpoints/ACT_sim_<task> 0 \
--pytorch_device cuda \
--headless True \
--seed 0 \
--max_episodes 50
<task> 取值(10 个,与上表一一对应):
table_rearrangement click_bell water_pouring handle_basket items_handover
drawer_open_place mixer_operating item_assembly manipulate_pipette sample_loading
评测结果(含三相机拼接录像)输出到
<repo root>/eval_result/<task>/act/random/.../<model>/<timestamp>/videos/,
文件名带 _success / _fail 后缀,可直接逐集核查。
入口文件(官方 checklist 要求的三项)
| 官方要求 | 本仓库路径 | 备注 |
|---|---|---|
eval.sh |
policy/act/eval.sh |
用法见上文;脚本自身可干任何目录运行,内部会 cd 到仓库根 |
deploy_policy.yml |
policy/act/deploy_policy.yml |
评测配置,含 act_step: 50(见 §三) |
deploy_policy.py |
policy/act/deploy_policy.py |
policy adapter 实现 |
不要把这三类文件复制到仓库根目录:
eval.sh用REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"反推根目录, 挪到根目录会让REPO_ROOT指向仓库的父目录、VENV_DIR也失效,直接跑崩。 本仓库保持了与官方模板相同的目录结构,直接照官方方式调用即可。
三、⚠️ 唯一影响评测结果的代码改动:act_step: 50
policy/act/deploy_policy.yml 中的 act_step 由官方默认的 10 改为 50,
用于对齐训练时的 chunk_size = 50 与 n_action_steps = 50。
若将其还原为 10,全部 10 个任务的成功率都会显著下降。
训练超参(全部任务一致):batch_size 32、chunk_size 50、n_action_steps 50、
lr 1e-5(恒定,scheduler=None)。
四、成绩说明与已知限制
官方已发布基线的 5 个任务
官方 baseline 取自本仓库 evaluation_results/released_checkpoint_results.json
(2026-08-19 发布,random 档,100 集/任务):
| task | 本提交 | 官方 ACT | 官方 DP |
|---|---|---|---|
| table_rearrangement | 94% | 63% | 14% |
| mixer_operating | 88% | 77% | 66% |
| click_bell | 66% | 37% | 51% |
| water_pouring | 36% | 72% | 36% |
| drawer_open_place | 0% | 29% ▼ | 0% |
| 宏平均 | 56.8% | 55.6% | 33.4% |
▼ drawer_open_place 的口径说明(避免误判)
官方 evaluation_results/README.md 原文:
The drawer ACT figure comes from the separately recorded
drawer_drive050_grip20modified-physics run. The DP drawer figure is ... under the current modified-physics random configuration; neither drawer figure should be presented as an unmodified-physics result.
即官方那个 29% 取自另一套物理参数(drive050 / grip20)的独立记录。在当前仓库配置下, 官方 DP 的 drawer 成绩为 0.0%,平均动作步数 900.00 / 900 —— 与本提交自测的 0/20、900.00 / 900 完全一致。
因此该项 0% 属于配置量级问题(当前物理配置下该任务本身即难以完成), 而非训练量不足:本任务 loss 从 0.042(1.1 epoch)降至 0.019(5.7 epoch),成功率始终为 0。
item_assembly
本仓库随附的权重为 060000 步(50 集正式评估 **28.0%**,13→14/50)。
已训练过的三个检查点在统一口径(random / seed 0 / max_episodes 50)下为:
| checkpoint | epoch | 50 集成功率 |
|---|---|---|
| 030000 | ~3.0 | 18.0% |
| 060000(提交版本) | ~6.0 | 28.0% |
| 090000 | ~9.0 | 26.0% |
090000 继续加训后反而由 28.0% 回落至 26.0%,故最终选择 060000。 该曲线也说明:本任务 3→6 epoch 明显有效,6→9 epoch 已无明显收益。
口径纪律:不同
--max_episodes会抽到不同场景集合,跨值比较无效。本提交所有对外 声明均为random档、seed 0、max_episodes 50(0% 三项为 20 集定性筛查)。
训练量观察
- 加训有效的任务:mixer_operating(48%→88%)、water_pouring(15k/2.3ep 16% → 45k/6.9ep 36% → **80k/13.7ep 52%**)、item_assembly(18%→28%,再往上 9 epoch 回落至 26%)、 manipulate_pipette(30%→44%)
- water_pouring 是本任务里训练量收益最显著的一项:每翻倍训练步数约 +16 点, 且截至 80k 步(13.7 epoch)仍未出现过拟合拐点
- 加训无效的任务:handle_basket 在 15k→50k 加训后成功率与平均动作步数均几乎不变 (42% → 42%),瓶颈在演示数据的夹取位姿而非训练量
- click_bell 在 21.6 epoch 已明显过拟合(10k 64% → 50k 66%,仅 +2 点)
items_handover/sample_loading当前仅训约 1.1 epoch,20 集筛查中平均动作步数打满 上限(900/900),策略尚未学会有效行为
其他
- 第 11 个任务名
open_pan位于configs/other_tasks/,官方未发布对应训练数据, 本提交未包含(仅提交官方发布的 10 个任务)。 - 数据集仅使用官方开源的
cobotmagic_Sim_*(每任务 1000 条演示),未使用额外自采数据、 外部私有数据集或真实机器人演示;未调用任何外部 API,可离线运行。
五、检查点镜像(HuggingFace)
权重以 Git LFS 存于本仓库 checkpoints/ 下;同一份权重另有一份 HuggingFace 镜像:
https://huggingface.co/Op19199/RoboSynChallenge-2026-ACT(public)
目录结构与本仓库一致(checkpoints/ACT_sim_<task>/),可直接:
hf download Op19199/RoboSynChallenge-2026-ACT \
--include "checkpoints/ACT_sim_<task>/*" --local-dir checkpoints/
六、仓库结构
<repo root>/
├── policy/act/ # ACT 策略代码
│ ├── deploy_policy.py # 评测接口:get_model / eval / reset_model
│ ├── deploy_policy.yml # 评测配置(act_step: 50)
│ ├── eval.sh # 评测入口
│ └── scripts/ # 训练/评测脚本
├── checkpoints/
│ └── ACT_sim_<task>/ # 每任务一个 ckpt(10 个)
│ ├── config.json
│ ├── model.safetensors # 约 197 MB
│ └── train_config.json
├── configs/ # 任务/档位配置(官方)
├── scripts/ # 官方评测脚本(eval_policy.py 等)
└── assets/ docs/ launch/ misc/ # 官方仓库原有内容