把右臂的执行配置逐字段对齐左臂(只差 chunk_rate 一个字段),跑了 7 次。结果既不是「修好了」也不是「没用」—— 它把横向增益从 0.6 提到 0.85,但成败真正取决于杯子放在训练数据密的地方还是疏的地方。
No pre-registration — this run counts as EXPLORATORY only and must not be used for conclusions。
7 次的 95%CI 是 14.7–94.7%,宽到几乎不排除任何东西。下面所有数字都要按探索性读,不能当结论引用。
| # | 杯位档 | 该档在 0826 里的集数 | 结果 | 闭爪 pan | 夹爪开合 |
|---|---|---|---|---|---|
| 1 | P4 | 3 | 失败 | −3.2° | 0 |
| 2 | P4 | 3 | 失败 | −1.2° | 0 |
| 3 | P2.5 | 13–15 | 成功 | −12.5° | 1 |
| 4 | P2.5 | 13–15 | 成功 | −9.2° | 1 |
| 5 | P2 | 15 | 成功 | −25.0° | 1 |
| 6 | P1 | 5 | 失败 | −27.0° | 1 |
| 7 | P4/P4.5 | 2–3 | 失败 | −3.7° | 0 |
09-08 auto/k=4 | 09-10 1/1 | |
|---|---|---|
| 控制回路 | 4.20 Hz | 6.1–11.3 Hz |
| 推理停顿占时长 | 46% | 19–26% |
| 横向增益(闭爪 pan 对杯位回归斜率,示范隐含 1.0) | 0.59–0.63 | 0.85 r=0.923 |
| k/n | 0/14 | 3/7 |






