XLeRobot cup grasp Jetson Orin Nano Super

构建报告

Working notes from the robot build, written so they can be read on a phone. Every number here was measured, not estimated — and where something has not been measured yet, it says so instead of guessing.

Now · 当前重心

★ 当前第一优先:把模型送去云端重训 ★ 本机那个 checkpoint 只过了 2.1 遍数据(batch=2),而且 eval_split=0.2 把整个「右近」点位 (ep40-49,10 集)全部排除在训练之外。数据集本身是均衡的(10/12/9/9/10), 不用补录。下面第 ① 项是照做即可的完整指南。

★ 🤖 头部 V14 —— 宣传版定稿:前脸与相机面齐平 · STL / 三视图 / 工程图 / 动图固定件不动 · 宽 124 · 白壳 · 头吻版留作备选 · 中英 ★ 🍸 Pitch v3(09-11)—— 右臂 6/6 之后的新版:头 · 证据 · 选杯 · 远程 · 边界12 页 · 中文 / English · 每个数字标出处 ★ 🚚 搬场地 —— 桌高要复现到 ±1 cm,离开 Space 21 前必采 11 项硬编码 IK 链 2 小时可重标 · SmolVLA 链改不了只能让新场地像旧场地 · 三种桌高情况 · 到场 10 步顺序 ★ 🎨 颜色选杯 —— 改指令没用,把「选哪只」搬出策略:视觉掩膜路线三种条件都抓蓝杯 · 加 yellow 只是扰动 · 抹非目标杯 3.3 ms/帧 · 离线/空跑验证 · 实机 5+5 预注册 · Astra 帮不上 ★ 📘 Robotic Working Handbook —— 机器人作业手册(定期更新)开跑前 · 运行中 · 判定 · 换臂换模型 · 事故恢复 · 每条带编号,将来行为树节点直接引用 ★ 🍸 Ville 的 Bartender 链路 —— 进程 · 状态机 · 抓取每一步三张机制图 · 09-10 卡在哪三步 · 右臂 FK 疑点 · 各环节验没验过 ★ 🚀 Training run — left arm (0903)数据集选哪个 · 右腕相机要不要去掉 · 可直接粘的命令 · 起飞前核对 ★ 🧠 今晚训左臂 —— sep3-clean 54 集,命令直接复制为什么是这批(中位覆盖 23/54 vs 0826 的 0) · 训练命令 · 跑测前必须对上的四件事 ★ 🧠 SmolVLA「复现不出来」vs「微调真机效果好」两句都对 · 效果好的人的清单我们每条都踩过 · 五个实验按能证伪什么排序 ★ ✅ 09-06 改动验收单 —— 归位 · 跑测面板 · 杯位分布十步验收 · 每步写了预期 · 我验过的和必须你在浏览器验的分开标 ★ 📏 Where to put the cup(英文·自包含)用伸直的左臂当尺子 · 肩到肘之间 · 绝不超过肘 · 附 2026-09-06 实测 ★ 🆕 让手臂别再一卡一卡的(异步推理 RTC)2026-09-06 · 从零讲起 · 5 个只有真跑才暴露的 bug · 推理提速 2.1 倍 · 附验收步骤 ① ☁️ 第一次用云端 GPU 训练RunPod / Vast / Lambda / Colab / AutoDL · 顶部选平台 · 八步照做 ② 完整行动清单14 个任务块 · 打印/测量/实验/训练 ③ 抓夹套 · 可直接打印82A · 先打 t5 · 配 100mm 刀片 ④ 模仿学习入门7 篇论文 · 从零讲起 ⑤ 头部 V13 · 骨架优先三视图 · 节点图 · STL · 巴利造型 ⑥ 防水策略倾倒液体 · 三条路径 · 打印件清单 ⑦ 用别人的模型微调兼容性检查 · 五步 · 成功判据
Live · 机器上的实时页面

★ 机器人的实际地址不在这个公开页面里 ★ 地址和面板密码都在 xlerobot-ops —— 那是一个 private Space,只有登录本账号(或被加为协作者)才看得到。 下面这些按钮都指向那里。
访问还需要连上机器人的 Tailscale 网络。 密码在 xlerobot-ops —— 那是一个 private Space,只有登录本账号看得到。

