同一套配方左臂 15/20、右臂 0/14。这一页把所有能想到的解释摆出来,标清楚哪些已经被量掉了、哪些还活着,以及每个活着的假设要花多少代价才能验掉。按「能排除多少 ÷ 花多少」排序,不按可能性大小。
Suyang99/xlerobot-smolvla-right-sd-p0.2-b16-u20000,训练数据是
xlerobot-right-pick-cup-20260826-0042 单独 40 集(实读自它的 train_config.json)。05-training/ 下只有 left-sd 和 right-sd 两个 checkpoint 目录。
所以下面所有分析说的都是加补录之前的右臂模型。
都是跑出来否掉的,写下来是为了别再走一遍。注意有三条的结论和直觉相反。
| 假设 | 实测 | 判定 |
|---|---|---|
| 左臂那个任务更简单、不用看杯子 | 左臂训练集闭爪 pan σ 14.72°(极差 59.1°),右臂 10.45°(46.9°)。「永远输出中位 pan」的误差中位:左 12.6°、右 5.2° | 反了,左臂更需要看 |
| 右臂标定漂了 | 标定文件全部停在 2026-08-16,0826 录制(08-26)之后没人动过 | 排除 |
| 右臂数据节奏太规律,模型学会数拍子 | 闭爪@集长的标准差:右 7.0%、左 8.0% | 基本一样 |
| 左臂训练集光照更多样所以更鲁棒 | 亮度 σ:右臂 4.3(极差 37.6),左臂 2.8(13.8) | 反了 |
| 两次测试的光照条件不同 | init 关键帧各 28 张:09-08 右臂 亮度 106.1 / 对比度 46.4 / 暗像素 17.9% / G-R 1.006;09-09 左臂 104.4 / 45.8 / 16.3% / 1.003 | 几乎一模一样 |
| 安全层把动作削掉了 | trace 逐帧比 raw vs safe:pan / elbow / wrist / gripper 被改 0.0%,shoulder_lift 0.4% | 排除 |
| 策略命令的动作太慢 | 每控制周期命令 lift+elbow 走 3.00°,示范在同样时间窗(0.136 s)应走 2.86° | 速度正常 |
| 模型够不到杯子 | 17 次试跑最远前伸中位 20.2 cm,示范闭爪位置是 18.0 cm | 够得到 |
| 相机名字/分辨率对不上 | input_features 就是 head / left_arm_wrist / right_arm_wrist,不传 rename_map;run_policy_trials.py:647 head 固定 424×240 | 一致 |
按「能排除多少 ÷ 花多少」排,不按可能性大小 —— 先做便宜的,哪怕它不是最可能的那个。
n_action_steps=50,每周期取 chunk_k 步 —— k=4 时队列 12.5 拍见底,k=1 时 50 拍。每次见底停下来推理,解冻后新计划不接旧计划,往回走一段。chunk 1/1。有效率若从 10% 一档升到 40% 一档,就是它。chunk 1/1 下总共只跑过 1 次,还是 void。详见 失败机制那一页。
run_policy_trials.py 的主循环,确认 observation 的抓取时刻相对于 inference 的位置。不用上机。
initial = None)—— 这正是录制指南第 4 项「杯位写进每集元数据」至今未做的后果。trials/keyframes/kf-*-init.jpg 每次试跑的起始帧都在(09-08 共 28 张),从图里把杯子位置量出来即可。
| 顺序 | 做什么 | 成本 | 为什么排这个位置 |
|---|---|---|---|
| 1 | ② 读代码确认取帧时机 | 十分钟 | 最便宜,而且它和 ① 现象相同、修法不同 —— 先分开 |
| 2 | ① right-sd 跑 5–10 次 chunk 1/1 | 半小时 | 唯一没变过的推理参数;不用训练 |
| 3 | ④ 从 init 关键帧反推 09-08 的杯位 | 半小时 | 纯离线,能判定 0/14 里有多少是「没教过」 |
| 4 | ③ 离线看计划连续性 | 一小时 | 若 ① 没救回来,这是下一个落点 |
| 5 | ⑦ 加 present position 记录 | 一次试跑 | 把「手臂跟不跟得上」这个盲区补上 |
| 6 | ⑤ 用 73 集重训 | 4090 一小时 | 前面都排除完再动训练,否则无法归因 |
~/miniconda3/envs/train310/bin/python。用 lerobot 那个环境会静默落到 CPU,
每次推理 2.4 秒、动作计划被拉长十倍,抓取根本完不成。日志里要看到 == device: cuda (Orin)。
05-training/trials/traces/(右臂 17 条 / 左臂 14 条)·
05-training/trials/keyframes/(各 28 张 init 帧)·
两个 checkpoint 的 train_config.json