操作者在 P1(杯子在最左)报「明显靠右」,在 P4/P4.5(杯子偏右)报「偏左,把杯子往更左推」。看着矛盾,量出来是一致的:闭爪 pan 一律比杯位偏正 +6.5°,而 0826 训练集的杯位中位是 −22.1°、最密档是 −31~−22°。
现场反复观察到夹爪张得过大。量下来幅度没问题,问题在时长:
| 接近段最大张开 | 张开状态占整集时长(开度 > 30) | |
|---|---|---|
| 示范 0826(40 集) | 43.6 | 22.5% |
| 成功 3 次 | 42.1 – 47.2 | 13.8% · 14.2% · 14.4% |
| 失败 4 次 | 40.1 – 48.3 | 75.0% · 55.8% · 73.7% · 64.8% |
run_policy_trials.py:1703 只把 observation.images.head 交给关键帧采集器,两路腕部图直接丢掉。trial_keyframes.KeyframeCollector.observe() 增加可选的 wrists 参数,
在 init / closure / end 三个时刻额外写干活那条臂的腕部帧
(kf-…-{phase}-wrist.jpg,记录里对应 wrist_init / wrist_closure / wrist_end)。
不传 wrists 时行为逐字节不变,模块自带 selftest 仍然通过;新路径也单独验过,六个文件都写出来了。wrist_end 调出来看杯子在不在爪口内。操作者的判断是「大概率是腕部相机没学会看」。用 camera_ablation.py 直接量 —— 把某一路换成中性灰,看输出变多少,取样点是示范里闭爪的前一帧(问的是「闭爪这个决定是看着什么做出来的」)。12 集,中位绝对变化:
| 遮掉哪一路 | Δ夹爪(行程 %) | Δpan(度) | Δelbow(度) |
|---|---|---|---|
left_arm_wrist | 3.70 | 0.82 | 7.16 |
right_arm_wrist | 11.73 | 1.02 | 2.21 |
head | 6.38 | 9.76 | 18.58 |
| 全部三路 | 16.10 | 19.06 | 59.48 |
把这一页所有观察串起来就自洽了:
录制那条路(leader_follower_server.py:410)09-09 起就显式设了 fourcc="MJPG",而试跑这条路(run_policy_trials.py)一个 fourcc 都没传,于是 OpenCV 协商出 YUYV。两条路的相机设置本来就该一致,已改齐。
cams = ({name: OpenCVCameraConfig(index_or_path=path, width=w, height=h, fps=30,
fourcc=None if name == "head" else "MJPG")
for name, (path, w, h) in CAMERAS.items()} if cameras else {})
头部保持 None:它是 USB3 上的 Orbbec,不在腕部那条 USB 2.0 总线上;而且 robot_server.py:938 记着,对 Orbbec 的 RGB 节点 set(FOURCC, MJPG) 会「返回成功」但之后每次 read() 都抛 !buf.empty() in imdecode_。
| 两路同开 | 实际格式 | 读成功 | 每路 fps |
|---|---|---|---|
| 不设 fourcc(旧行为) | YUYV | 80/80 | 26.5 |
| MJPG(改后) | MJPG | 80/80 | 30.0 |
# ① 训练(4090,配方与前两次逐字段相同,只换数据集)
REPO_ID=xlerobot-team/xlerobot-right-pick-cup-0826sep8-full-20260910 \
TAG=right-0826sep8 ./train_smolvla_state_dropout.sh
# ② 上机跑测 —— 三处和 09-08 那轮不同
~/miniconda3/envs/train310/bin/python run_policy_trials.py \
--panel --send --trials 8 --seconds 60 \
--chunk-rate 1 \ # ← 09-08 用的是 auto(k=4)
--keep-torque \ # ← 不加的话 connect 时头会掉力矩、抬起来看墙
--speed 1.0 --trace \
--model .../checkpoints/020000/pretrained_model
| 改动 | 为什么 |
|---|---|
train310 的 python | lerobot 环境的 torch 对不上驱动,会静默落到 CPU,每次推理 2.4 s、动作计划拉长十倍。日志里必须看到 == device: cuda (Orin)。 |
--chunk-rate 1 | 本轮实测:停顿 46%→22%、横向增益 0.6→0.85、k/n 0/14→3/7。 |
--keep-torque | 2026-09-10 实测:不加时试跑 connect 之后头部从 tilt 2613 掉回 1901,相机对着墙,整轮作废。 |
| 开跑前对头 | /api/head/aim 设 cup-grasp-v0(pan 2003 / tilt 2619,会被限位钳到 2617),然后要看图确认,别只看光照数字 —— 本轮就因为只比数字而漏掉了一次对着墙的情况。 |
| 每次记杯位 | trials JSON 至今没有杯位字段(录制指南第 4 项未做)。本轮的杯位记在 05-training/trials/cup-positions.json,不记就没法复现上面那张表。 |
| 结论 | 等级 | 出处 |
|---|---|---|
| chunk 1/1 下 3/7;密档 3/3、疏档 0/4 | 跑测过,但探索性 | trials-20260910-143830.json(3/5)+ -144442.json(0/2)· 无预注册 |
| 横向增益 0.85(r=0.923) | 跑测过,换算近似 | 7 条 trace 的闭爪 pan 对档中心回归 |
| 停顿 46%→19~26%,回路 4.2→6.1~11.3 Hz | 跑测过 | trace 时间戳差分 |
| 失败时夹爪 0 次开合 | 跑测过 | trace 夹爪维,迟滞双阈值计数 |
| 失败是瞄歪(杯子没进爪口),不闭爪是下游症状 | 跑测过 | 六张 end 关键帧逐张看;2026-09-11 更正了原来相反的结论 |
| 夹爪张开幅度正常(0.97×),时长失败 56–75% vs 示范 22.5% / 成功 14% | 跑测过 | 示范 40 集 + 7 条 trace,阈值开度>30 |
| 闭爪被「爪口里看到杯子」视觉门控 | 没跑过 | 与消融和现象都自洽,但试跑此前不存腕部帧;2026-09-11 已加上腕部关键帧,下一轮可直接判 |
| 已撤回 | 那三次没有闭爪时刻,旧口径退化成任意帧;且档中心换算过粗 | |
不加 --keep-torque 头会掉下来 | 跑测过 | 2026-09-10 实测 tilt 2613 → 1901 |
| 右腕相机主导闭爪决定(占 73%),头部主导横向 | 跑测过 | camera_ablation.py 12 集遮盖法,取闭爪前一帧 |
| MJPG 不是失败原因(YUYV 也有 26.5 fps 不丢帧) | 跑测过 | 2026-09-10 两路同开 A/B,各 40 帧 |
| 73 集重训能补上疏档的失败 | 没跑过 | 这是下一步要回答的 |
05-training/trials/trials-20260910-143830.json · -144442.json ·
cup-positions.json(杯位)· 7 条 trace + 7 段录像