话题
排序 视图
头部 V14 —— 按新设计图出 STL、三视图、工程图、动态渲染 →
V13 源码派生,相机 / 眼 / 耳罩 / 立柱禁区一个数不动;身体改矮鼓形,相机框改嘴框,贝雷帽重参数化,加头顶蝴蝶结。四个 STL、六张视图、SVG 工程图、两段动画。中英切换。
头部V14STL双语
两杯抹图实验 —— 8 集原始关键帧与闭爪 pan(不下结论) →
操作者 12:50–13:05 在管线里做的探索:起手 / 闭爪 / 结束关键帧、腕相机闭爪帧、trace 闭爪时肩 pan。没预注册、没 trials JSON、杯位没记、两组阈值不同;判定以操作者为准。
原始记录掩膜探索
交接说明 —— 现在用哪些模型 · 右臂怎么跑起来的 · 倒酒怎么实现的 →
给做 integration 的人:两个 SmolVLA 存档和各自 k/n、开跑配方、右臂从 0/14 到 6/6 改了什么(数据 / 配方 / 运行时 / 规则)、倒酒是纯脚本还没进状态机。中英切换。
交接右臂倒酒双语
Pitch v3(2026-09-11)—— 右臂 6/6 之后重构的 deck →
pitchDemo Day双语
搬场地 —— 桌高、标定清单、离开前必采的数据 →
所有几何以肩轴为原点,桌面在肩轴下 13.5 cm;新场地要把这个相对高度复现到 ±1 cm,否则学习策略作废。硬编码 IK 链 8 个配置文件 2 小时可重测;SmolVLA 链把桌高、头姿态、光照写进了 13,693 帧里,只能重录。
离开前 11 项:卷尺量地面基准(仓库里没有)、measure_table 当前读数、10 集预注册基线、头参考图与空桌底片、--preview 日志、USB 口照片、配置全量打包、数据集/模型在云上确认。
三种桌高情况各给做法,到场 10 步顺序,以及这页没解决的缺口。
搬场地桌面高度标定离开前采集
颜色选杯 —— 改指令没用,把「选哪只」搬出策略 →
桌上两只杯,左臂模型不管起手位、腕相机、指令都去抓蓝杯;加 yellow 只让轨迹多偏左三倍、闭爪 3 次,目标不变。
方案:非目标杯从头相机画面里抹掉再喂策略,HSV 分割 + 桌面色填 3.3 ms/帧,腕相机不动。离线三张图、空跑对照、实机 5+5 预注册、实时技术选型表。
Astra 模块是纯文本代理循环,没有图像代码,抹杯子帮不上。
颜色选杯视觉掩膜cup_mask.pyAstra
Robotic Working Handbook —— 机器人作业手册 →
每次作业都要遵守的行为规范,不是某一天的实验结论。五组:开跑前(两臂都归位、串口独占、看图确认头部…)、运行中(安全层整帧原子、地板按俯仰角…)、判定与记录(k/n 按配置分组、证据等级…)、换臂换模型换硬件、事故恢复。
每条带编号、触发条件、出处、以及现在是代码强制还是靠人记得;最后一节是目标形态的行为树骨架,节点直接引用编号。
正本在仓库根目录 ROBOTIC-WORKING-HANDBOOK.md,本页由脚本生成,定期更新。
handbook定期更新行为树
Ville 的 Bartender 链路 —— 进程 · 状态机 · 抓取每一步 →
按代码画的三张机制图:哪些进程在跑、状态怎么流转、PICKING 里八步各干什么。
09-10 卡在三处:右臂被钉在越界姿态(5 次起步即中止,已有修复)、四次闭爪都把杯子打飞(机制清楚、原因未定)、grip gate 只校准了空爪。
另附「腕高低于地板」为什么指向右臂标定/FK 约定不一致、以及各环节验没验过的表。
brain09-10 实测机制图
V13 head — turntable, blink and smile →
圆顶壳转一圈 + 眼睛做表情(满瞳 → 眨眼 → 微笑),10.8 秒 / 259 帧 / 1280×720。
这是评委一秒就能读懂的部分 —— 操作能力是实质,但不讲就看不见; 而一张会眨眼的脸不需要任何解说,何况我们讲的是调酒师,那本来就是个由互动定义的职业。
三个用途:Marketing Award 的证据(那个奖看的是触达,转动的机器人脸比任何成功率表都好传)、 business demo 三分钟的开场画面、以及工作量的可见证据。
另附相机腔约束(92.0×32.0×27.0 mm)与头部相机型号定案:USB 描述符 2bc5:0800 = Orbbec Gemini 335。
chunk 1/1 实测:右臂 0/14 → 3/7 →
执行配置逐字段对齐左臂(15 个字段只差 chunk_rate 一个),跑 7 次。
真正有信息量的不是 3/7,是它怎么分的:训练数据 13–15 集的杯位 3/3 全成, 2–5 集的杯位 0/4 全败 —— 本轮内 chunk 不变,这个对比是干净的。
配置确实改变了东西:横向增益 0.6 → 0.85(r=0.923),推理停顿 46% → 19–26%。
但两个判断被推翻:①「转不够」不是失败原因(成功那几次误差 9.5°,失败只有 6.3°); ②「停顿是主因」也不是(停顿减半,前进有效率没动)。 真正分开成败的是夹爪有没有完成一次开合——最疏那档三次一次都没闭爪, 它不是瞄歪,是没做出「该夹了」的决定。
2026-09-11 更正:原来写「不是瞄歪,是没做出该夹的决定」——写反了。六张 end 关键帧显示, 三次失败里杯子全在爪外,三次成功里都在两指之间。正确的链条是 瞄歪 → 杯子没进爪口 → 腕部相机看不到该夹的东西 → 不闭爪,不闭爪是下游症状,而且是对的行为。
第二个症状「抓夹开太大」量出来是开得太久不是太宽:幅度 0.97× 示范, 但张开时长失败 56–75%、示范 22.5%、成功 14% —— 成功失败零重叠,是本轮最干净的指标。
操作者进一步判断「它学会了爪口里看到杯子才合上」——若成立这是优点不是缺陷(闭爪被视觉真正门控), 要修的是瞄准而不是夹爪策略。此前试跑只存头部帧所以这条证不了,已给关键帧采集器加上腕部帧,下一轮可直接判。
腕部相机消融:不是「没学会看」——右腕相机主导闭爪决定(占三路总影响的 73%), 横向则几乎全靠头部(右腕 Δpan 仅 1.02°)。所以坏的是闭爪那一路,不是瞄准那一路。
试跑的腕部相机已改成 MJPG 对齐录制;但 A/B 实测 YUYV 也有 26.5 fps 不丢帧, 这个改动不能解释失败。含更新后的跑测指令(相对 09-08 改了四处,每处都有当天实测出处)。
右臂 0/14:还剩哪些可能 →
把所有解释摆出来,按「排除它要花多少」排序,不按可能性。
已经量掉九条,其中三条和直觉相反:左臂任务不是更简单(杯位 σ 14.72° vs 右臂 10.45°); 左臂训练集不是光照更多样(亮度 σ 反而右臂大);两次测试不是光照不同(各 28 张起始帧,几乎一模一样)。 标定没动过、安全层削了 0.0%、策略速度正常、而且它够得到(20.2 cm > 示范闭爪的 18.0 cm)。
还活着八条,最强的是推理停顿(右臂 46% 时间在等推理,左臂 26%,而右臂从没在左臂那个配置下被有效测过)。 另含:重规划时用旧画面、中途姿态计划不连续、杯位可能落在只有 1 集的档、 73 集合并数据至今没训过、示范慢 2.8 倍、以及 trace 只记指令不记实到位置这个盲区。
建议顺序把所有不用训练的检查排在前面,训练配置排最后。
右臂不是抓不准,是在原地刷 →
31 条 trace 逐帧拆开。右臂够得到——最远前伸中位 20.2 cm,比示范闭爪的 18.0 cm 还远。
它的问题是来回刷:走 120 cm 路程只换 20 cm 净前进,前进有效率 10.3%(左臂 40.7%)。 有一次在 11–15 cm 之间摆了整整 60 秒,夹爪反复开合——而示范这段只要 8.18 秒、一次到位。
机制:50 步计划每周期取 chunk_k 步,k=4 时队列 12.5 拍见底、冻 1.4 秒等推理, 占试验时长 46%(左臂 k=1 是 26%),每次解冻后新计划往回走。 不是安全层(削了 0.0%),也不是策略慢(命令 3.00°/周期,示范应走 2.86°)。
结论:在右臂跑过左臂那个 chunk 配置之前,别动训练配置。
右臂重训手册:0826 + sep8 补录 →
Sep 8 全部 6 个会话并入 0826 —— 73 集 / 32,216 帧,已上 Hub。
配方不动:两次跑完的 train_config.json 逐字段比,150 个字段只差 5 个,其中 4 个是名字路径, 第 5 个是从没被用到的 eval.batch_size。所以唯一实质变量就是数据 —— 而同一套配方, 左臂 15/20(共 28 次),右臂 0/14。
页内含一处更正:Sep 8 实际录了 6 个会话 / 33 集,不是 23 集 —— 「被处理过」曾被当成「合格」。 对 1938 的不合格判定已撤回(用了「前伸行程」这个相对量,它把「起手就伸在外面」和「没伸手」混成一个数)。 1938 那 6 集全部落在最疏的杯位档,正是指南要补的。
2026-09-11 查出并修掉一个一直存在的漏洞:恒定维保护的判据是 std==0, 而它只在常数恰好为 0 时才成立——lerobot 在 float32 上用 E[x²]−E[x]² 算方差, 常数不为零时两个大数相减会算出假 std。头部两维在数据里是精确常数(73/73 集 min==max), 却因此报出 std=0.0093/0.1243,一直没被钉住、放大约 107 倍; 左臂那六维的常数恰好是 0.0,所以一直是对的。判据改成 min==max(比较而非算术,与量级无关), 钉住的维 6→8。已验:训练集 32,216 帧改动 0 帧,头掉到别处会被钉回训练值。
2026-09-11 第五节重写成自足版:从 Jetson 到 Pod 再回到机器人共 10 步,每步完整命令 + 预期输出 + 停止条件,不再引用别页;并指出脚本的新默认数据集尚未推到 GitHub,所有命令显式带 REPO_ID/TAG。
按录制指南的四项 DONE WHEN 打分:① 杯位每档 ≥12 集 —— 三种范围都未达标; ② 节奏散度 7.8%,指南要求 ≥15%,而且加多少集都不会变 —— 它要的是录制时故意快慢混合,现有数据里没有。
含三份配方对照、视角相位相关核对、六步流程,以及撤销的斜率门禁不要再用。
Downloads — everything in one place →
All Demo Day deliverables with direct download links, served over HTTPS — unlike the machine's :8790 upload service, which is plain HTTP and which Chrome refuses to download from.
Reel · position chart · contact sheet · the four report pages · handover · the note for the organisers.
HTML files open in the browser directly and still work offline once saved.
Evidence archive: 28 runs, four objects, every number traceable →
Built so that every success rate we quote can be traced — to a specific run, to what was on the table, and to a video of it.
Yellow cup (in the training data): 9/10 = 90%. Three unseen objects combined: 8/12 = 67%. Void runs are excluded from the denominators and the page says so.
Carries the 1:47 reel of 17 successful runs (each clip labelled with its object and marked not teleop, not replay), the position chart showing where all 28 grasps closed, a contact sheet of every start frame, and the three concrete ways to show a juror this is autonomy rather than replay.
Marketing evidence — 营销证据文档 →
Marketing Award 是独立于 €7,000 前三名奖池的类别,唯一门槛就是这份文档,主办方明说不必精美。
已录入3 条小红书(训练成功、黑客松招队友、机械臂梗图),含链接与内容类型。
浏览量和赞藏两列留空待填 —— 那正是这个奖要的数据,创作中心里就有,配截图更好。
另含 LinkedIn 发布计划、可用素材清单(自主演示成片等)、提交前四步清单。
Odds of placing, and what is left to do →
Position against the four judging dimensions, measured numbers only.
The 09-09 session was a real generalization test, 28 runs across four objects: the trained yellow cup at 9/10 = 90% (matching what was reported to the organiser) and three unseen objects at 8/12 = 67% combined.
The cheapest gain is not a model change: three attempts with a return to home between them takes what the jury sees from 67% to 96.4% on an unseen object, and from 90% to effectively certain on the trained cup, because the failures are independent.
Cup discrimination is feasible only outside the control loop — inside it, 1623 ms overruns the 337 ms budget nearly fivefold.
Includes a four-day timeline with dependencies, actions ranked by gain ÷ cost, and a reminder that the pour sequence is formally out of scope for this Demo Day.
Demo Day: prizes, judging, schedule and roles →
Both source documents carried the same open item — the full list of prize categories was still awaiting the organiser's reply. That is now closed: exactly two categories, the top three (€7,000 pool) and the Marketing Award (hardware, under €1,000 in value, not €1,000 in cash). There are no others.
Two things score without being prize categories: potential-customer feedback (bonus points) and the Teleop Knife Fight (experimental side event).
Judging weights four dimensions roughly equally — demo quality, technical substance, business idea, visible effort — so optimising one of them is the wrong strategy.
Also carries the day schedule, the T-2 and T-1 plans, who does what between the one member on site and the remote team, what the organisers will and will not do, the evidence rules that forbid unsupported quantitative claims, and the left shoulder-lift risk including the 09-09 finding that it stalls at 40 °C and is therefore load-dependent rather than thermal.
相机选型:决定能不能用的是接口协议,不是尺寸也不是价格 →
目标:国内手上有一台能本地跑代码的深度相机,不用每次远程连芬兰。
决定性约束是接口协议:现有深度不走 Orbbec SDK,是 orbbec_depth_camera.py → v4l2_depth.DepthCamera 裸 V4L2 读 Z16, 所以新相机必须是标准 UVC 设备。
这一条否掉了 Astra Mini 全系(84.9×20×19.92 尺寸完全合适,但走 OpenNI 私有协议); 也否掉了唯一查到确切二手价的乐视 LeTMC-520(≈90–100 元)—— 它 160×30×40 比现有的还大,深度也走 OpenNI。
首选 DaBai:59.6×17.4×11.1,约 1/6 体积,Linux 下 UVC 后端可切 V4L2。
顺带确认悬案:GOAL-head.md 记「相机型号未决」并推断「不是 Gemini 335」—— 机器上 USB 描述符 2bc5:0800 证明就是 Gemini 335,该推断作废。
闲鱼实际价格标注为「无证据」:搜索工具只覆盖美区,没有编造数字。
杯子碰到桌面了吗:堵转检测代替写死的高度 →
队友提的:「电机在往下推但角度不变,显然是撞到桌子了」。信号确实存在且可复现 —— 两个完全不同的姿态下,Load 爬升曲线 36/60/84/104/128 几乎重合。
但第一版判据在真机上失败了:手臂是走走停停地下降的,「连续 4 帧速度为零」被反复清零, 第 13 步才判出、多压 3.0°。
根本原因:40 帧统计显示自由运动时 67% 的帧速度也是 0(受阻时 62%)—— 速度这个量本身就没有判别力。
改成窗口内跟随率 < 35% 且 |Load| ≥ 40 后:第 3 步判出,多压 1.05°。
顺带发现 Present_Load 的符号指示受力方向(抬升 24/24 为负,下压 15/16 为正)。
Left arm calibration · field guide →
给站在机器人旁边的人看的英文图解指南,约 10 分钟。
左臂零点偏了:今天每一次脚本动作都在 shoulder_lift 差 3–5° 停下,而其余关节全部落在 0.6° 内—— 舵机报告已到 Min_Position_Limit,却离目标还有 4.39°。行程 span 2426 是对的,整个窗口偏移了。
图为主:行程对比条、六个关节示意(标出坏的那个)、mid-travel 示意。
红框标了两个会毁掉标定的操作:按 ENTER 而不是 c (静默写回旧文件、20 秒退出); 不在中位起手(编码器绕圈 → 0–4095 假量程 → 手臂被驱入自身限位并过热)。
3D 设计规范:五条最贵的教训,写成下次设计可以直接当输入的文档 →
把 V13 头部这一路真实踩过的坑固化成规范,每条带证据和行号 —— 不是通用 3D 打印常识。
第一原则:实测几何 > 源码常量,冲突时永远以导出的网格为准。这条在本项目已被证实:一条保证「走线口 ≥20×10」的 assert 通过了,而布尔实测那块区域只有 0.024 cm³(本该 9.048)。
五条教训:① assert 只管常量不管几何;② 连通性 ≠ 完整性(背板整个消失还能通过连通性检查,因为剩下的环是完美连通的);③ 零厚度面接触 = 悬空碎片(托架凸耳只在一个面相接,导出是 2 个连通体,渲染图看不出来);④ union 里的实心体会填平之前挖好的开口;⑤ rotate 方向要算不要猜(注释写「屏幕下方」的口实际跑到了眼睛上方)。
还有:开口不能骑在分缝上(两种相位实测 3/6 对 4/6)、改一个 module 的连锁范围(体积没变才算没影响)、全部实测的配合公差表、每件七项验收清单、材质与收缩、紧固件(热熔螺母必须 OD4.2 不是 4.6)、相机腔约束与三款相机判定、七步改动流程、以及每条结论必须标的三档证据等级。
V13 外皮肤四块:能拧上去的盖板、螺丝清单,以及为什么是 18 颗而不是 24 颗 →
四块 90° 盖板,装在骨架本来就预留的 24 个 M3 底孔上。STL / 工程图 / 三视图 / 爆炸图 / 装配顺序齐全,每个尺寸和螺丝数都是从 STL 实测的。
那 24 个孔已实测确认全部存在(孔壁半径 1.250 mm),但只有 18 个能用 —— 6 个落在眼睛或耳罩开口内,皮肤那里根本没有料。这是几何必然不是缺陷,每块分别 4/4/6/4。
分缝相位是被实测改掉的:第一版放 0/90/180/270(想错开骨架缝更好看),但眼睛在 90°、耳罩在 0°/180°,三个大开口全骑在缝上,两块只剩 3/6;改成 45° 让每个开口落在一块的正中间。
顺带回答了销孔配合:直接从四块 STL 量出销 Ø3.400/Ø4.000、孔 Ø4.350/Ø4.850,单边 0.425~0.475,是要求的 0.2 的两倍多 —— 那是操作者 2026-08-24 为「销插不进」做的不对称修法,四块全重打后已无必要。
含可直接照抄的淘宝清单,以及两个最容易买错的点:热熔螺母必须 外径 4.2(常见的 4.6 塞不进),皮肤螺丝不能超过 8mm(底孔只有 4.5 深,会顶穿)。
V13 骨架 frame:图纸、六视图,以及那个「源码有、文件里没有」的眼睛走线口 →
frame.stl 可下载 + 工程图 / 六视图 / 轴测 / 四分块装配流程 —— 每个尺寸都从 STL 实测,不是读 .scad。
这个区别抓出了问题:源码里那条「走线口 ≥ 20×10」的 assert 是通过的,可导出的实体里走线口、显示窗、屏幕沉槽、排线槽、两个 Ø8 穿线孔一个都没有 —— 眼窝背板中央整块 Ø48 是空气。
两条独立证据:四个平面的射线投射占据图中心全空;从源码重算的布尔给出残留 2.427 cm³ 对纯外环 2.403 —— 本该装下全部开口的 9.048 cm³ 中央区只有 0.024。
根因是两个错误叠加:通光孔从背板近端面 开挖(注释认错了 y=17 是哪一面),以及一根 Ø60 实心镜筒在开口被挖之前就 union 上去填平了它们。
显然的一行改法实测无效(9.046 ≈ 实心 9.048,从「没有板」变成「没有孔的板」);两个一起改才对,布尔验证 5.798 cm³。刻意没有落到仓库:眼睛还要不要屏幕是设计决定。
附带:旧「V13 定稿」页的体积列复现不出来(frame 201.67 对 245.73,quarter2 52.28 对 88.98,而 cam_frame 精确复现 53.32);check_parts.py 放行了这个件,因为圆环是完美连通的 —— 连通 ≠ 完整。
抓夹触觉:用舵机电流判断到底抓着没有 →
不加传感器、不改模型、不重训 —— STS3215 的控制表里本来就有 Present_Current(地址 69)。
夹爪合在杯子上走不到目标位、持续加力,电流上去;合在空气里一路走到底,电流很低。物理上是堵转电流,不是压力传感。
只在合爪那一拍和0.4 秒后各读一次 —— 30 Hz 回路里每拍加读会给这条 17 颗菊花链加三分之一流量,而它 2026-08-23 因一次丢包整场作废过。
刻意不下判定:阈值必须从真实成功/失败样本统计,不能拍脑袋。现在只记测量值。
自测(假舵机)抓到一个真 bug:合爪落在试验最后 0.4 秒内时稳定电流永远读不到,而抓握常常就在末尾 —— 已改为收尾补读并标记。九个用例全过,默认开启。
右臂抓取:16 次全败,问题出在哪 →
四个 checkpoint、16 次实机,0 成功(最后 8 次 95%CI 0–36.9%)。
操作者报的四个现象三个是错觉:左右转 1.12×、张开时机 1.01×、伸出 1.33×,都不比示范少。 真正的毛病是闭爪发生在伸出行程的 52%,而示范是 99.8%(p10~p90 98.2–100%,方差近乎为零)—— 在轨迹一半处观察,当然显得"没转到、没伸到"。
第二个独立缺陷:横向增益只有 0.63,走完也不够;而同一模型在接近段离线斜率是 1.02, 起手位是 −0.03 —— 真机每次都从起手位开始。
另附七条被证伪的猜测(安全层、爪面朝向、相机角度、两版闸门、缩短视野、固定补偿)、 一个已修的真 bug(state 被放大 1e8 倍,0.1° → 64°),以及当天在测量上翻的六次车。
实机试验2026-09-08
左臂重训手册:三个变量,不是一个 →
照抄右臂 state dropout 流程,只写差异 。填好了数据集 id 和任务句,并纠正早先草稿的三处:
①「唯一变量是数据集」不成立 —— 图像增强左臂关着、右臂开着,而这一条正落在光照上; ②「斜率 ≥0.3 硬门禁」撤销(它建立在只取动作块第一步、只在起手位测的指标上); ③「会看图 +0.21 / 不看图 +0.004,差 50 倍」作废 —— 那个 +0.006 的左臂模型, 换成整条计划 + 接近段测法实际是 +0.949(r=0.995),两批光照都一样。
state dropout 仍然该做:左臂照抄关节角的误差中位 0.53°、逐维相关 0.946–0.997,捷径和右臂一样强。
另补 9 个恒定维的 1e8 放大雷、右臂踩过的坑(torchcodec 静默降级等),以及这一轮真正该测什么。
模型训练2026-09-08
English · Recording guide: what to record next →
给队友的英文录制指南,带台面俯视位置图和覆盖条形图。
两个实测发现决定了要录什么:① 杯位覆盖差 16 倍(最密 16 集、最疏 1 集)—— 你标的 hard zone 其实是几乎没录过,不是本身难;② 40 集全是同一个节拍, 「跑到全程 63.2% 闭爪」的标准差只有 4.6%,模型数拍子就能压低 loss、完全不用看杯子。
要求:补 25–30 集填满稀疏档位、主动打散节奏(验收指标:闭合点标准差从 4.6% 升到 ≥15%)、 补 5–8 集「先偏再修正」,以及每集记录杯子真实位置。
数据采集2026-09-08
八个模型一把尺子:横向那列全是噪声,纵向那列不是 →
八个 checkpoint × 四种 state 喂法。pan 斜率全部落在 ±0.05 噪声带里,无一可分辨于零 —— 跨两个数据集、两条臂、6k 到 20k 步数、带不带 dropout,全都一样。
噪声底不是假设出来的:同一个 checkpoint 同一种喂法三次跑出 +0.086 / +0.041 / −0.006,后两次是加了种子之后跑的 —— 那个种子并没有控制住流匹配的采样,配对比较没成立,所以小于这个带宽的差异不能读。
elbow 那一列可以读:0826 的四个模型 0.76–0.86,0820 的三个 0.19–0.38,三倍差距、跨四个模型稳定。这是今天唯一可复现的跨模型差异。state dropout 也没有伤到它(0.72–0.87)。
本页同时撤回自己早先定的门禁:离线斜率被证明预测不了真机 —— 它判定"横向看不见"的那个模型,实机 trace 里手臂真的够到了 −33°,操作者在一个训练集里没有的左侧杯位上判断"很准"。
真正能读的是闭爪时机:四次试跑、两个模型,爪子全部比手臂到位早 19–39 秒。失败模式从"感知"挪到了"时序"。
另附一条单独立项:左臂那个 checkpoint 杯位跨 58.7° 而 pan 只动 0.98°,elbow −0.004,比右臂差一个数量级。
模型训练2026-09-08
怎么给 SmolVLA 打这个补丁 →
逐行讲清 state dropout:整个本体状态在 SmolVLA 里只占一个 token(Linear(32→960),且图像/语言不回看它),所以让模型「看不见关节」不用碰视觉那一路、不改结构、不动 optimizer。
补丁包在 prepare_state —— 训练(:296)和推理(:209)唯一共用的那个函数,所以第一句就查 self.training;漏了它就是让真机闭着眼开车,不报任何错。
置零发生在归一化之后(喂的是训练均值,不是「关节角=0」这个错误姿态),而 state_proj(0)=bias —— 所有被遮的样本共享同一个模型自己学出来的常量 token,等于白捡一个 state-unknown 标记。
逐样本而非整批:整批同置零,模型能推出「这批有没有 state」从而分情况处理,捷径一点没断。
还有:为什么永久下限才是承重墙(state↔action 相关 0.99,完全放开几千步就把捷径学回来,而 loss 曲线全程漂亮)、猴补丁怎么注入而不改 lerobot、梯度累积和步数读不到这两个坑,以及三步确认补丁真的挂上了 —— 因为没挂上的表现和挂上了一模一样。
模型训练2026-09-08
重训右臂:捷径从来没被断开过 →
state6 实机 0/2,拆开量出两件互相独立的事。
① 推理端 bug(已修):数据集 16487 帧的左臂全是 0,于是 std=0,而 lerobot 除的是 std+1e-8 且没有任何保护 —— 真机上左臂是连着的,读数被放大 1e8 倍。同图同右臂状态下,左臂偏 0.1° 右臂输出变 64° ,且 0.1°/5°/几十度结果几乎一样(token 饱和)。修完同 checkpoint 重跑:夹爪抖动两次都对半砍(10→5、18→10),CLIPPED 10→3,闭爪时机从 6 秒推到 19 秒 —— 但仍 0/2。
② 训练问题(必须重训):控制变量后杯子移 45.5°,它的 pan 只动 2.5~4.4°,斜率 0.04(示范应接近 1.0)。靠近时方向感变好(r 从 -0.31 到 +0.61)但幅度不变。四种 state 喂法都救不回来 —— 这同时证伪了 state6 的截断技巧:模型仍在读右臂 state,state 摆动比图像大 1.8 倍且与杯位不相关。
页面是六步重训手册:逐样本 state dropout、为什么永久下限优于硬两阶段,以及斜率 < 0.3 不许上机器人这条硬门禁。
模型训练2026-09-08
给主办方的通报:舵机过热,两个不紧急的请求 →
可直接复制的英文原文,加上它为什么这么排。顺序是刻意的:先说防护起作用了( 会话是我们主动停的,不是烧到掉力矩手臂砸下去),再说根因不是硬件(同姿势 37°C/224 对 36°C/216,差 1°C),最后才提请求。
消息里原样写了我们自己的误判 —— 我判过这颗舵机劣化该换,被梯度扫描推翻(凉透后峰值负载 291 > 223/220,全程零失败)。把误判写进去不是坦白癖:主办方拿到的每个数字都会因此更可信。
两个请求:① 请人断电用手对比左右肩抬的机械阻力 —— 这是唯一远程做不了的检查,同一位置已经换过一颗;② 问一句备用舵机去哪找 —— 不是现在缺件,是 Demo Day 那几天没人在现场。
现场操作2026-09-08
servo_load_probe.py:判一颗舵机是真坏了,还是只是热 →
判据不是「它热不热」,而是 同一条总线上负载更高的邻居有没有事 —— 同总线、同供电、同线缆,能把舵机问题和总线/供电/相机占用分开。热态时它负载 184–218 就失败 15/23/33 次,两个对照负载 215–224 零失败,这一步是对的。
错的是下一步:从三个点定性,默认失败率单调、且已越过能力边界 —— 两个假设都没验证过。--sweep 扫完整条曲线,凉透后七档全零失败,峰值负载 291 反而高于对照的 223/220。三个点和七个点给出的是相反的结论,不是置信度不同。
含参数表、安全边界(连续 3 次失败即中止卸力矩),以及怎么把这张表当基线用。另记了一条:--temp-stop 读不到温度时会拒绝运动 —— 此前一个写错的电机名让这道保护整场没生效,写了但没生效的保护比没写更危险。
软件2026-09-08
遥操作三个 bug:一个不是 bug,一个差点被我改出新 bug →
「每个键都是往上」是准确描述,而且有物理原因。拿人录的 54 集示范当地面真值:shoulder_lift 是反的(杯口 lift=+22.9 / 举起 lift=−34.1),而且对高度不单调,折返点 z≈0.11。teleop 的 home 在折返点上方 —— 那一侧 K(收回)和 O(降低)都让大臂抬起,U(升高)让大臂放下。而 home 的 z 被"爪尖离桌 100mm"开机自检锁死,换配置躲不掉,是结构性的。示范 3434 帧的腕高全在折返线以下,人从没在这段操作过。
解法是一个键跳出去:G/H 直降工作高度 z=0.095。真机同路径实测:折返线上按 U「大臂放下」,线下按 U「大臂抬起」。
②「一进去就水平前伸」属实,而且是当晚过热的起点(旧 home 解出 lift -0.1°,力臂最长的姿势之一)。我的第一版修法会带回一个 08-16 修掉的老 bug:开机自检要求 home 处爪尖离桌 ≥100 mm,我那个姿势只有 29 mm —— 那正是当年每次启动都把杯子扫倒的原因。能动的只有前伸量。
③「不停归位」我没能复现 ,页面里直说了。加的是一道兜住整类问题的上限:到不了位就必须放弃,否则手臂被无限驱动、持续发热。放弃后指令位姿的爬升慢了 1275 倍。
五个测试全绿,全程没碰硬件(17 颗舵机仍断力矩、32–34°C)。
软件2026-09-08
★ 右臂 batch 16 —— 断 state 捷径,六步全流程 →
为什么必须是 16 不是 8:20000 × 16 ÷ 16487 = 19.4 遍,跟已有的 right-pick-b16-3cam-u20k 的 E = 19.4 完全相同 —— 两次训练除 state 外逐字一致,斜率变了就只能是 state 造成的;batch 8 会把 E 变成 9.7,对照作废。
整个实验靠少写一行:不加 --policy.input_features=null,smolvla_base 自带的 state[6] 就会盖住数据集的 17 维,而截断保留的前 6 维是左臂 —— 右臂任务里左臂全程不动,捷径就断了。面板生成的命令会自动带上这一行,所以这次不能用面板。
六步写全了:推数据集 → 租什么卡 / 装什么包 → 验 torchcodec(AV1 退回 pyav 会静默变慢、白烧租金)→ 40 步基准 → 训练 → VERIFY→UPLOAD→VERIFY→STOP → 拉回本机测斜率。另附一张表列出这条命令里故意没有的四个参数各自为什么不能加。以前那句「batch 16 在 4090 上实测约 4.6 GB」已标注为从没实测过。
E=19.4 单变量对照千万别加 input_features=null租卡+装依赖torchcodec 先验40 步基准显存未实测
★ 抓不起来的 15 条假设:1 条成立、11 条已排除、4 条未排除 →
一晚上 6 个模型 15 次试跑、0 次抓起。成立的那条是 state 泄漏:state ↔ action 相关性 0.99,把当前关节角照抄成下一个动作误差只有 0.9° —— 能这样蒙混过去的模型永远不需要学会看图。
决定性证据是四个模型的 2×2 单变量对照:数据重复度 E 从 1.64 到 93.5(差 57 倍)斜率纹丝不动;而 state 里含不含正在动的那条臂,斜率差 50 倍(+0.21 对 +0.005)。
11 条是用实验排掉的,不是靠论证,其中 6 条是我自己的错误归因,每一条都连着「怎么被推翻的」一起记着:内存压力、checkpoint 步数、rename_map、decay_steps=30000、夹爪超程 70.5%、以及 E 本身。剩下 4 条明写着还没排除:示范阶段性、最密集杯位从没测过、桌上那块训练集里没有的透明塑料膜、数据量不够。
state 泄漏 = 根因相关性 0.99E 差 57 倍斜率不变6 条是我自己判错的4 条仍未排除
右臂数据集视角对比 —— sep2 整批不可用 →
四张头相机画面叠在一起直接比:0820 / 0826 / sep2-trim / 当前实机。前两个跟实机一致,sep2 明显不是同一个视角。
这批当初是在没核视角的情况下被推荐去训练的 —— 只看了集数和任务臂。操作者一眼就看出来了,七个 sep2 数据集现已全部标记不可用。没有模型用过它们,所以下游没被污染,但教训是: 选数据集的第一步是拿实机画面核视角,不是数集数。
sep2 七个全废0820 / 0826 可用先核视角再看集数
左臂重训 b16/b64 对照 已被推翻 →
结论已推翻方向写反了左臂用不了截断方案
★ 舵机烧到 61°C,我判它坏了,梯度测试推翻了我 →
一次无人看管的远程遥操作把左臂开到伸展姿势后一直撑着 —— 那次会话 6889 拍里 6821 拍(99%)是 holding position,承重的 shoulder_lift 升到 61°C,温度守卫在 60°C 限值处主动停机(抢在舵机自己卸力矩、手臂掉下去之前)。同姿势对照排除了硬件差异:都停在 home 时 37°C/load224 对 36°C/load216,差 1°C。
事后半小时它确实不正常:驱动 2.6° 产生 15/23/33 次总线失败,而同总线负载更高的邻居零失败。我据此判定「劣化、该换」,连给主办方要备件的话都写好了 —— 而那个「阈值 150」是在两个点之间插出来的。再放一小时、力矩全 off 之后跑梯度扫描:每一档都零失败,ID2 峰值负载 291 反而高于两个健康对照(223/220),包括之前失败三次的那个幅度。外壳凉不代表绕组凉。
同时记录了当晚修好的东西:空闲自动停放(3 分钟无操作→缩回 home、保留夹爪状态、不卸力矩)、温度守卫顺手记负载和电压(总线流量零增加)、以及两个 teleop bug——其中一个是按左臂的键改右臂的目标位姿再发给左臂。
61°C 停机99% 在死撑梯度推翻误判291 > 223/220空闲自动停放同姿势差 1°C
★ 左臂 sep3 抓取位点图 —— 顺带发现这份集其实是两批光照 →
09-08 追加:改用整条动作块分阶段测量后,这个模型其实瞄得很准(接近段斜率 0.95–0.99,r≥0.995,两批光照都一样)—— 本页记录了当天先发布错误结论、再自我修正的全过程。另查出训练时图像增强是关着的,以及 9 个恒定维的 1e8 放大雷。
本来只是上机前的例行体检:54 集闭爪前一瞬拼成一张接触表,看构图散不散。表是干净的(全部自动判为左臂、闭爪时刻中位 131/246 帧、没有一集落在第 0 帧)。但把每集第 0 帧的颜色量出来之后 —— 这份被当作一份的数据,是两批不同光照:ep0–27 绿红比中位 1.28,ep28–53 0.98,ep27→ep28 一步掉 0.29,是台阶不是渐变。于是之前记的「这份集是 1.21」是双峰的平均数,两半都不长这样;而 09-06 实测现场 1.58 比偏绿那半还绿 —— 上机那一刻两批都不匹配。页里明说这不构成「0/6 是光照造成的」,那要做对照实验。
54/54 判臂正确28 绿 / 26 中性ep27→28 掉 0.291.21 是平均数现场 1.58 两批都不像
★ 给主办方的最终 check-up 回复 —— 准备度 6/10,最大阻塞是「现场没有我们的人」 →
这次和前三次都不同:全员不在现场 ,机器人由主办方搬过去,链路是实测的(Tailscale 直连 RTT 326 ms)。准备度给 6 并把两半都摊开:遥操作、安全层(6/6 拦截、误杀 0.021%)、数据闭环、远程链路是硬的;自主抓取 0/6、合计 6/83、8/10 未达成 。最大阻塞写的不是成功率而是现场没人 —— 遥操作能兜底,但没人通电就是零。上台方案 live 为主,把观众随手挪杯子那一段(操作者在 7000 公里外,不可能知道杯子在哪)放在前面,自主尝试当彩蛋放最后。液体砍掉,理由写明。六项请求以现场协助人员手放物理急停为首 —— 依据是 08-16 那次手臂打到人,以及我们自己查出并写在这里的断网失效缺口。附可直接粘贴的英文版。
Robomates准备度 6/10全员远程阻塞=现场没人不上液体要 9–10 分钟
中国遥操作 VR 与杯子倾倒 —— 两个决定,以及被否掉的方案 →
两件事共用一个约束:RTT 326 ms,闭环 400–450 ms。支点是:延迟毁的是闭环伺服,不毁监督式指令 —— 转头、挪底盘、旋转杯身、触发策略都够用,抓取和倒液不够。结论是走键盘不走 VR,理由在代码里:XLeVR 同一个服务器已经有键盘控制(interface.js:352),普通浏览器经 Tailscale 就能控双臂,不需要头显、不需要 VPN、不需要 Meta 账号;而且离散增量指令天然就是 move-and-wait,VR 的连续跟踪反而会过冲。头显是租借的,侧载 Tailscale 要开发者模式 → 走 cloudflared 隧道,VPN 放路由器不放头显(Android 只允许一个 VpnService)。五个串联失败点,给 2 小时时限。液体:09-13 不上;真要上先做抓取套环 (外径 70 mm、带下沿凸缘,把摩擦抓变成形状抓)和盖子,万向环和重力供液放到 Demo Day 之后,永远不做泵。
键盘 > VR闭环 400–450ms租借头显走隧道VR 限时 2 小时不上液体套环 70mm
★ 今晚训左臂 —— 为什么是 sep3-clean,命令,跑测前对四件事 →
目标是抓桌面正中的米色纸杯,而现役 0826 右臂模型一集都没覆盖过中位(最近的差 8.6 cm)。0903 左臂那批 54 集里有 23 集在中位 ±5cm,头 tilt 50.1° 就是现在的标准预置位,开头跳变本来就干净(2.9°、第 3 帧稳)—— 今晚不用做任何数据处理。命令和现役模型同一套超参,只换数据集,能直接对比。跑测前必须对上的四件事:语言指令、头部 50°、左臂自动归位(真机还没验过)、光照(今晚实时 G/R 1.58,比任何训练数据都绿)。
中位 23/54不用处理数据同超参可比今晚 G/R 1.58
「SmolVLA 复现不出来」和「微调真机效果好」都对 —— 怎么做到后者 →
两句说的不是一件事。拿预训练模型直接上自己的机器就是分布外,复现不出来是常态(lerobot #2915 / #1239)。「效果好」的人共同点是一张具体清单:~50 集一个任务几个固定位置各 10 集、相机键/状态/任务句训练推理一致、用自己数据的 stats、一次只改一个变量、数据里有纠错、推理跟得上 30 Hz。对照本机实测,这张清单我们每一条都踩过(任务句、speed 0.3、起点分布外、视角差 12°、位置单簇、success-only、2.4 Hz),所以 0/8 还不能归因给模型。五个实验按「能证伪什么」排序。
两句都对清单有来源每条都踩过先干净复跑ACT 对照
★ 09-06 改动验收单 —— 归位 · 跑测面板 · 杯位分布 →
今天三块改动一页说清:改了什么 · 我已经用什么证据验过 · 你按哪几步验收。归位第一版「每拍从实测位置 +0.75°」在负重手臂上 一动没动 ,改成起点读死、按墙钟插值,假机器人自测 8/8、真机 68.4° 走 4.7 s 偏差 2.29°。跑测面板的真根因是信标抓到的:await 之后代号一变就丢掉新鲜数据,模块每 3 秒换一次代号,经 Tailscale 的延迟下没有一跳活到渲染那行;现在新鲜数据一定画 + 心跳看门狗 + 渲染后断言 + 底部条独立驱动 + 服务端 409 闸(真实空跑 20/20)。杯位分布并进总表每行,按真正在动的手臂算(左臂那批原来缩成一个点),加了肩轴、伸直骨架和触及弧。十步验收,唯一验不了的(你浏览器里按钮跟不跟进程)单独标出。
归位真机到位409 闸 20/20根因=代号竞态杯位并进总表十步验收
★ 只用 IK 抓放杯子(给 Ville · 英文默认可切中文) →
写给做深度这条线的 Ville。从相机像素到夹爪闭合的完整链路,中间不放任何策略,八步里每一步都点名实现它的文件,或直说它还不存在。六步已有并验证过,缺的两步是几何不是代码量。内参那条有个必须先读的坑:头部 彩色相机 09-04 标好了(fx 459.59,重投影 0.335 px),但 Gemini 335 的深度和彩色是两个不同传感器、视场也不同,那组数不能 填进深度链路——代码里现在还是假设出来的 320,所以 Z 准、X/Y 只是近似。第二个缺口是横向求解:运动学模块只解二自由度平面(前伸+高度 → lift+elbow),整个仓库没有一处 atan2,目前没有任何代码把横向偏移换算成 pan 角。也记了为什么不能直接 import 上游运动学——它的 FK 和 IK 互相不是逆,一个位姿过一遍最远偏 196 mm。检测那一步直接给数不给结论:OWLv2 在现役模型训练用的那批画面上 12/12、9 月那批 9/12,36 帧零假阳性;1623 ms 可以接受,因为这条路是动之前看一眼而不是每帧都看——每帧跑会把策略推理之后剩下的 337 ms 超近 5 倍,手臂只能等着,动作断断续续。末尾一节讨论把最后抓取交回策略的那个变体:它只能买训练包络内的准确度,买不到新位置。
彩色内参已完成深度内参没做手眼没量没有 atan2抓取序列待写检测 12/12 零假阳
★ 深度、物体识别与 SmolVLA:各买什么(英文默认可切中文) →
把两个混在一起的问题拆开答。深度数据现在不用采,也不进 SmolVLA 训练——三条路线各自的答案列成一张表。B1 用深度但只在策略外面用:开跑前读一次、反投影出杯子的 3D 点、IK 摆到预抓取位再交棒,赌的是 SmolVLA 从中段接得上;B0 完全不碰深度,是纯 RGB 的;只有 B2 才把深度喂进训练,而 B2 我们不做。两条路各自的办法逐步写开,标了哪些实测哪些没测。其中一条标成推断:B1 买的是换位置,可 IK 摆到新位置就会把 shoulder_pan 推到实测 35.1° 覆盖之外,交棒那一刻的状态正好落在它要泛化的那一维上。操作者据此判定:「深度定位 + SmolVLA 收尾」买不到位置泛化——交棒之后跑的还是 SmolVLA。B1 现在真正的用途改成完全不用 SmolVLA 的纯几何抓取,当兜底 demo:位置泛化免费,但精度全压在标定上。检测那一关按数据集拆开重算过:OWLv2 @0.30 精度 100%,常被引用的「41.7% 检出率」是三个数据集混算的,在现役模型自己的数据集上是 12/12 ,拉低它的是换夹爪之前那份本就不该混进来的旧数据;1623 ms 对 B1 也不碍事,因为开跑前只检一次。B0 那边则已经定了用 FT-DINOSAUR(52.4 ms、7 个固定 slot、质量过了人工看图)。后半补上 B0 文档里缺的那块:原文只有 T1/T2/T3,没有判据也没有对照设计 。三条硬约束(只能测换外观、实机要 90 次才看得出 20 个点、基线必须重训)之后是三道门:零成本负对照 → 离线换外观逐帧比 → 实机 ABBA 配对 + 四级序数打分,每道门的判据事先写死。B2 按要求存档在页尾。
深度不用采不进训练B1 交棒的赌35° 冲突·推断B0 三道验收门B2 存档
★ 明天现场做什么(09-05)· 五分钟可能解释掉昨天的 0/3 →
取代 09-04 那份。内参已完成可以划掉。第 1 项五分钟:昨天试跑下发的指令串是 with the left arm,而现役模型训练数据里只有 with the right arm 一句;speed 用了 0.3,轨迹实测把策略要求的下降动作削掉了 11–20% ,削的正是够杯子那个关节。两处改回来重跑 10 次,昨天的 0/3 可能不用重训就解释掉。第 2 项在更宽的杯位补录示范——现有 202 集右臂横向只覆盖 35°。手眼排最后、不阻塞任何事,并更正了昨天给错的指示:棋盘要夹在爪子上,不是放桌上。
内参已完成指令串填错speed 削掉20%先跑10次手眼可不做
★ 录制到验收:还缺哪些动作、录前查什么、怎么判成没成 →
操作手册,不是概述 ——每条命令都对应仓库里真实存在的脚本。读完 35 个数据集的 tasks.parquet:只有 5 种任务串,能训练的只有「把杯子拿起来」;倾倒 / 展示 / 递出 / 放下 一个都没录过(旧的 place-it-down 还跨在 0826 换夹爪那条线的另一侧)。写明三条路线各自要不要重录:Turn 1 和物体 token 都不用,深度路线只在那个五分钟测试失败时才要。录制前检查是全篇最重要的一节——因为 09-02 录了 102 集、88 集静默丢了深度:总线颗数、两个同型号腕部相机怎么区分、深度体检、磁盘余量,每项都给命令和合格标准。数据侧验收给了七个可机器计算的指标和阈值。专门一节讲去远端 GPU 训练的差异:必须在 tmux 里(否则 Pod 照样计费而你的进程死了)、只能传一个合并好的 repo_id、绝对不要传 rename_map(否则新 checkpoint 的输入名和机器人喂的对不上)、checkpoint 存持久盘。最后是跑测时看哪几个数、四种结果各自该得出什么结论。
只录过 1 个动作两条路线不用重录录前四类检查7 个验收指标远端 GPU 差异
★ pitch 更新版:在 7.4 GB 的板子上,泛化到底要花多少钱 →
09-04 那版中文 pitch 并入今天的实测,并新增一页。硬件页换成真实数字 :策略 + 感知全部载入实测 3.2 GB,仍剩 1.8 GB(原来只写了权重大小)。新增的 「代价」页把 deck 自己那句「更聪明而不是更大」变成一张账单:77.8% 的参数是冻结的,泛化就来自那里;每次训练只动动作专家那 100 M;再加一整维泛化只要 0.94 MB 新参数。三个方向分别标价——换位置(深度+几何,+84 MB / 3.56 ms)、换杯子(物体分组,52.4 ms)、听懂点单(开放词表检测开局只跑一次,每周期 0 成本)。路线页改成两轮框架:第一轮不要新数据、不要新代码、不要标定,是演示的底线;第二轮才是两条互不依赖的泛化路线。所有数字均为 2026-09-05 本机实测。
77.8% 参数冻结加一维泛化 0.94MB3.2GB 载入剩 1.8GB三个方向分别标价两轮框架
★ 请你看图判定:FT-DINOSAUR 的 7 个 slot 有没有把杯子分出来 →
今天在本机实测过关:small@224 中位 52.4 ms(预算 337 ms),输出 7 个固定 slot × 256 维——正好是 B0 要的形状,而且 数量固定,把「检出数不定要 pad」这个约束直接消掉了。它是无监督的、 没有任何语言接口,所以 OWLv2 那种假阳性和阈值切不开的问题根本不存在。但耗时不是问题所在:项目纪律要求感知结论必须过人工看图——数字好看但锁错目标在这个项目里已经发生三次。这一页把 12 张真实头部关键帧全摆出来(原图 + argmax 分割 + 7 个 slot 掩码),外加 224 vs 518 的分辨率对照,用来检验「分不干净」到底是模型问题还是分辨率问题。附了我的初步观察并明确标注不是结论:有一帧里 slot 6 干净且单独地锁在蓝杯子上,另一帧里手臂横穿画面、杯子小而靠边,没有任何 slot 把它分出来。第 6 节给了三种判定各自对应什么下一步。
52.4ms 实测过关7 个固定 slot无假阳性问题224 vs 518 对照待你判定
★ 读懂客人需求的机器人:现在做什么、下一轮做什么、各自多少钱 →
把整个项目放回它真正的目标上——一个能读懂客人情绪和需求的机器人,抓取只是七步交互链的最后一环,而前面几环大部分已经在跑。两张可点开的交互图:完整客人交互链路 + 深度引导抓取的运行时管线。Turn 1 零成本:数据、checkpoint、安全层、试跑流程全部就位,只差跑对一次(09-04 的 0/3 是把 left arm 指令喂给右臂模型、speed 用了 0.3,轨迹实测削掉够杯子那个关节的 11–20%)。Turn 2 是两条泛化路线,逐项标了成本:深度+编码移动买「换位置」并绕开实测的 35.1° 覆盖限制;物体 token 买「换外观」且完全不用重录数据。代码盘查发现 七步里五步已经存在(IK、发关节目标、安全层、深度反投影),只缺相机→臂基座的变换——本页提出用已录的 202 集解出它,不必重做那次失败的棋盘格手眼。并回答「客人能不能直接说要高脚杯」:语义泛化必须来自开放词表检测器,不是 SmolVLA(它一共只见过两句指令)。
Turn 1 零成本七步里五步已有不用棋盘格的标定2B 不用重录语义靠检测器不靠策略
深度 · 点云 · VLA:三条路怎么选,以及那一个 bit →
从一个好奇的问题出发——用深度相机的人一般怎么训练,大部分人用 VLA 还是点云——一路追到 SmolVLA 注意力掩码里的一个数。本机实测:lerobot 内置 22 个策略,吃深度或点云的是 0 个,而 lerobot 从 2026-06-27 起数据集层面就原生支持存深度——能存,没人读,和我们此刻处境一模一样。主流基座模型(OpenVLA / π0 / GR00T N1 / SmolVLA)全是 RGB-only,这是结构性的:VLA 的力量来自 2D 预训练,那里面没有深度。点云赢在几何、算力和低数据量,但无色点云物理上分不出红杯子和蓝杯子 ,且需要我们还没有的内参外参;SmolVLA 则一个标定都不需要,而且是语言条件的——合并集里两条指令用同一个模型切换左右臂。增长最快的是「结合」那一支,独立几组人收敛到同一个结构决策:冻结预训练 2D 通路,几何走轻量旁路(PointVLA 连注入位置都挑最没用的 block)。最后从 vla_utils.py 证明:物体 token 放最后开新块,图像和语言的表征逐比特不变;写错位置就改写预训练特征。附带更正 B0 文档两处,并说明Gemini 不是我们的约束。
22 策略 0 个吃深度基座全是 RGB-only结合的做法都一样掩码那一个 bit相机不是瓶颈
B0 逻辑详解:让模型学「那个物体在哪」,而不是「第 137 号方格亮了」 →
现在唯一还开着的策略改进方向,从机制讲起。SmolVLA 的 192 个视觉 token 是按位置切的方格 ,第 137 号永远代表画面右下那块,不管那里是杯子还是桌面——所以它只能学到「某个方格的纹理 ↔ 动作」,这才是 换个杯子就不行的根本原因。B0 在方格之外再加 N 个物体 token(照抄现成的 state_proj 写一个 object_proj ,embed_prefix 里约 15 行,外加 pad/att mask 三处)。走加法不走 Oat-VLA 的替换:实测推理 1329 ms、视觉只占 13%,替换图的那点速度收益已被否掉,只剩下丢掉预训练视觉对齐的风险。页面把两种泛化拆开:换杯子不需要新数据、正是 B0 对口;换位置受实测 35.1° 横向覆盖限制,架构变不出数据里没有的东西。T1 是决定项且仍未测——检测器要塞进每个动作剩下的 337 ms,必须用 train310(lerobot 那个 torch 是 CPU-only,用错会量出假的「跑不动」)。附带讲清楚现场重跑后那两张对照表各自证伪什么。
接口已读通 15 行走加法不走替换不用重采数据T1 未测 337ms只解决换杯子
★ 标定完成后到底能做什么,不能做什么 →
头相机内参今天标定完成:fx 459.59 / fy 459.79,RMS 0.335 px,而代码里一直写死的是猜的 320。用 OWLv2 在我们自己数据上真实检出的 24 个杯子框换算,横向坐标平均改变 53.5 mm,54% 的帧误差超过整个夹爪开口——是 43.6% 的系统偏差,不是噪声。今天解锁的最大一件是迎宾段 :转头看客人只需要内参、不需要手眼,而旧算法在 200 px 处偏 8.5°,1.5 m 外就是看偏 224 mm。另外解锁掩码+深度出点云、相机系内的度量、以及此前完全没有的畸变校正。仍被挡住的是「命令手臂去视觉定位的杯子」,那要手眼。也写明 SmolVLA 是端到端的、根本不用内参,所以今天不会直接提高现有抓取成功率。
内参已完成误差 53.5mm迎宾段解锁 手眼仍缺三项可远程做
深度 + VLA:计划里引用的十篇文献 →
GOAL-DEPTH-INTEGRATION §1 引用的全部工作,按在我们计划里的作用分四组,每条附上文档原有的「对我们的含义」。Point Cloud Matters 直接推翻了「把深度伪彩成第四路相机」那条路线;Depth Helps 是最贴合我们处境的一篇(冻结 RGB 主干、每任务约 20 条轨迹,我们有 30 集);Grounded SAM 补上了缺的那一环——框提示 SAM 出掩码、掩码加深度得到物体点云,而这一步所需的内参今天刚标定完成;Oat-VLA 带着我们对它的两处更正:速度理由在我们板子上不成立,它的 59% vs 41% 重算后不显著。
10 篇全部有链接附我们的判断含两处更正
★ 概念 pitch(中文 · 对外版) →
14 页,键盘可翻,配我们自己演示视频里的真实画面。保留全部有出处的市场数字和核心论点:现有系统的 AI 在推荐层和对话层,就是不在动作层。已经在机器上跑起来的部分按能力陈述,未完成的部分收进按依赖排序的路线图,不展开风险页。
对外可用14 页真实画面数字有出处
★ 相机内参棋盘格:下载 · 100% 打印 · 量尺 · 拍摄 →
A4 一张,10×7 格 / 内角点 9×6 / 方格 25.0 mm,矢量 PDF(另附 300 dpi PNG 备用)。打印店照页面上的表说:普通纸、100% 实际大小 、不要适应页面。印完用页底的 100 mm 尺条 核对,再量 4 格把实测值报给远程;平贴硬板。之后头停在 trial 位,手持板子拍 15–20 张:中心 + 四角、近 + 远、一定要有明显倾斜。明日清单第 4 项的前置材料。
可直接下载打印A4 · 25 mm9×6 角点印完量尺贴硬板
★ 昨天那批数据怎么训:合并 + 租 GPU 一次跑通(含脚本改动清单) →
结论:能训,但不能「直接加」——lerobot 0.6.2 不支持多数据集(factory.py:128 直接 raise),必须先合并。昨天那批是左臂数据(action 0–5 维动、6–11 全 0,实测),现役模型是右臂;任务串不同,SmolVLA 靠语言分。两个合并集已做好:sameview(0826+sep3,100 集,视角与部署一致)和 all(202 集,含 9-2 那批抬头 6° 的视角)。脚本 train_smolvla_lr.sh 配方逐项抄自现役模型,只换数据、不传 rename_map(否则输入名和机器人喂的对不上)。推理端加了守卫:多任务数据集必须显式 --task。租 4090 一次约 1.3 h / $1。未测:脚本没在 4090 上真跑过;语言能否真分左右臂正是这次要答的问题。
脚本已写好左臂≠右臂不支持多数据集不传 rename_map--task 必须显式~$1/次
★ 同上 · 英文版(发给组员) →
同一份内容的英文版:数据盘点、三条会白跑的坑、pod 逐条命令、脚本参数出处、跑测时怎么指定臂、未验证清单、成本。
Englishstep-by-step pod commandsevidence levels
OWLv2 + 级联过滤简报:假阳性归零,剩下的确实只有「挑哪只杯子」 →
OWLv2 实测:同样 36 帧,目标杯从 5 个跳到 18 个;阈值 0.30 时 非杯子假阳性归零——VR 手柄和桌面圆孔根本不出框。 阈值这条路从死的变活的:OWL-ViT 时假阳性(0.213)压过目标杯(0.125),OWLv2 反过来了。 再叠上空桌背景差(跨集中位数做代用品), OWLv2@0.30 + 背景差@50% = 15 个框全是目标杯,0 错——整轮调查第一个零错误配置。 「每层记两个数」这条纪律当场抓到我一个错:我说 GDINO 摘 query「过滤过头」, 按两个数重算是杀 25 个假阳性、赔 0 个真阳性,净赚。 代价与未解:1623 ms/帧、逐帧召回 41.7% 且分母没数过、换场景完全没验。
首个零错误配置假阳性归零阈值从死变活两个数抓到我一个错3 个待你定
项目完整说明(英文)—— 包括不好看的部分 →
新人或回归的人只读这一份就够。硬件、数据、模型、已完成与未完成、已定与待定的决策、风险。 含 2026-09-04 远程四项的结果:杯子检测第四次失败(四个预训练开放词表检测器,最好 44.4%, 验收线 90%),以及那个关键诊断——目标杯每帧都在候选里,只是排第 3、4 名, 所以这是消歧问题不是识别问题,换更强的识别器解决不了。 还写了一个「证据等级」规矩起作用的实例:SmolVLA 146 ms 那个数是错的, 重测是 1329 ms,146 是 ACT 的数,模型名在交接链条中被换掉了。
英文 · 可直接转发8/83 带区间检测四次失败一处数字更正
概念 pitch(英文版)→
16 页,键盘翻页,动画流程图 + 示范视频真实抽帧。中文版的英文edition,可直接发给队友和外部。 已按 09-04 实测更正:token 缩减那条路的速度理由不成立—— 三路视觉合计只占推理耗时的 13%。
16 页 · 英文含失败风险页已按实测更正
现场角色简报(英文)—— 数据采集与硬件调试 →
给人在机器人跟前的那位。不是当日清单(那是 TOMORROW),是跨天不变的职责说明。 核心前提:其他人全是远程的,你不量的东西以后没人能量。 含五次值得不再重演的事故,和五个只有站在机器人跟前才能回答的问题。
英文五次事故复盘5 个待答问题
给 Ville 的简报(英文)—— 人脸识别与交互 →
他在台湾远程,本地跑通了人脸跟踪(录屏读数 8.4 fps · detect 107.7 ms)。 这份告诉他仓库里已经有什么(免得重造)、实测的算力预算 (SmolVLA 一次推理 1329 ms 规划 50 步,占 1667 ms 预算的 80%,余 337 ms), 以及三个问题。最要紧那个是「录屏跑在哪台机器上」—— 而更好的做法是给他 Tailscale,直接在真板子上量。
英文3 个待答问题附算力预算
远程四件事 · 执行全记录(含走错的和自己改回来的) →
不是总结,是流水账:23 步按跑的顺序排,把死路和我自己犯的错都留着——这次的信息量恰恰在那几步。 ②第一版 0/6,因为我按全局最高分挑框,整幅的「桌子」框每次都赢过杯子; ③改完 83%,看着像成了,联系表一看全钉在背景玻璃杯上; ④转折点:把全部候选打印出来,问题拆成「识别」和「消歧」; ㉔ 你看图指出四处错误后重新逐框裁开核对——我说轻了: 16 个框里 5 个是 VR 手柄,我叫「天花板通风口」的是桌面穿线孔; ⑩腕相机那个 37.5% 是我自己的过滤器的错,不是模型的; ⑭查出文档里那个 146 ms 是 ACT 的不是 SmolVLA 的,同机重测两个模型确认。 末尾 7 个需要你考虑的问题,每个带我的建议,只有 2 个会挡住下一步。
7 个问题 · 各带建议4 步是我自己的错转折点在第 4 步23 步流水账
远程四件事的结果:A 没过、B 毙了 B0、C 有更硬的答案、D 做完了 →
A 没过验收:逐框裁开放大核对后,真实命中率 「框到目标杯」5/36 = 13.9% (44.4% 只是出框率上界)。两个问题同时存在:精度不行(框到 VR 手柄、桌面圆孔)+ 消歧没做。 联系表原图在页里,可以自己复看:OWL-ViT 十帧全钉在背景那只玻璃杯上, GDINO 那个漂亮的 75% 是在钓天花板通风口。 B 查出两个被传错的数:146 ms 是 ACT 的不是 SmolVLA 的(SmolVLA 实测 1329 ms,10.3 倍); 而且「6.9 Hz vs 30 Hz」对分块策略根本不成立——一次推理规划 1667 ms 的动作,余量 +337 ms。 视觉只占 13%,Y 的上界 178 ms,B0 的速度理由当场毙掉。 C 不用权衡:OpenCV 5 删了 CascadeClassifier,Haar 那套现在跑不起来 ,留 YuNet。 安全层那处数字错误独立复核后只改了注释,钳位行为一个字没动。 D 做完,--dry 已验。
A 不进入阶段 B B0 速度理由毙掉146ms 归属更正Haar 已不可用两件事等操作者拍板
交接:下个 session 能纯远程做完的四件事 →
写成读这一份就能开工,不需要回看旧对话。四件全部离线,和现场并行。 A 最优先:在已录 RGB 上离线跑开放词表检测,回答「能不能可靠框住杯子」—— 三个手写检测器已经栽在这上面,每次数字都漂亮,看图才发现框住的是机械臂。 操作者已定顺序:先 OWL-ViT,再 Grounding DINO + SAM。 B 判 B0 生死,而且开头那步不用下载任何模型—— 用 1/2/3 路相机各计一次时,先给「视觉 token 到底占 146ms 里多少」定上界, 如果这个数本来就小,分割模型多便宜都翻不了盘。 C 是盘点不是开发(HRI 分层三周前就写好了),附带一处安全层注释的事实更正。 D 是试验数据 GOAL 只剩的最后一步。 另记环境陷阱:lerobot 环境的 torch 在这台机器上是 CPU-only,用它量耗时会得到假的「跑不动」。
A→B→C→D · 只做一件就做 AB 的第一步零下载环境陷阱已写明 深度旁路格式实测
明天要干什么 —— 现场作业清单,按依赖排序 →
写给明天到机器人跟前的人。每条都写了谁做、多久、做完长什么样。 开头先澄清:没有新面板 ,还是那个 8770,只是试跑卡多了「跑之前填的预注册」和「跑完的 k/n + 95% 区间」。 ①存 trial 头部预置位——1 分钟,但后面全部依赖它(相机在会动的头上,外参只对一个姿态有效); ②跑测模型 ,今天信息量最大的一件事:4 个 checkpoint 一次都没上过硬件, 而记录里 0/4 的那个不是失败的模型,是没测过的模型——它的 95% 上界是 60.2%; ③内参、④手眼、⑤深度-RGB 时间对齐、⑥小批原生格式重录、 ⑦录展示示范之前先量一次关节速度——步长上限是静默钳位,录完才发现被削平就得重录。
7 项现场 · 4 项远程4 个模型从没跑测过0/4 ≠ 失败四条纪律
Pitch:不是更快的出酒机,是会看着你调酒的调酒师 →
15 页概念说明,键盘翻页,带动画流程图和示范视频真实抽帧。 论点:现有系统为吞吐优化并且做到了(Makr Shakr Veloce 250 杯/小时、 Cecilia.ai 120 杯/小时 / $45,000),但它们的 AI 在推荐层,手臂仍是预编程轨迹。 我们不比速度,做那台会抬头看你的。 讲清四段服务(迎宾→制作→旋转展示→递出)、 为什么制作时视线必须锁死(19453 帧里头部两个自由度 σ 都是 0.0000 ,策略没见过头在动)、 为什么第一版是「推出」而不是「递到手上」(没有力觉)、 以及最可能失败的三种方式。 里面写了我们自己的 8/83 和它的置信区间—— 一个说自己已经成功的机器人项目,通常只是没认真数过。
15 页 · 键盘翻页真实抽帧 · 非渲染竞品数据带出处含失败风险页
GOAL:面向观众的互动 —— 展示、递出,以及「有人在场」这件事 →
第三份 GOAL。起因是旋转杯身让观众看清、朝观众推出这个调酒动作。 它看着只是「再加一个检测目标」,实际是两件重新设计:头部控制权归谁、安全层怎么理解「人」。 ①盘点发现 HRI 分层三周前就写好了——face_follow.py 的设计目标 (只跟一张主脸、死区、每帧硬上限、跟丢缓慢回中、绝不共享串口)逐条对着这个需求; ②冲突:它和策略试跑抢同一条总线,而安全层每帧覆盖头部; ③ 仲裁已定,而且是被数据逼出来的——50 集 19453 帧里头部两个自由度 σ 都是 0.0000, 策略从没见过头在动,所以操作阶段头必须不动,控制权留在策略进程内、按阶段换目标来源; ④落地前有个前置 :安全层注释断言该数据集 head_motor_2 = 99.649, 实测是 49.846 ;用它自己的公式重算,头是在标定范围内而非超出 564 counts—— 而那正是「头部跳过绝对钳位」这个决定的依据。
仲裁由测量决定 σ=0.0000安全层一处数字错误已有 HRI 分层 876 行现场待确认 1 项
会话记录:schema v2、B0 证据升级,以及三个没扛住核对的说法 →
一夜工作的如实记录,每条结论都标了证据等级(实测/未测/被挡住)。 ①试验数据 GOAL 第 1 步落地:37 个老记录收敛到一个读取口径, 手写零依赖的 Clopper-Pearson(对 scipy 校验偏差 6e-15——因为这台机器三个 python 环境里, 系统那个的 scipy 是装着但坏的),v1/v2 混读实测不崩。 ②B0 升档又被自己按住:Oat-VLA 把视觉 token 256→16 做在真正的 VLA 上, 但用刚写的 Clopper-Pearson 一算,它真机 29/49 vs 20/49 不显著(Fisher p=0.106)—— 该引的是 token 缩减,不是成功率。 ③三个被纠正的说法,其中一个是我自己的。 另记三个环境事实:lerobot 环境的 torch 在这台 Jetson 上是 CPU-only 、 HF 静态 Space 每页会吃掉一个字、根分区已用 70%。
全部标证据等级CP 对 scipy 偏差 6e-15论文数字被自己的检验按住三个说法被纠正
GOAL:深度到底怎么整合进策略 —— 业界怎么做,我们该怎么做 →
之前这个问题一直是靠猜答的,这次先查了文献。三条发现推翻了原来的推荐: ①点云通常优于 RGB 和 RGB-D(Point Cloud Matters),所以「把深度伪彩成第四路相机」是三种里最弱的——而那正是之前的设想; ②Depth Helps:冻结 RGB 主干、只加一个深度补全模块 + codebook,每任务约 20 条真机轨迹就够,推理时甚至可以只用 RGB(只掉 0.8%)—— 我们有 30 集,之前「加深度就得重训」的顾虑不成立; ③锁定杯子没人手写规则:标准管线是 Grounding DINO + SAM(MOKA、OK-Robot 都在用),掩码作用在 RGB-D 上得到物体点云。 另记录了三次失败的手写检测器——每次数字都好看,每次都被"看图"推翻。
④补记 B0:VIOLA(CoRL 2022,开源)不自己算 3D 坐标,而是把现成 RPN 给的类别无关物体候选框当结构先验喂给策略,论文成功率比当时 SOTA 高 45.8%,且专治"换杯子、挪位置就失效"。但那是他们的数,不是我们的——接进 SmolVLA 要改多少、RPN 在 Jetson 上多慢,两个都没量,所以它是候选,不是结论。
⑤更贴的一篇:Oat-VLA(做在真正的 VLA / OpenVLA 上)把视觉 token 从 256 降到 16、LIBERO 上收敛快一倍——token 大减对 Jetson 算力是加分。但它真机那 18 个点我们自己用 Clopper-Pearson 算下来不显著(29/49 vs 20/49,区间重叠,Fisher p=0.106)——同一条「报区间不报点估计」的规矩,对别人的论文也照用。
九篇论文 · 全带链接冻结主干 + 20 条轨迹三次失败的实测记录B0 候选:Oat-VLA token 256→16(未验证)
GOAL:把试验数据管理做成专业的 · 以及当天的经验条目 →
两部分。前半是试验记录改造的完整 GOAL,依据三篇评测规程论文 + 肖宇老师那篇 MRISA(Graphics Interface 2025)。写清我们已有什么(逐帧 17 维轨迹、安全事件计数,质量很好别推倒)、 缺什么(初始条件——杯子到底在哪、子目标评分、失败模式分类、关键帧、预注册、区间估计)。 含拿我们自己数据算的现实检验:0/4 次试验的真实成功率可能高达 60%,什么都没证明;1/5 的区间宽达 71 个百分点。 后半是当天沉淀的 8 条经验,头一条是关于我自己的:说结论必须标证据等级——实测 / 未测 / 跑了但被挡住。 起因是操作者的批评:没跑测的说抓不起来,跑测过的不记录原因,没跑过的说唯一可行。
四篇论文依据 · 全带链接schema v2 + 失败模式枚举证据等级纪律
2026-09-03 工作日志 —— 深度终于录上了 →
从「根分区被写到 0 字节、命令都跑不动」开始的一天。深度旁路查出四个 缺陷: 双击 Start 孤儿掉录制器(13.7 小时、22 万帧、27 GB)、fd 泄漏(34 个句柄)、 0 帧静默失败(9-02 一晚 102 集里 88 集因此丢了深度),以及真正的根因 —— USB 2.0 带宽不够:三路相机挤在嵌套 hub 上共享 480 Mbps,深度要 147 Mbps 拿不到。 换到 USB 3.0(5000 Mbps)后当晚录到 3000+ 帧、valid 86%。 同时证伪了之前「总线复位能清假死」的推断,并记下换口的连带代价(by-path 变了、19 处写死路径同时失效,现已改为按 VID:PID 动态解析)。 另外:右臂安全下限高了 8 cm,把训练示范拒掉 96.6% —— 意味着换夹爪之后所有实机「抓不到」的结论都要重新审视。 最后写清深度怎么验收、路线 A 哪些远程能做、哪些必须现场。
四个缺陷 · 全部实测根因是带宽不是软件现场/远程分工清单
实机跑的时候,深度相机和 SmolVLA 怎么配合 →
一句话:今天完全没有配合。 把真实推理循环画清楚,每个数字都有出处 —— 观测是 17 维本体状态(12 关节 + 2 头 + 3 底盘速度)加三路 RGB,深度一个字节都没有; 深度只写到数据集旁边的 depth/,训练和推理都不读它。含实测:GPU 146 ms/帧(6.9 Hz) vs CPU 2397 ms、 一次推理规划 50 步 = 1.67 秒(按 30 Hz 训练节拍,所以要 --chunk-rate)、语言指令是真的模型输入必须逐字一致。 然后对比三种接法:深度在策略外面(3D 杯位当开跑前的门 / 每次试验记录 / 失败诊断,不重训不重采,cup_locate_demo.py 已走通一半)、 深度当额外输入(不建议:SigLIP 和 ImageNet ResNet18 都是 RGB 预训练;state 17→20 维 = 换 embodiment,现有 checkpoint 全废)、 换点云策略。最后写清推荐路线的两个门槛:相机内参标定 + 手眼外参。
真实推理循环 · 全部标出处三种接法对比实测时序数字
深度相机 —— 现在怎么被调用的,深度推理该怎么接 →
把深度通路三层全串了一遍(裸 V4L2 DepthCamera → DepthRecorder → 两个调用方),每处标了文件:行号。 开篇先认错:整套旁路是白写的 —— lerobot 从 2026-06-27(PR #3644)就原生支持深度,本地 checkout 早就带着它, 而写进代码的理由「深度会被视频编码压毁」本身是错的(lerobot 存 16-bit TIFF,不走视频)。 记录 9-03 查出的三个缺陷:Start 按两次会孤儿掉录制线程(跑了 13.7 小时、22 万帧、27 GB,把根分区写满)、 open 半途失败的 fd 泄漏(34 个泄漏句柄)、USB 层假死(相机开着但一帧不给,右臂四个数据集全空),三者叠加静默地让一晚 102 集里的 88 集丢了深度。 然后对比三条接入路线 —— 程序化感知(深度→3D 坐标,不训练,cup_locate_demo.py 已走通一半)、 深度当第四路相机(不建议,SigLIP/ResNet 都是 RGB 预训练)、原生 depth 特征(录得进、策略侧没人消费)—— 并明确分开了实测与推断。
三层调用链 · 全部标行号两个缺陷 + 实测损失三条路线对比
远程访问 —— Tailscale + Termius · 手机和电脑都能连 →
手把手教朋友用 SSH 连上机器人电脑,手机和电脑两套步骤都写全。两部分:①装 Tailscale 加入私有网(每台设备做一次,iOS/安卓/Win/mac/Linux 全覆盖), ②用 Termius 这个 SSH 客户端连。含要填的字段(地址、端口 22、用户名、密钥/密码)、连之前先 ping 冒烟测试、 用 SSH 密钥代替密码的做法,以及排错表(超时=Tailscale 没开/机器不在线、拒绝连接=ufw 按网卡放行、权限拒绝=登录信息错)。 真实地址和密码不放这个公开页 —— 在私有的 xlerobot-ops Space。
手机 + 电脑分步 · 含密钥与排错凭据在 private space
★ 整条链路一张图 —— 现有盘活到哪 · 突破点押哪 →
用 mermaid 把整条调酒链画出来并上色:绿=笔记本离线现在能跑、黄=要真机才能接、红=唯一真正靠模仿训练的核心段(PICK 抓起杯子)。 为"没机器人的当下"而写——最大程度盘活手上的资产:40+50 段示范数据(3×RGB 无深度)、已训 ACT/SmolVLA 权重(2万步·0次验证)、笔记本能跑的视觉推理。 三件不用机器人的离线事:用 lerobot 审数据、跑开环离线评测(模型到底学进去没有)、在本地搭通并单测 YOLO→3D 感知链。 技术突破全在方块之间的接缝:①认杯子框→深度→3D(手眼标定)、②3D→动作走 A 还是 B、③PICK 本身(偏右/上冲=数据分布问题,不是缺深度)。 仿真:现在不做(好几周的坑,ROI 远不如离线评测)。附笔记本要加的环境(lerobot 0.6.2 + 怎么拉数据/权重)。
整条链路可视化 + 盘活现有资产已核实
★ 系统架构与分工 —— 训练/编程/仿真 · 深度相机 →
2026-08-31 的分析:把整套调酒服务任务拆成要训练(模仿)/能编程/要仿真,并钉死深度相机到底帮在哪。 讲清那个绊倒所有人的概念——感知+编程抓取靠实时感知泛化(不是背坐标),所以只抓一个刚性杯子可能根本不用模仿; 模仿只在难建模的接触/交接才划算。含:技能分解表、两个失败模式(偏右=对齐/手眼标定;猛往上=动作平滑,深度治不了)、 深度的诚实打折(大收益在点云不在第4通道;先验证便宜的 Orbbec)、抓取两条路线、非侵入深度录制 sidecar、 Ville 远程情绪→推荐→语音链、底盘 A→B(里程计+AprilTag)、头部硬件待办、完整工作量分工表。配套讨论记录见下。
训练/编程/仿真 分工 + 深度带实测证据与调研引用
★ 模仿训练用在哪 · 怎么让项目出彩 →
专答那个困惑:既然感知+编程能抓杯,为什么还要模仿训练?把 IL 定位成项目的出彩层,不是地基 —— 只留给规则写不出来的:柔顺人手交接、倒酒风格、情绪联动的表现力、学习式失败恢复、多饮品语义选择。 含"最划算出彩点"排序表(先上零数据的表现力,再上少数据的柔顺交接)、知识点补充(BC vs RL;ACT/Diffusion/SmolVLA 定位; "大/多/必要/一致"数据纪律,对上本项目 0/14 教训)、混合架构数据流(感知喂 3D 位姿给 IL 省数据)、任务→方法决策表,以及诚实的复现/推断边界。配套架构分析。
出彩层 · 决策表 · 知识点柔顺交接 / 倒酒风格 / 表现力
2026-08-31 讨论记录 —— 深度相机 / 架构 / 分工 →
当天讨论的忠实记录,与分析分开存放:深度相机没进录制流程(已确认)、要补上;当前结果(能认杯子、会伸、但不准、猛往上、夹爪偏右); 训练 vs 编程的判断;语音放爪;头部情绪→推荐模块由队友 Ville(台湾)远程负责;底盘 A→B;头部硬件(头壳已打印、speaker 与情绪屏未装)。 配套分析见上一张卡片。
忠实记录 · 口述原话→ 系统架构与分工
★ 仿真 · RL · 深度 —— 整体学习策略架构 →
由「Microduck」视频起(MuJoCo+PPO→ONNX→真机):抓杯要不要转仿真+RL?全程带来源—— A Microduck=Open Duck Mini,纯本体感知 locomotion、全程无视觉 → 大绕路; B LeRobot 自带 gym 是固定机器人基准测试,合成抓取数据只有 NVIDIA Isaac 重栈 → 边角价值; C 廉价臂成功全是真示范 IL,sim-RL 真 work 的例子(魔方)吃约 64 GPU×数月、视觉入环掉到 ~20%,真正的升级是 HIL-SERL(真机 RL,已内置)。 + 深度相机:RGB-D(D405)驱动几何 6-DoF 抓取位姿(Contact-GraspNet 类),把 PICK 做成对象中心——「杯子在哪、怎么抓」几何算出来,IL 只管最后柔顺闭合。材质图:不透明塑料/磨砂玻璃=深度友好;透明=贴 ArUco/AprilTag 标记;抓杯身不抓脚。 + 整体架构图:感知 → 几何抓取位姿(深度)→ 学习策略(IL、HIL-SERL 升级)→ 技能编排;sim-RL 在旁暂缓。
A/B/C + 深度相机 · 带来源架构:感知→几何抓取→IL→编排
深入 · 在租的 GPU 上跑 Isaac SO-101 合成增强 →
总览页「仿真·RL·深度」B 段的展开。我们既然本来就租 4090,能不能也租 GPU 把 NVIDIA Isaac SO-101 合成增强跑起来给抓杯补数据?查实: 4090 正好是对的卡(A100/H100 缺 RT core,Isaac Sim 不支持 );云上便宜且有界(Vast/RunPod 约 $0.13–1/GPU-hr);真正的税是多天搭建 + 给自己的臂/杯建仿真资产。 诚实读证据:那门课只在仿真报 50–70%(75 条仿真 demo),真机页没有成功率数字、还警告可能抓空 —— 证明管线能跑,不是能抓杯。 Cosmos 增强是 IL 的廉价「覆盖倍增器」。排序:四张牌里最后一张。含诚实管线图。
深度研讨 · 带来源真机证据薄弱 · 排最后
深入 · 深度相机抓取:材质决策 · 标定 · 管线 →
总览页「仿真·RL·深度」C 段深度卡片的展开:深度几何抓取模块对我们抓杯到底怎么运作。含 材质→方案决策树(不透明塑料/磨砂玻璃→深度直接可用;透明反光→贴 ArUco/AprilTag 标记;高脚杯→抓杯身不抓脚——失效因素是透明,不是颜色)、 手眼标定外参 T 怎么接进运行时的数据流图(相机系位姿 ×T → 臂系 → 预置 → IL 闭合)、 抓取检测选型(Contact-GraspNet ~4FPS/8GB vs 轻量 VGN·GIGA vs 质心+PCA 启发式——先用启发式在 Jetson 上打通链路)、 为什么用 D405(7–50cm),以及怎么不重训 SmolVLA 就接进 IL。附「transform 四个意思」术语澄清。
深度研讨 · 决策树+标定图塑料杯=绿灯 · 排第②
深入 · HIL-SERL:真机上的强化学习 →
总览页「仿真·RL·深度」C 段的展开,从零讲清、不甩名词。先分 IL vs RL:模仿学习照抄示范(天花板=示范质量);强化学习自己试、按奖励(成功1/失败0)改进,能超过示范。 「真机 RL」=试错在你真臂上、不在仿真(没 sim-to-real gap,但慢,所以要样本高效)。 HIL-SERL=人在回路+样本高效 RL,LeRobot 内置,约 1–2.5h 到接近 100%,靠三样:①少量示范当种子 ②奖励分类器(小图像分类器判"抓起/没抓起"当奖励)③人接管纠正(快失败时你遥操纠正、喂回训练)。 含训练循环图、论文数字(约 100% vs BC 约 50%)、在你机子上的做法。排四步里第③步。
深度研讨 · 训练循环图BC 见顶后的下一步 · 排③
走向移动 bartender · 同类系统怎么泛化怎么训练 →
我们泛化抓杯、走向移动(取→导航→按客人位置放)的思路,配 10 个真实系统怎么训练的: ACT/ALOHA(动作分块治最后 3cm)、Diffusion Policy(多峰)、Mobile ALOHA(静态+移动联合训练 +34%)、 RT-1/RT-2(数据广度与网络语义)、SayCan(LLM 排有把握的技能)、Transporter/kPAM(对象中心=几条示范就位置无关)、 TidyBot++(全向底盘+个性化放置)、HomeRobot(导航与操作分模块的基线)、SmolVLA(你这套:异步推理+示范覆盖)。 共识:拆成对象中心的可复用技能 + 独立经典导航。排序不变——先把单个 right-pick 弄可靠。
10 案例 · 带来源 · 拆技能+对象中心+经典导航
两篇小红书 · 接下来能做什么 →
两篇同做 XLeRobot 的帖子,逐条对照我们现状(有来源)。帖子一(头相机外参/舵机回差) : 头相机是策略输入、head_motor 又在 state+action 里,头位可复现性有意义 —— 但失败分析已把相机判清白、 默认头模式又是 MANUAL,所以这是便宜的一致性保险(录制时锁 WORKSPACE_LOCK),不是当前瓶颈。 帖子二(LiDAR SLAM 导航+找人) :移动那半条链路;我们终极是移动 bartender(取杯→导航→按客人位置放某侧), 所以是路线图参照,但现在别搭 SLAM,先解决 3cm 抓取。
参考 · 路线 · 锁头保险
★ 训练规格 · 当前夹爪 SmolVLA 怎么训(4090 基线)→
现在就能在 4090 上跑通的训练命令,训当前夹爪数据集 …0826-0042。 三路含 head、batch 16、学习率曲线对齐(治 A100 那次曲线没走完的病)、torchcodec 解 AV1。 附两个必须避开的坑(GPT 文档误丢 head、默认开 affine 平移会糊掉杯位)、相机怎么选、增强怎么开。 ⚠ 至今没有任何 checkpoint 实机抓起过杯子,没有「已验证配方」,batch/增强都还是待实验变量。
可直接复制命令2026-08-27 · 中英双语
★ 训练代码 · 数据集怎么训成模型 →
拿数据集训策略模型用的全部脚本,可直接下载。 train_smolvla_v2.sh (SmolVLA 正式版,带防坑守卫,防止悄悄浪费数据/学习率曲线跑不完)、 train_act.sh(ACT,针对 Jetson Orin Nano 8GB 统一内存调过参)、 以及旧版 SmolVLA 脚本、Colab 版、完整训练配方文档。 全部指向同一个数据集 Suyang99/xlerobot-cup-grasp-20260820-0230。
可直接下载ACT + SmolVLA
★ 项目状态 · 抓杯这件事现在到哪了 →
一页看完整个项目。数据(37 个可用数据集 / 133 集 / 81,307 帧,Hub 上 35 个公开)、 训练(四个已发布 checkpoint,同一份 50 集数据,本机 bs2 与 A100 bs64/bs8)、 实机(74 次记分试验成功 7 次,验收线 8/10)、今天换爪之后哪些东西作废了, 以及五条按顺序的下一步。数字全部是从 RECORDINGS.md、trials/*.json 和 HF API 读出来的。
中英双语 · 2026-08-24 生成
底盘平移脚本 · 「拿起 → 走一段 → 放下」的中间那段 →
你问过走路要不要学进模型 —— 结论是不要 :底盘一动整个场景在相机里平移, 而策略学的是「杯子偏左→手往左」的视觉伺服关系,等于往训练数据里注入噪声; 何况安全层无条件把底盘三维清零,那三维在所有已有数据里都是常数,学也学不会。 走脚本反而让两者天然隔离。含开环误差的代价(先标定 CAL_SCALE,距离别超 0.5m)、 四个安全上限、以及为什么那个 finally 是整个脚本最重要的部分。
默认干跑 · 加 --go 才动
★ 调酒技能采集 · 操作者指南 →
录数据时的主要参考页。不再把行为录成一条「拿起→移动→放下→倾倒」的长轨迹, 改成可重复调用的技能库:PICK / PLACE / POUR,左右臂分开。 含 5 个 canonical task(句子逐字锁死、面板上选不能手输)、 task → arm mode 自动映射(选错直接拒绝开录)、开录前 checklist、 杯位与动作原则、什么必须重录、以及每 10 集自动体检 (clamp >10% 自动暂停录制,本批算法而非累计值)。
照做即可5 Tasks · 每批 50 集
★ 第一次用云端 GPU 训练 · 选平台看步骤 →
给从没租过云 GPU 的人写的八步指南:推数据集 → 租 4090 → 装环境 → 训练 → 看日志 → 传回 Hub → 关机 → 拉回 Jetson 实测。顶部下拉菜单选平台,步骤随之切换。 含 Spot 抢占、tmux 挂机、显存不足降 batch、「关机 ≠ 停止计费」等坑。 修的是两个已验证缺陷:只训了 2.1 遍数据(batch=2)、 整个「右近」点位没进训练(eval_split 掐掉了 ep40-49)。
☁️ RunPod / Vast / Lambda / Colab / AutoDL
看到什么现象 → 可能是什么原因 →
跑完一批按实际看到的现象 查:抓夹偏右、偏上、抓到了滑掉、几乎不动、只在某个杯位失败。 5 个症状 / 14 条原因 ,每条带可能性、机理、怎么验、怎么修、在哪做。 已经用数据排除的会明说是哪个数字排除的。
含两条互相印证的实测证据:集数 vs 抓取深度 r = −0.89、集数 vs 组内散布 r = −0.75 —— 数据越少的杯位抓得越浅越散,这就是「偏上」的直接来源。
r = −0.89诊断顺序:从便宜到贵
拿别人训好的模型微调到我们的机器上 →
兼容性检查(动作维度 / 相机路数 / 机器人型号,三项里一项对不上就只能借配方不能借权重)、 五步操作、四条「什么才算微调成功」的判据(都不是 loss), 以及六种结果各自往哪走。
★ 含一条实测对照:官方微调配方是 batch_size=64,我们用的是 2 —— 20000 步只过了 2.06 遍数据,官方是 66 遍。
batch 差 32 倍含成功判据
刀片 L120 / 98A · 完整规格页 →
120 mm 刀片配 98A 硬度的那一版:参数映射怎么算的、check_mesh 查不出来的那几项复核、 三视图、细部、工程图、打印设置。8 张图 3 张表。 (这一页之前没有任何入口,只能靠直接输网址才能打开。)
规格页 · 8 图 3 表
★ 头部 V13 · 定稿(含内部承力链,8 件全通过) →
内部横梁 core_link 已从 v12 移植进来 —— 相机 → 云台耳板 → 后横梁 → 后盖内侧, 那些当时量过的尺寸(孔心距 44.5、禁区 36、耳板厚 6、螺纹深 4、法兰高 ≤12.5…) 现在全在模型里,并由 assert 锁死。 移植时抓到三个真问题:坐标错位 4mm(v12 的 y 原点是耳板后表面,V13 是俯仰轴, CB_REAR_Y 被直接抄了过来)、拼缝垫撞后横梁、 以及一条从来没生效过的 assert。 还有四等分爆炸图、逐点旋转模拟(−50° 间隙 6.19mm;加了承力链后抬头方向从 30.13 降到 21.42)、 8 个 STL 可下载。
可打印8 件 · 承力链五检全空
倾倒液体时怎么保住相机 →
把「液体怎么到达相机」拆成三条独立路径:直接水流、回溅、爬壁回流。 关键结论:后两条才会毁相机,而它们都不能靠加长抓夹解决。 含「挡板必然挡视线」这个真矛盾的三条出路、材料对照 (3D 打印的透明 PLA 绝对不行)、 以及现在不做以后就做不了的三件事(密封平面/不做永久密封/滴水环)。 ★ 要防的是腕部两个相机,不是头顶的 Gemini。
策略 · 含打印件清单
从现在开始做什么 · 完整行动清单 →
打印 / 测量 / 实验 / 训练四条线,14 个任务块,每一项都写了为什么做、怎么做、 什么算做完、卡在谁身上。标了「现在就能做」的都不依赖任何还没量出来的数。 含训练外包给同学的完整交接清单(本机配置不足会中途丢数据), 已锁死的参数表,立柱禁区曲线,以及明确不做的七件事。
现在就能做14 个任务块
模仿学习与 SmolVLA · 从零讲起 →
我们在用的这套方法是什么、为什么会失败、别人怎么解决的。 7 篇论文按能读得动的顺序排:DAgger(复合误差的奠基之作)、ALOHA/ACT(和我们硬件最像)、 Diffusion Policy、RT-1/RT-2、OpenVLA、π₀、SmolVLA。 每个概念都落回我们自己的问题上,附术语中英对照和社区资源。
入门 · 附论文7 篇
尖端弹性夹 · 配 100mm 刀片 →
几字形板簧套子,补上 98A 实测的「摩擦力不足」。三个刚度档 t3 / t5 / t7 直接下载。 ★ 之前发布那批是按 89mm 刀片生成的,装不上现在这副 —— 这一页是按 100mm 重做的。 含材料选择的两条独立理由(为什么是 82A 不是 98A,其中一条是98A 可能根本装不进去)、 82A 打印参数、以及五秒钟的验收判据。
可直接打印82A · 先打 t5
实机试验记录 · 时间轴 →
checkpoint 第一次上真手臂:9 批次、31 次计入、0 次成功。 但数据讲了个清楚的故事 —— 安全层拒帧率 0.0%(排除了"安全层拦着"和"策略乱输出"), 而钳位率随速度档从 47.7% 掉到 2.7%,说明低速档并非更安全的同一动作,而是被扭曲的动作。 末尾是整个 Space 全部 76 次更新的可过滤时间轴。
0/31 · 但拒帧 0.0% 全站更新时间轴
接下来干什么 · 换爪重录的完整计划 →
今晚十条发现逐条给出处理方式(七条已修、三条待做),然后是一条主线: 验张口 → 换爪 → 重标桌面 → 对齐头部 → 练手 3 集 → 4 杯位×15 集 → 体检 → 训练 → 验收。 含每一步的命令、为什么这么做、验收线、时间切分、准备清单,以及绝对不要做的七件事。
行动计划 · 含时间规划
Batch 与步数 · 两小时训练配方 →
为什么今天那个 6000 步的 A100 模型比 8-20 的老模型还差 —— 它不是训坏了,是 只走完降温曲线的 30%(停下时学习率 7.99e-05,老模型是 1.18e-05)。 含 batch 2/16/32/64 各自该配什么步数的对照表、两小时内跑完的具体命令, 以及一节「哪些是实测、哪些是估算」。
配方 · 含对照表
调优操作手册 · 完整版 →
数据怎么处理、怎么让模型学得更好、完整实验流程 A→F。 含决定性证据(集数 vs 抓取深度 r = −0.88)、示范基准数字、录制纪律、 「怎么教模型」四条原则、我做了什么与你要做什么。与仓库文档逐字同步。
手册 · 逐字完整
论文里一般怎么做 · 对照我们的情况 →
给自己一个坐标系:我们撞上的三个问题(误差复合、回归均值、数据覆盖不均)在模仿学习 文献里都有名字和标准解法。这一页摆出标准做法 vs 我们的做法的逐项对照、 我们特殊在哪(抓取容差只有 1cm、夹爪不对称)、以及术语中英对照表。
背景 · 术语 · 优先级依据
实机试验第一天 · 0/14 的失败分析 →
首批 14 次实机试验全部失败,但失败是有信息量的:排除链把速度/安全层/相机/标定/时序 全部还清白之后,操作者的两个观察(爪夹向右开合 → 轴线要向左偏;杯子越靠右越抓不到) 把诊断引向了数据本身:最右那个杯位只有 4 集,而且抓得最浅最散 —— 模型的弱点就是数据的弱点。含 50 集闭爪准星接触表、杯位覆盖体检、 「怎么教模型」四条规则、完整调优流程,以及四个新工具。
0/14 · 集数 vs 抓取深度 r = −0.88
头部 v12 打印包 · 十件齐全 →
这一轮改完后的全部 STL、三视图和打印说明。十件重新生成、逐个 check_mesh。 含每件的外形/重量/材料/摆放、螺丝与热熔螺母清单(21 颗)、九步装配顺序, 以及六项改动摘要(悬臂 +10、侧窗打通、耳罩孔修正、燕尾槽修正、耳罩减重 27%、猫耳等新增)。
十件 STL 全部最新 三视图 + 爆炸图 总重约 203 g
头部 v12 · 后延版 · 完整装配说明 →
后伸悬臂 46→56mm,后壳跟着后移。七件三视图 + 全部 STL 下载, 衔接面三种接法讲清楚(借用相机原孔 / 热熔螺母 / 长圆槽), 每颗螺丝按 1mm=6px 等比画出来,含热熔螺母规格和烫装手法。 六项干涉全空,力矩 0.245→0.320 kgf·cm(舵机余量 ~47×)。
六项干涉全空 只重打 2 件 螺丝清单 + 装配顺序
🫧 乐高化 Pop-it 手机壳 →
iPhone 13 减压壳。三层夹持 + 统一蘑菇头接口:底板是通用插座(永远不用重打), 包子是可换零件,换一套布局只重打一张面板。尺寸全部取自 Apple 官方工程图。
统一接口 · 约 65 个插座 98A 单壁 ≈ 82A 双壁
82A 刀片打印包 · 基准料回归 →
82A 料找回来了 —— 就是设计基准料,所以三个长度(89.4 / 100 / 120)全部回到基线几何, 零补偿。肋距改成 3.6:在生成体上实测 4.37mm,对上原厂红爪卡尺实测的 4.337mm。 摩擦花纹在成品 STL 上验证满铺(尖端段面片密度 7 倍于无花纹本体)。 含按 82A 调整过的切片参数和打完要做的三项测量。
肋距 4.37 对原厂 4.337 花纹满铺已实测 98A 软化档对这批料全部作废
刀片测试夹具 · 把手感变成数字 →
两个可打印件,把「捏一下感觉太软」变成 N/mm。悬臂 + 挂砝码(不是用手拉弹簧秤: 手会抖、方向不定、读数还在动)。装夹方式和真机完全一致,所以量到的就是装在机器人上的刚度。 含刚度 / 回弹 / 摩擦三套测法、选重量的判据、以及一条必读的材料警告。
两件都 check_mesh PASS TPU 打的话必须先做零点检查
怎么把抓夹设计练成手上功夫 →
起因是一个约束:这台机器人只有两个爪,加不了第三个。 这一页把项目里已经自己量出来的六条设计原理整理成册, 点出现在唯一缺的那件东西(一个几十块钱的测量装置), 列出必须真正理解的四个核心概念、值得研究的实验室与设计、书和视频, 以及一条「用这个项目本身当训练场」的路线。
六条原理都是实件量出来的 缺一个测量装置
实机试跑 · 面板操作 →
把训练好的 checkpoint 放到真手臂上跑 10 次,整个循环在手机面板上按按钮完成,不用终端 。 为什么做成面板(理由是安全不是方便)、安全状态那四个词分别意味着什么该怎么反应、 从三条自检到判定结果的一步步流程,以及做这个时抓到的两个 bug。 站在机器人旁边时打开的就是这一页。
急停仍必须在手边 OK / 钳位 / 拒帧 / 无信号
Compliant gripper rebuild (EN) →
Self-contained write-up in English for an outside reviewer. What was built and why, calipered geometry with a self-check, an unresolved URDF/measurement gap, rib parameters and the checker that had never run, the friction pattern and one CGAL trap, the Shore-A material table against hardware feedback, and the snap-on leaf spring. Two open questions at the end.
Shore A 82 / 85 / 90 / 95 / 98 compared rib check fails marginally · fix proposed
尖端几字形板簧 · 求验证 →
第三版。修正了一个理解错误:刀片是绕着杯子的圆周包过去的,杯子轴线垂直于刀片平面。 所以几字板簧的自由腿要沿杯周继续包 —— 单片补上 80°,两片合计把包覆从 57% 拉到约 100%。 末端钩的两个方向都出了 STL。
套已打印的刀片 · 不用重打 材料未定 · 摩擦花纹未加
Parametric design rules →
What may scale with blade length and what is pinned to the hardware, the one quantity that must be back-solved or the mount fit breaks, and the twelve checks to run after changing it.
verified at 89.4 / 100 / 120 mm
⚙ 参数化自动生成工具 →
输入想要的长度(或杯子直径)和打印材料,自动完成参数映射 → STL → 网格检查 → 尺寸复核 → 三视图渲染 → 工程图 → HTML 报告。材料硬度到结构参数的换算、 可打印性下限、每一项必须复核的尺寸,全部固化在代码里。
python blade_designer.py --cup 80 --material 98 全套约 2 分钟
打哪一片:长度 × 软化档 →
九个候选件全部 check_mesh PASS。柔性总账、加长的好处与代价、推荐件三视图与工程图、 以及摩擦花纹从尖锥改成平顶台地的依据(真实接触面积 ≈0 → 61%)。
推荐 120mm + A 档 · 5.4× 软 平顶台地 陆地率 61%
为什么这一版硬得弯不动 →
第一对打印件几乎无法弯折、容易打滑。把材料和结构两个嫌疑分开量:新件材料反而多 12%、 内梁更薄,几何上该更软 —— 锅在 TPU 98A(设计基准是 95A,刚度约 2.6 倍)。95A 拿不到, 附用结构调软的方案,按改动量从小到大排。
98A ≈ 2.57× stiffer than 95A 先只改切片墙数 6→2
Blade v4 parametric →
Rebuilt: the tip draws in on a parabola, the ribs reach 10 mm further down, and length is now a free parameter that keeps the mount fit intact. Drawing, renders, print settings, and STLs at 89.4 / 100 / 120 mm to download.
tip rail holds to 0.02 mm across 31 mm check jaw opening first
Measurements in →
Five caliper readings came back. Two self-checks passed, one was revised — and the result overturns what the field-test document blamed: the crossing fingers were never a hole problem. With annotated drawings of exactly which points these are.
self-check 10.017 vs 10.0 HOLE_DX: leave at 0
Replacing a part →
The standing workflow for every future component — what to measure, the confirmation gate that has to pass before any CAD is written, and how to tell a real constraint from a guess. Each stage named after the failure that justifies it.
7 stages, 1 gate head is next
Tip profile options →
What two-segment and three-segment actually look like — four profiles drawn to scale plus renders, now that the protrusion feature is measured at 10–12 mm.
D12 and E both fit 12 mm face contact or line?
The five measurements →
Six named points, five caliper readings, all in one closed state — enough to settle the hole shift, the convergence angle, and whether the mating face needs flattening at all.
waiting on all five θ predicted ≈ 10.79°
Blade v4 →
The long-jaw Fin-Ray gripper blade, rebuilt from field-test feedback. Seven rendered views off the shipping mesh, what changed from v3, and the two dimensions still waiting on a caliper.
geometry passes 2 items unmeasured generated 2026-08-21
Jaw closure →
Top view of the gripper closing, simulated from the robot's own URDF joint definition. Drag to sweep 0° to 97.4°.
kinematics from URDF blade overlay still blocked 2026-08-21
What is REAL_Gripper_Blade →
The 68 mm file the whole v4 chain is built on, that nobody remembers supplying — rendered, measured, and traced through every claim the repo makes about it.
rename proposed, not done 68 × 10 mm · no holes
Tip profile study →
Why the v4 tip protrusion is a trapezoid instead of a continuous taper, and three continuous alternatives rendered from real meshes — including the barb whose hook face sits square to the inner rail.
D: 90° hook face HOLE_DX still unmeasured 2026-08-21
Where to train →
Training and simulation need the dataset, not the robot — so they can run on anyone's GPU. How to rent one step by step, what it actually costs, and the Windows build worth buying only if renting stops making sense.
a full run costs single-digit dollars disk is the trap
Which policy is usable →
ACT vs SmolVLA on the identical dataset — why their loss numbers cannot be compared, what went wrong in training versus what was just a full disk, and how to tell next time whether a run needs redoing. Includes a plain-language glossary and both papers.
SmolVLA has the evidence ACT has none concepts + papers
Did ACT converge? →
The cup-grasp policy's training curve, and why a final loss of 0.138 is not evidence the policy learned the task. Interactive — drag across any chart to read values.
did not converge no validation trained 2026-08-20