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), 不用补录。下面第 ① 项是照做即可的完整指南。

Live · 机器上的实时页面

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

话题
排序 视图
★ 训练代码 · 数据集怎么训成模型 →
拿数据集训策略模型用的全部脚本,可直接下载。 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