ATEC2026 赛道2 L0 桌面整理 Task E 赛后复盘
本文整理 ATEC2026 线上赛赛道2 L0「桌面整理」Task E 的完整参赛流程。任务要求 Piper 桌面机械臂识别三种随机摆放物体,完成抓取并放入指定篮筐区域。我们最终线上最好回报为 15.00,不是满分;本开源目录的价值在于复盘真实工程路径、保留可提交代码骨架和失败路线证据,避免后来者重复踩坑。
任务目标
Task E 的核心流程是:
text视觉感知 -> 目标识别/定位 -> 运动规划或策略输出 -> 抓取 -> 运输 -> 篮筐释放
线上提交为文件式源码上传。我们最终保护的提交包来自 ACT seed1 best_loss 分支:
textcode/act_seed1_best_submission/
solution.py
act/detr/*.py
requirements.txt
run.sh
server.py
UPLOAD_README.md
注意:policy_act.pt 未放入 GitHub,需要从本地提交包或 Hugging Face 模型仓库下载后放到同一目录。
HF 复现资源入口
本地 ATEC 仿真副本已清理,复现所需的大文件统一从 Hugging Face 获取:
- 最终模型权重:Datawhale/atec2026-task-e-act-seed1-best
- 完整 Task E 复现仓库:Datawhale/atec2026-task-e-reproducibility
复现仓库包含 source/、scripts/、demo/、atec_robot_model/、third_party/GraspGen/ 以及 code/task_e_collection/。过滤后的 HDF5 位于 data/ 分片目录,使用仓库根目录的 RESTORE_FILTERED_DATASET.sh 恢复。
最终分数与提交包
| 项目 | 结果 |
|---|---|
| 任务 | L0 桌面整理 Task E |
| 机器人 | Piper |
| 最好线上回报 | 15.00 |
| 最终保护方案 | ACT seed1 best_loss |
| 本地历史现象 | 单次可到 18,但多 seed 方差大 |
| 是否满分稳定 | 否 |
最终保护包来源:Hugging Face 模型仓库中的 task_e_act_seed1_best_20260608_upload.zip。
关键 SHA256:
textpolicy_act.pt 282614de9673dc01e229557448e380b6a02c196b5c3953cec77b2aebd2305a8e
solution.py a08790e7512c914e5b78132303e1c6098c8aba3b01a373933e6ddc617fa3a485
我们尝试过的路线
1. 官方 / scripted oracle 数据生成
官方 Task E scripted oracle 对 object_3 更容易成功,但 object_1 / object_2 存在抓取接触、Piper TCP、USD root/几何中心和运输 primitive 不匹配问题。我们最终通过 per-object primitive 和闭环 servo 生成了三物体演示数据:
textdatasets/atec_task_e_obj321_servo_100demos
这批数据支持 ACT 训练,但它不是一套可直接转成满分规划控制器的规则方案。
2. ACT / XSA-ACT
ACT 是最终最可用的提交路线。关键修正包括:
- 修正 Task E action 语义:动作是
(joint_target - default_joint_pos) / 0.5,不是速度或简单 delta。 solution_act.py支持自动加载 checkpoint 中的model_args。- XSA attention 改造可以作为 ACT 变体,但线上结果并不稳定。
- training loss 与任务成功率相关性弱,必须按 seed 实测。
线上试榜结果显示:
| 方案 | 线上回报 |
|---|---|
| XSA-ACT 上传版 | 6.00 |
| ACT seed2 45000 | 12.00 |
| ACT seed2 50000 | 6.00 |
| ACT seed1 best | 15.00 |
因此本目录保护的是 ACT seed1 best,而不是单 seed 曾经满分的 seed2 checkpoint。
3. GraspNet / AnyGrasp / SAM3 / GraspGen-style PCA
我们接入并验证过多种规划抓取路线:
- TunTunClaw / GraspNet;
- AnyGrasp SDK;
- SAM3 图像分割;
- GraspGen-style PCA/AABB 几何抓取;
- basket-center release;
- pre-grasp approach / guarded insertion;
- object_1 方块“含进去再闭合”动作;
- object_3 香蕉低位 cradle/servo 搬运。
这些路线证明了“感知和候选抓取位姿”不是完全不可行,object_1 / object_3 在若干 seed 可以被夹起。但最终 submit-style demo/solution_pca.py 仍然在 IK、finger-center 追踪、接触保持和运输释放上不稳定,不能替代 ACT 做最后提交。
重要教训:
textAnyGrasp / GraspNet 不是一键满分控制器;
它只能给 grasp pose prior,后面仍需要 Piper IK、TCP 标定、夹爪接触保持和篮筐释放 primitive。
4. pi0.5 / OpenPI
我们系统尝试过 pi0.5/OpenPI:
- fixed-base 16D padding 旧分支;
- native8 state/action 分支;
- 20-demo / 100-demo;
- LoRA;
- pi05_base;
- raw unfiltered + absolute target action;
- action expert / action head 分支;
- zero noise / chunk 执行步数调参。
结果都没有超过 ACT,多个分支 seed11/12/13 为 0/0/0 或极低分。赛后排查显示,pi0.5 并不是“模型本身弱”,而是当前数据表达和相位建模不适合这个 Task E 轨迹:
- 过滤数据删除了大量 hold / 稳定帧,破坏 action chunk 时间语义;
- 单相机/任务 prompt 与真实抓取相位绑定弱;
- feed-forward 策略在 home/高位观测附近缺少连续相位,动作会在 home 与中段轨迹间抖动;
- 即使 raw absolute target 1-demo overfit,Isaac rollout 仍无法形成有效 pick/place。
因此 pi0.5 当前不作为提交候选。
本目录内容
textL0-桌面整理TaskE/
README.md
code/act_seed1_best_submission/
UPLOAD_README.md
solution.py
requirements.txt
run.sh
server.py
act/detr/*.py
docs/
ATEC2026_TaskE_规则物理配置与提交说明_20260604.md
WORKSPACE_MEMORY_TaskE_完整调试记录.md
hf_model_package/
README.md
policy_act.sha256
task_e_act_seed1_best_20260608_upload.zip.sha256
docs/WORKSPACE_MEMORY_TaskE_完整调试记录.md 是完整工作记忆,包含大量中间失败路线、视频路径、checkpoint 路径和排障结论。它很长,但对复盘非常重要。
如何复现提交包
将 policy_act.pt 放入:
textL0-桌面整理TaskE/code/act_seed1_best_submission/policy_act.pt
然后源码上传时保持以下结构:
textsolution.py
policy_act.pt
act/detr/backbone.py
act/detr/detr_vae.py
act/detr/position_encoding.py
act/detr/transformer.py
act/detr/utils.py
requirements.txt
如果平台按服务目录上传,也可带上:
textserver.py
run.sh
为什么不直接把 policy_act.pt 放进 GitHub
policy_act.pt 约 64 MB,虽然低于 GitHub 单文件硬限制,但二进制权重不适合塞进教程仓库历史。推荐做法:
- GitHub 存代码、README、SHA256 和提交说明;
- Hugging Face 存权重和完整提交压缩包;
- README 中维护 HF 链接和校验值。
Hugging Face 链接
权重与完整提交压缩包已上传到 Datawhale Hugging Face:
texthttps://huggingface.co/Datawhale/atec2026-task-e-act-seed1-best
对应上传 commit:
texthttps://huggingface.co/Datawhale/atec2026-task-e-act-seed1-best/commit/4583bda9e3118e75987a0f91de62c155a70a2bed
上传命令、文件清单和 SHA256 见 hf_model_package/README.md。
复现用数据集与日志单独放在 Hugging Face Dataset 仓库:
texthttps://huggingface.co/datasets/Datawhale/atec2026-task-e-reproducibility
上传状态:2026-07-19 已完成远端校验,337/337 个分片齐全;README.md、恢复脚本、SHA256 清单和日志归档均已在仓库中。
其中 trajectory_filtered.hdf5 约 33 GiB,为 100 条三物体 3,2,1 calibrated-servo 成功演示经过 ACT 过滤后的训练数据。为提高网页和 CLI 传输稳定性,文件被拆成 337 个 100 MiB 分片:
textdata/final_100demos_filtered_split_100m/trajectory_filtered.hdf5.part-0000
...
data/final_100demos_filtered_split_100m/trajectory_filtered.hdf5.part-0336
恢复方式:
bashbash RESTORE_FILTERED_DATASET.sh
sha256sum -c SHA256_FILTERED_ORIGINAL.txt
原始完整 filtered HDF5 的 SHA256:
text4b85980e72b8e76261ad037bfba97b4795210e3f77cdb5b71479846b9230ac02
能否安全删除本地内容
可以删,但建议按顺序:
- 确认本目录已经 push 到 GitHub;
- 确认 Hugging Face 已上传
policy_act.pt、提交 zip、复现数据集分片和日志; - 确认模型 SHA256、分片 SHA256、恢复后 filtered HDF5 SHA256 都对得上;
- 保留本目录和
docs/WORKSPACE_MEMORY_TaskE_完整调试记录.md; - 再删除
$PROJECT_ROOT下的大型训练输出、datasets、runs、logs/videos、openpi checkpoints。
不要在确认 HF 权重可下载前删除唯一的本地 policy_act.pt。